DELETED r34.1/lib/Makefile.tmp Index: r34.1/lib/Makefile.tmp ================================================================== --- r34.1/lib/Makefile.tmp +++ /dev/null @@ -1,173 +0,0 @@ -# -# Makefile for REDUCE User Contributed Library (PSL Version) -# -# Author: James H. Davenport . -# -# Modified by: Anthony C. Hearn. -# -# This Makefile may be used to build fast loading versions of all the -# PSL REDUCE User Contributed Library packages, or any particular -# package. It assumes that the relevant source files are in the -# $reduce/lib directory. It is specific to PSL, and of course those -# systems (e.g. UNIX) that support a make mechanism. However, it can -# be easily used with other systems with a make facility once a -# suitable mkfasl script has been written. - -REDUCE= /tresor/dagobert/cons/reduce3.4.1/dec3100 -FASL = b -BINDIR= $(REDUCE)/fasl -SRCDIR= $(REDUCE)/lib -TSTDIR= $(REDUCE)/lib -MKFASL= $(REDUCE)/util/mkfasl - -PACKAGES= assist camal changevar cvit desir fide gnuplot laplace \ - linineq numeric physop pm reacteqn reset rlfi showrules \ - symmetry tri wu - -UNCOMPILEDPACKAGES= odeex - -TSTPACKAGES= assist camal changevar cvit desir fide laplace linineq \ - numeric physop pmrules reacteqn rlfi symmetry tri wu - -all: $(PACKAGES) - -assist: $(BINDIR)/assist.$(FASL) - -$(BINDIR)/assist.$(FASL): $(SRCDIR)/assist.red - $(MKFASL) assist lib - - -camal: $(BINDIR)/camal.$(FASL) - -$(BINDIR)/camal.$(FASL): $(SRCDIR)/camal.red - $(MKFASL) camal lib - - -changevar: $(BINDIR)/changevar.$(FASL) - -$(BINDIR)/changevar.$(FASL): $(SRCDIR)/changevar.red - $(MKFASL) changevar lib - - -cvit: $(BINDIR)/cvit.$(FASL) - -$(BINDIR)/cvit.$(FASL): $(SRCDIR)/cvit.red - $(MKFASL) cvit lib - - -desir: $(BINDIR)/desir.$(FASL) - -$(BINDIR)/desir.$(FASL): $(SRCDIR)/desir.red - $(MKFASL) desir lib - - -fide: $(BINDIR)/fide1.$(FASL) $(BINDIR)/fide.$(FASL) - -$(BINDIR)/fide1.$(FASL): $(SRCDIR)/fide1.red - $(MKFASL) fide1 lib - -$(BINDIR)/fide.$(FASL): $(SRCDIR)/fide.red - $(MKFASL) fide lib - - -gnuplot: $(BINDIR)/gnuplot.$(FASL) - -$(BINDIR)/gnuplot.$(FASL): $(SRCDIR)/gnuplot.red - $(MKFASL) gnuplot lib - - -laplace: $(BINDIR)/laplace.$(FASL) - -$(BINDIR)/laplace.$(FASL): $(SRCDIR)/laplace.red - $(MKFASL) laplace lib - - -linineq: $(BINDIR)/linineq.$(FASL) - -$(BINDIR)/linineq.$(FASL): $(SRCDIR)/linineq.red - $(MKFASL) linineq lib - - -numeric: $(BINDIR)/numeric.$(FASL) - -$(BINDIR)/numeric.$(FASL): $(SRCDIR)/numeric.red - $(MKFASL) numeric lib - - -physop: $(BINDIR)/noncom2.$(FASL) $(BINDIR)/physop.$(FASL) - -$(BINDIR)/noncom2.$(FASL): $(SRCDIR)/noncom2.red - $(MKFASL) noncom2 lib - -$(BINDIR)/physop.$(FASL): $(SRCDIR)/physop.red - $(MKFASL) physop lib - - -pm: $(BINDIR)/pm.$(FASL) $(BINDIR)/pmrules.$(FASL) -# $(BINDIR)/pmrules2.$(FASL) - -$(BINDIR)/pm.$(FASL): $(SRCDIR)/pm.red - $(MKFASL) pm lib - -$(BINDIR)/pmrules.$(FASL): $(SRCDIR)/pmrules.red - $(MKFASL) pmrules lib - -# $(BINDIR)/pmrules2.$(FASL): $(SRCDIR)/pmrules2.red -# $(MKFASL) pmrules2 lib - - -reacteqn: $(BINDIR)/reacteqn.$(FASL) - -$(BINDIR)/reacteqn.$(FASL): $(SRCDIR)/reacteqn.red - $(MKFASL) reacteqn lib - - -reset: $(BINDIR)/reset.$(FASL) - -$(BINDIR)/reset.$(FASL): $(SRCDIR)/reset.red - $(MKFASL) reset lib - - -rlfi: $(BINDIR)/rlfi.$(FASL) - -$(BINDIR)/rlfi.$(FASL): $(SRCDIR)/rlfi.red - $(MKFASL) rlfi lib - - -showrules: $(BINDIR)/showrules.$(FASL) - -$(BINDIR)/showrules.$(FASL): $(SRCDIR)/showrules.red - $(MKFASL) showrules lib - - -symmetry: $(BINDIR)/symmetry.$(FASL) - -$(BINDIR)/symmetry.$(FASL): $(SRCDIR)/symmetry.red - $(MKFASL) symmetry lib - - -tri: $(BINDIR)/tri.$(FASL) - -$(BINDIR)/tri.$(FASL): $(SRCDIR)/tri.red - $(MKFASL) tri lib - - -wu: $(BINDIR)/wu.$(FASL) - -$(BINDIR)/wu.$(FASL): $(SRCDIR)/wu.red - $(MKFASL) wu lib - -test: $(PACKAGES) - for i in $(TSTPACKAGES) ; do \ - rm -f $(REDUCE)/log/$$i.log ; \ - echo \ -'load_package '$$i';on errcont;in"'$(TSTDIR)/$$i'.tst";showtime;bye;' \ - | reduce > $(REDUCE)/log/$$i.log ; \ - done - -check: $(PACKAGES) - - for i in $(TSTPACKAGES) ; do \ - echo 'comparing '$$i'...' ; \ - diff $(REDUCE)/log/$$i.log $(TSTDIR) ; \ - done - DELETED r34.1/plot/docs/gnuplot.dvi Index: r34.1/plot/docs/gnuplot.dvi ================================================================== --- r34.1/plot/docs/gnuplot.dvi +++ /dev/null cannot compute difference between binary files DELETED r35/cslsrc/helpdata Index: r35/cslsrc/helpdata ================================================================== --- r35/cslsrc/helpdata +++ /dev/null @@ -1,11555 +0,0 @@ -\item[Contents] -Help is available on the following - -Algebra Arithmetic Booleans -Commands Declarations Functions -InputOutput Library Matrix -Operators Specfns Switches -Syntax Variables - -There are help windows for each of these topics - -To select a help page double click on the word in the help window or -use the Help Selection option on the menu. A backspace/delete will -return to this Index window. - -An alphabetical list of all topics follows - -. -# -ABS ACOS ACOSH -ACOT ACOTH ACSC -ACSCH ADJPREC ALGEBRAIC -Algebraic mode ALGINT ALGINT(Package) -ALLBRANCH ALLFAC ANTISYMMETRIC -APPEND ARBCONST ARGLENGTH -ARNUM ARRAY ASEC -ASECH ASIN ASINH -ATAN ATAN2 ATANH -AVECTOR -BALANCED_MOD BEGIN...END BERNOULLI -BESSELI BESSELJ BESSELK -BESSELY BETA BFSPACE -BINOMIAL BOUNDS BYE -CARD_NO CEILING CENTERED_MOD -CHEBYSHEV_FIT CHEBYSHEVT CHEBYSHEVU -CLEAR CLEARRULES COEFF -COEFFICIENT COEFFN COFACTOR -COLLECT COMBINEEXPT COMBINELOGS -COMMENT COMP COMPACT -Compiler COMPLEX CONJ -CONT COS COSH -COT COTH CRAMER -CREF CSC CSCH -DECOMPOSE DEFINE DEFN -DEFPOLY DEG DEMO -DEN DEPEND DET -DF DFPRINT DILOG -DISPLAY DIV DOT -E ECHO ED -EDITDEF END EPS -Equation ERF ERRCONT -EULER EULERP Euler Numbers -EVAL_MODE EVALLHSEQP EVEN -EVENP EXCALC EXP -EXPAND_CASES EXPANDLOGS EXPINT -exterior calc exterior df EZGCD -FACTOR FACTORIAL Factorization -FACTORIZE FAILHARD FIRST -FIRSTROOT FIX FIXP -FLOOR FOR FORALL -FOREACH FORT FORT_WIDTH -FORTRAN FREEOF FULLPREC -FULLROOTS -G GAMMA Gamma Function -GC GCD GEGENBAUERP -GENTRAN GosperAlg -Hankel Functions HANKEL1 HANKEL2 -HERMITEP HIGH_POW HORNER -HYPOT -I Identifier IF -IFACTOR IMPART IN -Indefinite integration INDEX INFINITY -INFIX INPUT INT -INTEGER INTERPOL INTSTR -ISOLATER -JACOBIP -KERNEL KORDER Kummer Functions -KUMMERM KUMMERU -LAGUERREP LCM LCOF -LEGENDREP LENGTH LESSSPACE -LET LHS LIMIT -LIMITEDFACTORS LINEAR LINELENGTH -LISP LIST List(operation) -LISTARGP LISTARGS LN -LOAD_PACKAGE LOG LOGB -Lommel Functions LOMMEL1 LOMMEL2 -LOW_POW LTERM -MAINVAR MASS MAT -MATCH MATEIGEN MATRIX -MAX MCD MIN -MKID MODULAR MSG -MSHELL MULTIPLICITIES -NAT NERO NEXTPRIME -NOARG NODEPEND NOLNR -NONCOM NONZERO NOSPLIT -NOSPUR NOXPND NULLSPACE -NUM NUMVAL NUMBERP -NUM_INT NUM_MIN NUM_ODESOLVE -NUM_SOLVE -ODD ODESOLVE OFF -ON ONE_OF OPERATOR -ORDER ORDP ORTHOVEC -OUT OUTPUT OVERVIEW -PART PAUSE PERIOD -PF PI POCHHAMMER -POLYGAMMA PRECEDENCE PRECISE -PRECISION PRET PRI -PRIMEP PRINT_PRECISION PROCEDURE -PROD PRODUCT PSI -QUIT -RANK RAT RATARG -RATIONAL RATIONALIZE RATPRI -REAL REDUCT REMAINDER -REMFAC REMIND REPART -REPEAT REST RESULTANT -RETRY RETURN REVERSE -REVPRI RHS RLISP88 -RLROOTNO ROOT_OF ROOT_MULTIPLICITES -ROUND ROUNDALL ROUNDBF -ROUNDED Rule_lists -SAVEAS SAVESTRUCTR SCALAR -SCIENTIFIC_NOTATION SCOPE SEC -SECH SECOND SET -SETMOD SHARE SHOWRULES -SHOWTIME SHUT SIGN -SIN SINH SOLVE -SOLVESINGULAR SPDE SPLIT_FIELD -SPUR SQRT STIRLING1 -STIRLING2 String STRUCTR -STRUVEH STRUVEL SUB -SUM SYMBOLIC SYMMETRIC -T TAN TANH -TAYLOR TAYLORAUTOCOMBINE TAYLORAUTOEXPAND -TAYLORCOMBINE TAYLORKEEPORIGINAL TAYLORORIGINAL -TAYLORPRINTORDER TAYLORPRINTTERMS TAYLORREVERT -TAYLORSERIESP TAYLORTEMPLATE TAYLORTOSTANDARD -THIRD TIME TP -TPS TRACE TRALLFAC -TRFAC TRIGFORM TRINT -TRNONLNR -VARNAME VECDIM VECTOR -WEIGHT WHEN WHERE -WHILE WHITTAKERW WRITE -WS WTLEVEL -XPND -ZETA - -\endsection -\item[Algebra] -Algebra Index - -Algebraic operators about which there is help are: - -APPEND ARBINT ARBCOMPLEX -ARGLENGTH COEFF COEFFN -CONJ DECOMPOSE DEG -DEN DF EXPAND_CASES -EXPREAD FACTORIZE HYPOT -IMPART INT INTERPOL -LCOF LENGTH LHS -LTERM MAINVAR NPRIMITIVE -NUM PART PF -REDUCT REPART RESULTANT -RHS ROOT_OF SHOWRULES -SOLVE STRUCTR SUB -WS - -\endsection -\item[Arithmetic] -Arithmetic Index - -This section considers operations defined in REDUCE that concern numbers, -or operators that can operate on numbers in addition, in most cases, to -more general expressions. - -Arithmetic operations about which there is help are: - -ABS ADJPREC CEILING -DILOG FACTORIAL FIX -FIXP FLOOR GCD -LN LOG LOGB -MAX MIN NEXTPRIME -REMAINDER ROUND SIGN -SQRT - -\endsection -\item[Booleans] -Booleans Index - -Boolean operations about which there is help are: - -EVENP FREEOF NUMBERP -ORDP PRIMEP - -\endsection -\item[Commands] -Commands Index - -Commands about which there is help are: - -BYE CONT DISPLAY -LOAD_PACKAGE PAUSE QUIT -RETRY SAVEAS SHOWTIME -WRITE - -\endsection -\item[Concepts] -Concepts Index - -There is help on the following basic concepts: - -Identifier Kernel String - -Also there is a simple editor, described by - -ED EDITDEF - -\endsection -\item[Declarations] -Declarations Index - -Declarations about which there is help are: - -ALGEBRAIC ANTISYMMETRIC ARRAY -CLEAR CLEARRULES DEFINE -DEPEND EVEN FACTOR -FORALL INFIX INTEGER -KORDER LET LINEAR -LINELENGTH LISP LISTARGP -MATCH NODEPEND NONCOM -NONZERO ODD OFF -ON OPERATOR ORDER -PRECEDENCE PRECISION PRINT_PRECISION -REAL REMFAC SCALAR -SCIENTIFIC_NOTATION SHARE SYMBOLIC -SYMMETRIC VARNAME WEIGHT -WHILE WTLEVEL - -\endsection -\item[Functions] -Functions Index - -Elementary functions about which there is help are: - -ACOS ACOSH ACOT -ACOTH ACSC ACSCH -ASEC ASECH ASIN -ASINH ATAN ATANH -ATAN2 COS COSH -COT COTH CSC -CSCH ERF EXP -EXPINT SEC SECH -SIN SINH TAN -TANH - -\endsection -\item[HighEnergy] -High Energy Physics Index - -The High-energy Physics package is historic for REDUCE, since REDUCE -originated as a program to aid in computations with Dirac expressions. -The commutation algebra of the gamma matrices is independent of their -representation, and is a natural subject for symbolic mathematics. -Dirac theory is applied to beta decay and the computation of -cross-sections and scattering. The high-energy physics operators are -available in the REDUCE main program, rather than as a module which -must be loaded. - -Arithmetic operations about which there is help are: - -DOT EPS G -INDEX MASS MSHELL -NOSPUR REMIND SPUR -VECDIM VECTOR - -\endsection -\item[InputOutput] -Input and Output Index - -Input and Output actions about which there is help are: - -IN INPUT OUT -SHUT - -\endsection -\item[Library] -Library Index - -The external modules that are included in your REDUCE system are the -first members of the REDUCE User's Library. They have been -contributed by REDUCE users from various fields for the convenience -and pleasure of the REDUCE user community. Future releases of REDUCE -will include other packages as they are developed. The packages in -the User's Library are unsupported; any questions or problems should -be directed to their authors. - -Each package comes with its own documentation, which you can find, -along with the source code, in the subdirectories lib of you REDUCE -directory (with suffix .txt, .tex and .red). The LOAD_PACKAGE command -is used to load the files you wish into your system. There will be a -short delay while the module is loaded. A module cannot be unloaded. -Once it is in your system, it stays there until you end the session. -Each package also has a test file, which you will find under its name -in the lib directory with suffix .tst. - -The following paragraphs, provided by the authors of each module, -briefly introduce packages which have not yet been described in more -detail in other sections of this document. Please refer to the -documentation for each module for detailed information on its use. -Each of them have their own switches, commands, and operators, and -some redefine special characters to aid in their notation. - -Libraries about which there is help are: - -ALGINT ARNUM AVECTOR -COMPACT EXCALC GENTRAN -NUMERIC ODESOLVE ORTHOVEC -SCOPE SPDE TPS - -\endsection -\item[Matrix] -Matrix Index - -Matrix operations about which there is help are: - -COFACTOR DET MAT -MATEIGEN MATRIX NULLSPACE -RANK TP TRACE - -\endsection -\item[Operators] -Operators Index - -Operations about which there is help are: - -LIMIT SUM PROD - -\endsection -\item[Specfns] -Special Functions - -The REDUCE Special Function Package supplies extended algebraic and -numeric support for a wide class of objects. This package is released -together with REDUCE 3.5 (October 1993) for the first time, therefore -it is far from being complete. - -The functions included in this package are in most cases (unless -otherwise stated) defined and named like in the book by Abramowitz and -Stegun: Handbook of Mathematical Functions, Dover Publications. - -The aim is to collect as much information on the special functions and -simplification capabilities as possible, i.e. algebraic -simplifications and numeric (rounded mode) code, limits of the -functions together with the definitions of the functions, which are in -most cases a power series, a (definite) integral and/or a differential -equation. - -What can be found: - A variety of Bessel functions, special polynomials, the Gamma -function, the Zeta function and integral functions. - -What is missing: - Airy functions, Mathieu functions, LerchPhi, etc.. The information -about the special functions which solve certain differential equation -is very limited. In several cases numerical approximation is -restricted to real arguments or is missing completely. - -The implementation of this package uses REDUCE rule sets to a large -extent, which guarantees a high 'readability' of the functions -definitions in the source file directory. It makes extensions to the -special functions code easy in most cases too. To look at these rules -it may be convenient to use the showrules operator e.g. - - showrules Besseli; - -Note: The special function package has to be loaded explicitly by calling - load_package specfn; - -Help is available on: - -BERNOUILLI BESSELI BESSELJ -BESSELK BESSELY BETA -CHEBYSHEVT CHEBYSHEVU EULER -EULERP GAMMA GEGENBAUERP -HANKEL1 HANKEL2 HERMITEP -JACOBIP KUMMERM KUMMERU -LAGUERREP LEGENDREP LOMMEL1 -LOMMEL2 POCHHAMMER POLYGAMMA -PSI STIRLING1 STIRLING2 -STRUVEH STRUVEL WHITTAKERW -ZETA - -\endsection -\item[Switches] -Switches Index - -Switches are set on or off using the commands ON or OFF, respectively. -The default setting of the switches described in this section is -OFF unless stated otherwise. - -Switches about which there is help are: - -ALGINT ALLBRANCH ALLFAC -BALANCED_MOD BFSPACE COMBINEEXPT -COMBINELOGS COMP COMPLEX -CREF CRAMER DEFN -DEMO DFPRINT DIV -ECHO ERRCONT EVALLHSEQP -EXP EXPANDLOGS EZGCD -FACTOR FAILHARD FORT -FULLPREC FULLROOTS GC -GCD HORNER IFACTOR -INT INTSTR LCM -LESSSPACE LIMITEDFACTORS LIST -LISTARGS MCD MODULAR -MSG MULTIPLICITIES NAT -NERO NOARG NOLNR -NOSPLIT NUMVAL OUTPUT -OVERVIEW PERIOD PRECISE -PRET PRI RAT -RATARG RATIONAL RATIONALIZE -RATPRI REVPRI RLISP88 -ROUNDALL ROUNDBF ROUNDED -SAVESTRUCTR SOLVESINGULAR TIME -TRALLFAC TRFAC TRIGFORM -TRINT TRNONLNR - -\endsection -\item[Syntax] -Syntax Index - -Syntax about which there is help are: - -BEGIN...END COMMENT CONS -END EQUATION FIRST -FOR FOREACH GOTO -IF List PROCEDURE -REPEAT REST RETURN -REVERSE RuleSet SECOND -SET THIRD WHEN - -\endsection -\item[Variables] -Variables Index - -Variables about which there is help are: - -CARD_NO E EVAL_MODE -FORT_WIDTH HIGH_POW I -INFINITY LOW_POW NIL -PI ROOT_MULTIPLICITIES T - -\endsection -\xitem[><] ->< 3-D vector and diphthong (page 356) - -\endsection -\xitem[*] -* - 3-D vector, 356 - algebraic numbers, 224 - power series, 422 - vector, 232 - -\endsection -\xitem[**] -** - power series, 422 - -\endsection -\xitem[+] -+ - 3-D vector, 356 - algebraic numbers, 223 - power series, 422 - vector, 232 - -\endsection -\xitem[-] -- - 3-D vector, 356 - power series, 422 - vector, 232 - -\endsection -\item[.] -. (CONS) (page 50) - -The CONS operator adds a new element to the beginning of a LIST. Its -operation is identical to the symbol DOT (dot). It can be used -infix or prefix. - - CONS(item,list) or item CONS list - -item can be any REDUCE scalar expression, including a list; list -must be a list. - -Examples: - -liss := cons(a,{b}); {A,B} - -liss := c cons liss; {C,A,B} - -newliss := for each y in liss collect cons(y,list x); - NEWLISS := {{C,X},{A,X},{B,X}} - -for each y in newliss sum (first y)*(second y); - X*(A + B + C) - -If you want to use CONS to put together two elements into a new list, -you must make the second one into a list with curly brackets or the -LIST command. You can also start with an empty list created by {}. - -The CONS operator is right associative: A CONS B CONS C is valid if C -is a list; B need not be a list. The list produced is {A,B,C}. - -\endsection -\xitem[/] -/ - 3-D vector, 356 - algebraic numbers, 224 - power series, 422 - vector, 232 - -\endsection -\xitem[@] -@ - partial differentiation, 271 - tangent vector, 271 - -\endsection -\xitem[@ operator] -@ operator, 251 - -\endsection -\item[#] -# (pages 256, 271) - -# is the syntax for the Hodge-* operator in the EXCALC package. - -\endsection -\xitem[^] -^ - 3-D vector, 356 - exterior multiplication, 250, 271 - -\endsection -\item[ABS] -ABS (page 72) -The ABS operator returns the absolute value of its argument. - -ABS(expression) - -expression can be any REDUCE scalar expression. - -Examples: -abs(-a); ABS(A) -abs(-5); 5 -a := -10; A := -10 -abs(a); 10 -abs(-a); 10 - -If the argument has had no numeric value assigned to it, such as an -identifier or polynomial, ABS returns an expression involving -ABS of its argument, doing as much simplification of the argument -as it can, such as dropping any preceding minus sign. - -\endsection -\item[ACOS] -ACOS (pages 76, 78) - -The ACOS operator returns the arccosine of its argument. - - ACOS(expression) or ACOS simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acos(ab); ACOS(AB) -acos 15; ACOS(15) - 2 2 - SQRT( - X *Y + 1)*Y -df(acos(x*y),x); ---------------------- - 2 2 - X *Y - 1 -on rounded; -res := acos(sqrt(2)/2); RES := 0.785398163397 -res-pi/4; 0 - -An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value less than or equal to 1. - -\endsection -\item[ACOSH] -ACOSH (pages 76, 78) - -ACOSH represents the hyperbolic arccosine of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -ACOSH is known to the system. Numerical values may also be found by -turning on the switch ROUNDED. - - ACOSH(expression) or ACOSH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix or -vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -acosh a; ACOSH(A) -acosh(0); ACOSH(0) - 4 - 2*SQRT(A - 1)*A -df(acosh(a**2),a); ------------------ - 4 - A - 1 - -int(acosh(x),x); INT(ACOSH(X),X) - -You may attach functionality by defining ACOSH to be the inverse of -COSH. This is done by the commands - put('cosh,'inverse,'acosh); - put('acosh,'inverse,'cosh); -You can write a procedure to attach integrals or other functions to -ACOSH. You may wish to add a check to see that its argument is -properly restricted. - -\endsection -\item[ACOT] -ACOT (pages 76, 78) - -ACOT represents the arccotangent of its argument. It takes an -arbitrary scalar expression as its argument. The derivative of ACOT is -known to the system. Numerical values may also be found by turning on -the switch ROUNDED. - - ACOT(expression) or ACOT simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. You can add functionality -yourself with LET and procedures. - -Examples: -acot a; ACOT(A) - PI -acot(0); ---- - 2 - - - 2*A -df(acot(a**2),a); -------- - 4 - A + 1 - - 2 - 2*ACOT(X)*X + LOG(X + 1) -int(acot(x),x); --------------------------- - 2 -on rounded; -acot(1); 0.785398163397 - -\endsection -\item[ACOTH] -ACOTH (pages 76, 78) - -ACOTH represents the inverse hyperbolic cotangent of its argument. It -takes an arbitrary scalar expression as its argument. The derivative -of ACOTH is known to the system. Numerical values may also be found -by turning on the switch ROUNDED. - - ACOTH(expression) or ACOTH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. You can add functionality yourself -with LET and procedures. - -Examples: -acoth(0); 0 - - - 2*X -df(acoth(x^2),x); -------- - 4 - X - 1 - -int(acoth(x),x); ACOTH(X)*X + ACOTH(X) + LOG(X - 1) - -\endsection -\item[ACSC] -ACSC (pages 76, 78) - -The ACSC operator returns the arccosecant of its argument. - - ACSC(expression) or ACSC simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acsc(ab); ACSC(AB) -acsc 15; ACSC(15) - 2 2 - - SQRT(X *Y - 1) -df(acsc(x*y),x); -------------------- - 2 2 - X*(X *Y - 1) -on rounded; -res := acsc(2/sqrt(3)); RES := 1.0471975512 -res-pi/3; 0 - -An explicit numeric value is not given unless the switch ROUNDED is on -and the argument has an absolute numeric value less than or equal to -1. - -\endsection -\item[ACSCH] -ACSCH (pages 76, 78) - -The ACSCH operator returns the hyperbolic arccosecant of its argument. - - ACSCH(expression) or ACSCH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acsch(ab); ACSCH(AB) -acsch 15; ACSCH(15) - 2 2 - - SQRT(X *Y + 1) -df(acsch(x*y),x); -------------------- - 2 2 - X*(X *Y + 1) -on rounded; -res := acsch(3); RES := 0.327450150237 - -An explicit numeric value is not given unless the switch ROUNDED is on -and the argument has an absolute numeric value less than or equal to -1. - -\endsection -\item[ADJPREC] -ADJPREC (page 133) - -When a real number is input, it is normally truncated to the PRECISION -in effect at the time the number is read. If it is desired to keep -the full precision of all numbers input, the switch ADJPREC (for -adjust precision) can be turned on. While on, ADJPREC will -automatically increase the precision, when necessary, to match that of -any integer or real input, and a message printed to inform the user of -the precision increase. - -Examples: -on rounded; -1.23456789012345; 1.23456789012 -on adjprec; -1.23456789012345; *** precision increased to 15 - 1.23456789012345 - -\endsection -\item[ALGEBRAIC] -ALGEBRAIC (page 191) - -The ALGEBRAIC command changes REDUCE's mode of operation to -algebraic. When ALGEBRAIC is used as an operator (with an argument -inside parentheses) that argument is evaluated in algebraic mode, but -REDUCE's mode is not changed. - -Examples: -algebraic; -symbolic; NIL - 2 -algebraic(x**2); X -x**2; ***** The symbol X has no value. - -REDUCE's symbolic mode does not know about most algebraic commands. -Error messages in this mode may also depend on the particular Lisp -used for the REDUCE implementation. - -\endsection -\item[Algebraic mode] -Algebraic mode (pages 191, 197, 198) - -Most REDUCE calculatuons take place in Algebraic mode. The -alternative is Symbolic mode, which is a syntactic form of LISP. See -the commands ALGEBRAIC and SYMBOLIC for mor details. - -\endsection -\item[ALGINT] -ALGINT - -When the ALGINT switch is on, the algebraic integration module (which -must be loaded from the REDUCE library) is used for integration. - -Loading ALGINT from the library automatically turns on the -ALGINT switch. An error message will be given if ALGINT is -turned on when the ALGINT has not been loaded from the library. - -\endsection -\item[ALGINT(Package)] -ALGINT(Package) (page 178) - -Author: James H. Davenport - -The ALGINT package provides indefinite integration of square roots. -This package, which is an extension of the basic integration package -distributed with REDUCE, will analytically integrate a wide range of -expressions involving square roots. The ALGINT switch provides for -the use of the facilities given by the module, and is automatically -turned on when the package is loaded. If you want to return to the -standard integration algorithms, turn ALGINT off. An error message is -given if you try to turn the ALGINT switch on when its module is not -loaded. - -\endsection -\item[ALLBRANCH] -ALLBRANCH (page 89) - -When ALLBRANCH is on, the operator SOLVE selects all branches of -solutions. When ALLBRANCH is off, it selects only the principal -branches. Default is ON. - -Examples: - -solve(log(sin(x+3)),x); {X=2*ARBINT(1)*PI - ASIN(1) - 3, - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3} -off allbranch; -solve(log(sin(x+3)),x); {X=ASIN(1) - 3} - -ARBINT(1) indicates an arbitrary integer, which is given a unique -identifier by REDUCE, showing that there are infinitely many solutions -of this type. When ALLBRANCH is off, the single canonical solution is -given. - -\endsection -\item[ALLFAC] -ALLFAC (pages 102, 104) - -The ALLFAC switch, when on, causes REDUCE to factor out automatically -common products in the output of expressions. Default is ON. - -Examples: 3 -x + x*y**3 + x**2*cos(z); X*(COS(Z)*X + Y + 1) -off allfac; - 2 3 -x + x*y**3 + x**2*cos(z); COS(Z)*X + X*Y + X - -The ALLFAC switch has no effect when PRI is off. Although the switch -setting stays as it was, printing behaviour is as if it were off. - -\endsection -\xitem[ansatz of symmetry generator] -ansatz of symmetry generator, 386 - -\endsection -\item[ANTISYMMETRIC] -ANTISYMMETRIC (page 93) - -When an operator is declared ANTISYMMETRIC, its arguments are -reordered to conform to the internal ordering of the system. If an -odd number of argument interchanges are required to do this ordering, -the sign of the expression is changed. - - ANTISYMMETRIC identifier {,identifier} - -identifier is an identifier that has been declared as an operator. - -Examples: -operator m,n; -antisymmetric m,n; -m(x,n(1,2)); - M( - N(2,1),X) -operator p; -antisymmetric p; -p(a,b,c); P(A,B,C) -p(b,a,c); - P(A,B,C) - -If identifier has not been declared an operator, the flag -ANTISYMMETRIC is still attached to it. When identifier is -subsequently used as an operator, the message - Declare identifier operator? (Y or N) -is printed. If the user replies Y, the antisymmetric property of the -operator is used. - -Note in the first example, identifiers are customarily ordered -alphabetically, while numbers are ordered from largest to smallest. -The operators may have any desired number of arguments (less than 128). - -\endsection -\item[APPEND] -APPEND (page 50) - -The APPEND operator constructs a new list from the elements of its two -arguments (which must be lists). - - APPEND(lst,lst) - -lst must be a list, though it may be the empty list ({}). Any -arguments beyond the first two are ignored. - -Examples: -alist := {1,2,{a,b}}; ALIST := {1,2,{A,B}} -blist := {3,4,5,sin(y)}; BLIST := {3,4,5,SIN(Y)} -append(alist,blist); {1,2,{A,B},3,4,5,SIN(Y)} -append(alist,{}); {1,2,{A,B}} -append(list z,blist); {Z,3,4,5,SIN(Y)} - -Comment The new list consists of the elements of the second list -appended to the elements of the first list. You can append new -elements to the beginning or end of an existing list by putting the -new element in a list (use curly braces or the operator list). This -is particularly helpful in an iterative loop. - -\endsection -\item[ARBCONST] -ARBCONST operator (page 350) - -See the ODESOLVE package - -\endsection -\xitem[arbitrary ordering] -arbitrary ordering, 316 - -\endsection -\item[ARGLENGTH] -ARGLENGTH (page 117) -The operator ARGLENGTH returns the number of arguments of the top-level -operator in its argument. - - ARGLENGTH(expression) - -expression can be any valid REDUCE algebraic expression. - -Examples: -arglength(a + b + c + d); 4 -arglength(a/b/c); 2 -arglength(log(sin(df(r**3*x,x)))); 1 - -In the first example, + is an n-ary operator, so the number of terms -is returned. In the second example, since / is a binary operator, the -argument is actually (a/b)/c, so there are two terms at the top level. -In the last example, no matter how deeply the operators are nested, -there is still only one argument at the top level. - -\endsection -\item[ARNUM] -ARNUM (pages 179, 223) -Author: Eberhard Schruefer - -This package provides facilities for handling algebraic numbers as polynomial -coefficients in REDUCE calculations. It includes facilities for introducing -indeterminates to represent algebraic numbers, for calculating splitting -fields, and for factoring and finding greatest common divisors in such -domains. - -\endsection -\item[ARRAY] -ARRAY (page 67) - -The ARRAY declaration declares a list of identifiers to be of type -ARRAY, and sets all their entries to 0. - - ARRAY identifier(dimensions){,identifier(dimensions)} - -identifier may be any valid REDUCE identifier. If the identifier -was already an array, a warning message is given that the array has been -redefined. dimensions are of form - integer{,integer}. - -array a(2,5),b(3,3,3),c(200); -array a(3,5); *** ARRAY A REDEFINED -a(3,4); 0 -length a; {4,6} - -Arrays are always global, even if defined inside a procedure or block -statement. Their status as an array remains until the variable is -reset by CLEAR. Arrays may not have the same names as operators, -procedures or scalar variables. - -Array elements are referred to by the usual notation: A(I,J) returns -the jth element of the ith row. The ASSIGNment operator := is used to -put values into the array. Arrays as a whole cannot be subject to -assignment by LET or := ; the assignment operator := is only valid for -individual elements. - -When you use LET on an array element, the contents of that element -become the argument to LET. Thus, if the element contains a number or -some other expression that is not a valid argument for this command, -you get an error message. If the element contains an identifier, the -identifier has the substitution rule attached to it globally. The -same behaviour occurs with CLEAR. If the array element contains an -identifier or simple_expression, it is cleared. Do NOT use CLEAR to -try to set an array element to 0. Because of the side effects of -either LET or CLEAR, it is unwise to apply either of these to array -elements. - -Array indices always start with 0, so that the declaration ARRAY A(5) -sets aside 6 units of space, indexed from 0 through 5, and initialises -them to 0. The LENGTH command returns a list of the true number of -elements in each dimension. - -\endsection -\item[ASEC] -ASEC (pages 76, 78) - -The ASEC operator returns the arccosecant of its argument. - - ASEC(expression) or ASEC simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asec(ab); ASEC(AB) -asec 15; ASEC(15) - 2 2 - SQRT(X *Y - 1) -df(asec(x*y),x); ----------------- - 2 2 - X*(X *Y - 1) -on rounded; -res := asec sqrt(2); RES := 0.785398163397 -res-pi/4; 0 - -An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value greater or equal to 1. - -\endsection -\item[ASECH] -ASECH (pages 76, 78) - -ASECH represents the hyperbolic arccosecant of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -ASECH is known to the system. Numerical values may also be found by -turning on the switch ROUNDED. - - ASECH(expression) or ASECH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asech a; ASECH(A) -asech(1); 0 - 4 - 2*SQRT(A - 1)*A -df(acosh(a**2),a); ------------------ - 4 - A - 1 -int(asech(x),x); INT(ASECH(X),X) - -You may attach functionality by defining ASECH to be the inverse of -SECH. This is done by the commands - put('sech,'inverse,'asech); - put('asech,'inverse,'sech); -You can write a procedure to attach integrals or other functions to -ASECH. You may wish to add a check to see that its argument is -properly restricted. - -\endsection -\item[ASIN] -ASIN (pages 76, 78) - -The ASIN operator returns the arcsine of its argument. - - ASIN(expression) or ASIN simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asin(givenangle); ASIN(GIVENANGLE) -asin(5); ASIN(5) - 2 - - 2*SQRT( - 4*X + 1) -df(asin(2*x),x); ------------------------ - 2 - 4*X - 1 -on rounded; -asin .5; 0.523598775598 -asin(sqrt(3)); ASIN(1.73205080757) -asin(sqrt(3)/2); 1.04719755120 - -A numeric value is not returned by ASIN unless the switch -ROUNDED is on and its argument has an absolute value less than or -equal to 1. - -\endsection -\item[ASINH] -ASINH (pages 76, 78) - -The ASINH operator returns the hyperbolic arcsine of its argument. -The derivative of ASINH and some simple transformations are known -to the system. - - ASINH(expression) or ASINH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asinh d; ASINH(D) -asinh(1); ASINH(1) - 2 - 2*SQRT(4*X + 1) -df(asinh(2*x),x); ------------------ - 2 - 4*X + 1 - -You may attach further functionality by defining ASINH to be the -inverse of SINH. This is done by the commands - put('sinh,'inverse,'asinh); - put('asinh,'inverse,'sinh); - -A numeric value is not returned by ASINH unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\xitem[Assignment] -Assignment, 54, 55, 57, 63, 195, 198 - -\endsection -\item[Asymptotic command] -Asymptotic command (pages 139, 151) - -See WEIGHT and WTLEVEL - -\endsection -\item[ATAN] -ATAN (pages 76, 78, 81) - -The ATAN operator returns the arctangent of its argument. - - ATAN(expression) or ATAN simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -atan(middle); ATAN(MIDDLE) -on rounded; -atan 45; 1.54857776147 -off rounded; - 2 - 2*ATAN(X)*X - LOG(X + 1) -int(atan(x),x); --------------------------- - 2 - 2*Y -df(atan(y**2),y); -------- - 4 - Y + 1 - -A numeric value is not returned by ATAN unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\item[ATAN2] -ATAN2 (pages 76, 78) - - ATAN2(expression,expression) - -expression is any valid scalar REDUCE expression. In ROUNDED mode, if -a numerical value exists, ATAN2 returns the principal value of the arc -tangent of the second argument divided by the first in the range -[-pi,+pi] radians, using the signs of both arguments to determine the -quadrant of the return value. An expression in terms of ATAN2 is -returned in other cases. - -Examples: -atan2(3,2); ATAN2(3,2); -on rounded; -atan2(3,2); 0.982793723247 -atan2(a,b); ATAN2(a,b); -atan2(1,0); 1.57079632679 - -ATAN2 returns a numeric value only if ROUNDED is on. Then the -arctangent is calculated to the current degree of floating point precision. - -\endsection -\item[ATANH] -ATANH (pages 76, 78) - -The ATANH operator returns the hyperbolic arctangent of its argument. -The derivative of ASINH and some simple transformations are known -to the system. - - ATANH(expression) or ATANH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -atanh aa; ATANH(AA) -atanh(1); ATANH(1) - - X -df(atanh(x*y),y); ----------- - 2 2 - X *Y - 1 - -A numeric value is not returned by ASINH unless the switch ROUNDED is -on and its argument evaluates to a number. You may attach additional -functionality by defining ATANH to be the inverse of TANH. This is -done by the commands - put('tanh,'inverse,'atanh); - put('atanh,'inverse,'tanh); - -\endsection -\xitem[AVEC function] -AVEC function, 232 - -\endsection -\item[AVECTOR] -AVECTOR (pages 179, 231) - -Author: David Harper - -A Vector Algebra and Calculus Package. - -This package provides REDUCE with the ability to perform vector -algebra using the same notation as scalar algebra. The basic -algebraic operations are supported, as are differentiation and -integration of vectors with respect to scalar variables, cross -product and dot product, component manipulation and application of -scalar functions (e.g. cosine) to a vector to yield a vector -result. - -\endsection -\item[BALANCED_MOD] -BALANCED_MOD - -MODULAR numbers are normally produced in the range [0,...n), where -n is the current modulus. With BALANCED_MOD on, the range -[-n/2,n/2] is used instead. - -Examples: - setmod 7; 1 - on modular; - 4; 4 - on balanced_mod; - 4; -3 - -\endsection -\item[BEGIN...END] -BEGIN ... END (pages 61, 62, 64) - -BEGIN is used to start a BLOCK statement, which is closed with END. - - BEGIN statement{; statement} END - -statement is any valid REDUCE statement. - -Examples: - begin for i := 1:3 do write i end; 1 - 2 - -begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end; - 1 - 4 3 2 -b; X - 10*X + 35*X - 50*X + 24 - -A BEGIN...END block can do actions (such as WRITE), but does not -return a value unless instructed to by a RETURN statement, which must -be the last statement executed in the block. It is unnecessary to -insert a semicolon before the END. - -Local variables, if any, are declared in the first statement -immediately after BEGIN, and may be defined as SCALAR, INTEGER, or -REAL. ARRAY variables declared within a BEGIN...END block are global -in every case, and LET statements have global effects. A LET -statement involving a formal parameter affects the calling parameter -that corresponds to it. LET statements involving local variables make -global assignments, overwriting outside variables by the same name or -creating them if they do not exist. You can use this feature to -affect global variables from procedures, but be careful that you do -not do it inadvertently. - -\endsection -\item[BERNOULLI] -BERNOULLI (pages 185, 393) -[Part of SPECFN package] - -The BERNOULLI operator returns the nth Bernoulli number. - - BERNOULLI(integer) - -Examples: -load_package specfn; (SPECFN) - - - 174611 -bernoulli 20; ----------- - 330 - -bernoulli 17; 0 - -All Bernoulli numbers with odd indices except for 1 are zero. - -The BERNOULLIP operator returns the nth Bernoulli Polynomial evaluated -at x. - - BERNOULLIP(integer,expression) - -Examples: -load_package specfn; (SPECFN) - - 2 - Z*(2*Z - 3*Z + 1) -BernoulliP(3,z); -------------------- - 2 - - 338585 -BernoulliP(10,3); -------- - 66 - -The value of the nth Bernoulli Polynomial at 0 is the nth Bernoulli number. - -\endsection -\item[BESSELI] -BESSELI (pages 185, 396) -[Part of SPECFN package] - -The BESSELI operator returns the modified Bessel function I. - - BESSELI(order,argument) - -Examples: -load_package specfn; (SPECFN) -on rounded; -Besseli (1,1); 0.565159103992 - -The knowledge about the operator BESSELI is currently fairly limited. - -\endsection -\item[BESSELJ] -BESSELJ (pages 185, 396) -[Part of SPECFN package] - -The BESSELJ operator returns the Bessel function of the first kind. - - BESSELJ(order,argument) - -Examples: -load_package specfn; (SPECFN) -BesselJ(1/2,pi); 0 -on rounded; -BesselJ(0,1); 0.765197686558 - -\endsection -\item[BESSELK] -BESSELK (pages 185, 396) -[Part of SPECFN package] - -The BESSELK operator returns the modified Bessel function K. - - BESSELK(order,argument) - -Examples: -load_package specfn; (SPECFN) -df(besselk(0,x),x); - BESSELK(1,X) - -There is currently no numeric support for the operator BesselK. - -\endsection -\item[BESSELY] -BESSELY (pages 185, 396) -[Part of SPECFN package] - -The BESSELY operator returns the Bessel function of the second kind. - BESSELY(order,argument) - -Examples: -load_package specfn; (SPECFN) -Bessely (1/2,pi); - SQRT(2) / PI -on rounded; -Bessely (1,3); 0.324674424792 - -The operator BESSELY is also called Weber's function. - -\endsection -\item[BETA] -BETA (pages 185, 397) -[Part of SPECFN package] - -The BETA operator returns the Beta function defined by - - Beta (z,w) := defint(t**(z-1)* (1 - t)**(w-1),t,0,1) . - - - BETA(expression,expression) - - -Examples: -load_package specfn; (SPECFN) -Beta(2,2); 1 / 6 -Beta(x,y); GAMMA(X)*GAMMA(Y) / GAMMA(X + Y) - -The operator BETA is simplified towards the GAMMA operator. - -\endsection -\item[BFSPACE] -BFSPACE (page 133) - -Floating point numbers are normally printed in a compact notation -(either fixed point or in scientific notation if SCIENTIFIC_NOTATION -has been used). In some (but not all) cases, it helps -comprehensibility if spaces are inserted in the number at regular -intervals. The switch BFSPACE, if on, will cause a blank to be -inserted in the number after every five characters. - -Examples: - on rounded; - 1.2345678; 1.2345678 - on bfspace; - 1.2345678; 1.234 5678 - -BFSPACE is normally off. - -\endsection -\item[BINOMIAL] -BINOMIAL (page 185) - -The BINOMIAL operator returns the Binomial coefficient if both -parameter are integer and expressions involving the Gamma function otherwise. - - BINOMIAL(integer,integer) - -Examples: -Binomial(49,6); 13983816 - - GAMMA(N + 1) -Binomial(n,3); ---------------- - 6*GAMMA(N - 2) - -The operator BINOMIAL evaluates the Binomial coefficients from the -explicit form and therefore it is not the best algorithm if you want -to compute many binomial coefficients with big indices in which case a -recursive algorithm is preferable. - -\endsection -\xitem[Block] -Block, 61, 64 - -\endsection -\xitem[BNDEQ!*] -BNDEQ!*, 257 - -\endsection -\xitem[Boolean] -Boolean, 45 - -\endsection -\item[BOUNDS] -BOUNDS (page 182) - -Upper and lower bounds of a real valued function over an INTERVAL or a -rectangular multivariate domain are computed by the operator -BOUNDS. The algorithmic basis is the computation with inequalities: -starting from the interval(s) of the variables, the bounds are -propagated in the expression using the rules for inequality -computation. Some knowledge about the behavior of special functions -like ABS, SIN, COS, EXP, LOG, fractional exponentials etc. is -integrated and can be evaluated if the operator bounds is called with -rounded mode on (otherwise only algebraic evaluation rules are -available). - -If BOUNDS finds a singularity within an interval, the evaluation is -stopped with an error message indicating the problem part of the -expression. - - BOUNDS(exp,var=(l .. u) [,var=(l .. u) ...]) - BOUNDS(exp,{var=(l .. u) [,var=(l .. u) ...]}) - -where exp is the function to be investigated, var are the variables of -exp, l and u specify the area as set of INTERVAL s. - -BOUNDS computes upper and lower bounds for the expression in the given -area. An INTERVAL is returned. - -Examples: - bounds(sin x,x=(1 .. 2)); - 1 .. 1 - on rounded; - bounds(sin x,x=(1 .. 2)); 0.84147098481 .. 1 - bounds(x**2+x,x=(-0.5 .. 0.5)); - 0.25 .. 0.75 - -\endsection -\xitem[BROEBFULLREDUCTION] -BROEBFULLREDUCTION, 303 - -\endsection -\xitem[Buchberger's Algorithm] -Buchberger's Algorithm, 292, 295 - -\endsection -\item[BYE] -BYE (page 70) - -The BYE command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are -at the top level, the BYE command exits REDUCE. QUIT is a synonym for -BYE. - -\endsection -\xitem[C(I)] -C(I), 379 - -\endsection -\xitem[Call by value] -Call by value, 171, 173 - -\endsection -\xitem[Canonical form] -Canonical form, 97 - -\endsection -\item[CARD_NO] -CARD_NO (page 108) - -CARD_NO sets the total number of cards allowed in a Fortran -output statement when FORT is on. Default is 20. - -Examples: -on fort; -card_no := 4; CARD_NO=4. -z := (x + y)**15; - ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y** - . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15 - Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ - . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+ - . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1 - -Twenty total cards means 19 continuation cards. You may set it for -more if your Fortran system allows more. Expressions are broken apart -in a Fortran-compatible way if they extend for more than CARD_NO -continuation cards. - -\endsection -\xitem[cartesian coordinates] -cartesian coordinates, 354 - -\endsection -\item[CEILING] -CEILING (page 72) - - CEILING(expression) - -This operator returns the ceiling (i.e., the least integer greater -than or equal to its argument) if its argument has a numerical value. -For negative numbers, this is equivalent to FIX. For non-numeric -arguments, the value is an expression in the original operator. - -Examples: -ceiling 3.4; 4 -fix 3.4; 3 -ceiling(-5.2); -5 -fix(-5.2); -5 -ceiling a; CEILING(A) - -\endsection -\item[CENTERED_MOD] -CENTERED_MOD (page 134) - -This is an error in the Reduce manual. It should be BALANCED_MOD. -For more information select that entry. - -\endsection -\xitem[chain rule] -chain rule, 254 - -\endsection -\xitem[Character set] -Character set, 33 - -\endsection -\item[Chebyshev_fit] -Chebyshev fit (page 182) - -The operator family CHEBYSHEV_... implements approximation and -evaluation of functions by the Chebyshev method. Let T(n,a,b,x) be -the Chebyshev polynomial of order n transformed to the interval (a,b). -Then a function f(x) can be approximated in (a,b) by a series - - for i := 0:n sum c(i)*T(i,a,b,x) - -The operator CHEBYSHEV_FIT computes this approximation and returns a -list, which has as first element the sum expressed as a polynomial and -as second element the sequence of Chebyshev coefficients. - -CHEBYSHEV_DF and CHEBYSHEV_INT transform a Chebyshev coefficient list -into the coefficients of the corresponding derivative or integral -respectively. For evaluating a Chebyshev approximation at a given -point in the basic interval the operator CHEBYSHEV_EVAL can be used. - -CHEBYSHEV_EVAL is based on a recurrence relation which is in general -more stable than a direct evaluation of the complete polynomial. - - CHEBYSHEV_FIT(fcn,var=(lo .. hi),n) - - CHEBYSHEV_EVAL(coeffs,var=(lo .. hi), var=pt) - - CHEBYSHEV_DF(coeffs,var=(lo .. hi)) - - CHEBYSHEV_INT(coeffs,var=(lo .. hi)) - - -where fcn is an algebraic expression (the target function), var is the -variable of fcn, lo and hi are numerical real values which describe an -INTERVAL lo < hi, the integer n is the approximation order (set to 20 -if missing), pt is a number in the interval and coeffs is a series of -Chebyshev coefficients. - -Examples: - -on rounded; -w:=chebyshev_fit(sin x/x,x=(1 .. 3),5); - 3 2 - W := {0.0382345446975*X - 0.239802588672*X + 0.0651206939005*X - - + 0.977836217464, - - {0.899091895826,-0.406599215895,-0.00519766024352,0.00946374143 - - 079,-0.0000948947435875}} - -chebyshev_eval(second w, x=(1 .. 3), x=2.1); - 0.411091086819 - -\xitem[Chebyshev Polynomials] -Chebyshev Polynomials, 185 - -\endsection -\item[CHEBYSHEVT] -CHEBYSHEVT (page 185) - -The CHEBYSHEVT operator computes the nth Chebyshev T Polynomial (of the -first kind). - -CHEBYSHEVT(integer,expression) - -Examples: -load_package specfn; (SPECFN) - 2 -ChebyshevT(3,xx); XX*(4*XX - 3) - -ChebyshevT(3,4); 244 - -Chebyshev's T polynomials are computed using the recurrence relation: - -ChebyshevT(n,x) := 2x*ChebyshevT(n-1,x) - ChebyshevT(n-2,x) with -ChebyshevT(0,x) := 0 and ChebyshevT(1,x) := x - -\endsection -\item[CHEBYSHEVU] -CHEBYSHEVU (page 185) - -The CHEBYSHEVU operator returns the nth Chebyshev U Polynomial (of the -second kind). - -CHEBYSHEVU(integer,expression) - -Examples: -load_package specfn; (SPECFN) - 2 -ChebyshevU(3,xx); 4*X*(2*X - 1) - -ChebyshevU(3,4); 496 - -Chebyshev's U polynomials are computed using the recurrence relation: - -ChebyshevU(n,x) := 2x*ChebyshevU(n-1,x) - ChebyshevU(n-2,x) with -ChebyshevU(0,x) := 0 and ChebyshevU(1,x) := 2x - -\endsection -\item[CLEAR] -CLEAR (pages 142, 146) - -The CLEAR command is used to remove assignments or remove substitution -rules from any expression. - -CLEAR identifier{,identifier} or - let-type statement CLEAR identifier - -identifier can be any SCALAR, MATRIX, or ARRAY variable or PROCEDURE -name. let-type statement can be any general or specific LET statement -(see below). - -Examples: -array a(2,3); -a(2,2) := 15; A(2,2) := 15 -clear a; -a(2,2); Declare A operator? (Y or N) -let x = y + z; -sin(x); SIN(Y + Z) -clear x; -sin(x); SIN(X) -let x**5 = 7; -clear x; -x**5; 7 -clear x**5; - 5 -x**5; X - -Although it is not a good idea, operators of the same name but taking -different numbers of arguments can be defined. Using a CLEAR -statement on any of these operators clears every one with the same -name, even if the number of arguments is different. - -The CLEAR command is used to ``forget'' matrices, arrays, operators -and scalar variables, returning their identifiers to the pristine -state to be used for other purposes. When CLEAR is applied to array -elements, the contents of the array element becomes the argument for -CLEAR. Thus, you get an error message if the element contains a -number, or some other expression that is not a legal argument to -CLEAR. If the element contains an identifier, it is cleared. When -clear is applied to matrix elements, an error message is returned if -the element evaluates to a number, otherwise there is no effect. Do -NOT try to use CLEAR to set array or matrix elements to 0. You will -not be pleased with the results. - -If you are trying to clear power or product substitution rules made -with either LET or FORALL...LET, you must reproduce the rule, exactly -as you typed it with the same arguments, up to but not including the -equal sign, using the word CLEAR instead of the word LET. This is -shown in the last example. Any other type of LET or FORALL...LET -substitution can be cleared with just the variable or operator name. -MATCH behaves the same as LET in this situation. There is a more -complicated example under FORALL. - -\endsection -\item[CLEARRULES] -CLEARRULES (page 148) - - CLEARRULES list{,list} - -The operator CLEARRULES is used to remove previously defined -RULE lists from the system. list can be an explicit rule -list, or evaluate to a rule list. - -Examples: -trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ -let trig1; - COS(A - B) + COS(A + B) -cos(a)*cos(b); ------------------------- - 2 -clearrules trig1; -cos(a)*cos(b); COS(A)*COS(B) - -\endsection -\item[COEFF] -COEFF (page 115) - -The COEFF operator returns the coefficients of the powers of the -specified variable in the given expression, in a list. - - COEFF(expression,variable) - -expression is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch RATARG -is on. variable must be a kernel. The results are returned in a -list. - -Examples: - 3 2 -coeff((x+y)**3,x); {Y ,3*Y ,3*Y,1} -coeff((x+2)**4 + sin(x),x); {SIN(X) + 16,32,24,8,1} -high_pow; 4 -low_pow; 0 - 7 9 -ab := x**9 + sin(x)*x**7 + sqrt(y); AB := SQRT(Y) + SIN(X)*X + X -coeff(ab,x); {SQRT(Y),0,0,0,0,0,0,SIN(X),0,1} - -The variables HIGH_POW and LOW_POW are set to the highest and lowest -powers of the variable, respectively, appearing in the expression. - -The coefficients are put into a list, with the coefficient of the -lowest (constant) term first. You can use the usual list access -methods (first, second, third, rest, length, and part) to extract -them. If a power does not appear in the expression, the corresponding -element of the list is zero. Terms involving functions of the -specified variable but not including powers of it (for example in the -expression x**4 + 3*x**2 + tan(x)) are placed in the constant term. - -Since the COEFF command deals with the expanded form of the -expression, you may get unexpected results when EXP is off, or when -FACTOR or IFACTOR are on. - -If you want only a specific coefficient rather than all of them, use the -COEFFN operator. - -\endsection -\item[Coefficient] -Coefficient (pages 132, 134) - -REDUCE allows for a variety of numerical domains for the numerical -coefficients of polynomials used in calculations. The default mode is -integer arithmetic, although the possibility of using real -coefficients has been discussed elsewhere. Rational coefficients have -also been available by using integer coefficients in both the -numerator and denominator of an expression, using the ON DIV option to -print the coefficients as rationals. However, REDUCE includes several -other coefficient options in its basic version. - -See ADJPREC, BFSPACE, COMPLEX, MODULAR, PRECISION, PRINT_PRECISION, -RATIONAL, RATIONALIZE, ROUNDALL, ROUNDBF, ROUNDED and SETMOD. - -\endsection -\item[COEFFN] -COEFFN (page 116) - -The COEFFN operator takes three arguments: an expression, a kernel, -and a non-negative integer. It returns the coefficient of the kernel -to that integer power, appearing in the expression. - - COEFFN(expression,kernel,integer) - -expression must be a polynomial, unless RATARG is on which allows -rational expressions. kernel must be a Kernel, and integer must be a -non-negative integer. - -Examples: - -ff := x**7 + sin(y)*x**5 + y**4 + x + 7$ -coeffn(ff,x,5); SIN(Y) -coeffn(ff,z,3); 0 - 5 7 -coeffn(ff,y,0); SIN(Y)*X + X + X + 7 - -rr := 1/y**2+y**3+sin(y); -on ratarg; - -coeffn(rr,y,-2); ***** -2 invalid as COEFFN index - -coeffn(rr,y,5); 1 - ---- - 2 - y - -If the given power of the kernel does not appear in the expression, -COEFFN returns 0. Negative powers are never detected, even if they -appear in the expression and RATARG are on. COEFFN with an integer -argument of 0 returns any terms in the expression that do not contain -the given kernel. - -\endsection -\item[COFACTOR] -COFACTOR (page 166) - -The operator COFACTOR returns the cofactor of the element in row -row and column column of a MATRIX. Errors occur -if row or column do not evaluate to integer expressions or if -the matrix is not square. - - COFACTOR(matrix_expression,row,column) - -Examples: -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); A*R - C*P -cofactor(mat((a,b,c),(d,e,f)),1,1); ***** non-square matrix - -\endsection -\xitem[COFRAME] -COFRAME (pages 257, 262, 271) - WITH METRIC (page 263 - WITH SIGNATURE (page 263 - -\endsection -\item[COLLECT] -COLLECT (page 57) - -COLLECT is a key word of the FOR construction. Details are given there. - -\endsection -\item[COMBINEEXPT] -COMBINEEXPT (page 77) - -REDUCE is in general poor at surd simplification. However, when the -switch COMBINEEXPT is on, the system attempts to combine -exponentials whenever possible. - -Example: 1/3 1/6 -3^(1/2)*3^(1/3)*3^(1/6); SQRT(3)*3 *3 -on combineexpt; -ws; 1 - -\endsection -\item[COMBINELOGS] -COMBINELOGS (page 77) - -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches EXPANDLOGS and -COMBINELOGS to carry out these operations. -Examples: - on expandlogs; - log(x*y); LOG(X) + LOG(Y) - on combinelogs; - ws; LOG(X*Y) - -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not -rely on this behaviour, since it may change in the next release. - -\endsection -\xitem[COMM] -COMM (page 378 - -\endsection -\xitem[Command] -Command (page 67 - -\endsection -\xitem[Command terminator] -Command terminator (page 153 - -\endsection -\item[COMMENT] -COMMENT (page 38) - -Beginning with the word COMMENT, all text until the next statement -terminator (; or $) is ignored. - -Examples: - 2 -x := a**2 comment--a is the velocity of the particle;; X := A - -Note that the first semicolon ends the comment and the second one -terminates the original REDUCE statement. - -Multiple-line comments are often needed in interactive files. The -COMMENT command allows a normal-looking text to accompany the REDUCE -statements in the file. - -\endsection -\item[COMP] -COMP (page 213) - -(Not available in Personal REDUCE} - -When COMP is on, any succeeding function definitions are compiled -into a faster-running form. Default is OFF. - -Examples: -The following procedure finds Fibonacci numbers recursively. -Create a new file ``refib'' in your current directory with the following -lines in it: - -procedure refib(n); - if fixp n and n >= 0 then - if n <= 1 then 1 - else refib(n-1) + refib(n-2) - else rederr "nonnegative integer only"; - -end; - -{Now load REDUCE and run the following:} - -on time; Time: 100 ms - -in "refib"$ Time: 0 ms - - REFIB - - Time: 260 ms - - Time: 20 ms - -refib(80); 37889062373143906 - - Time: 14840 ms - -on comp; Time: 80 ms - -in "refib"$ Time: 20 ms - - REFIB - - Time: 640 ms - -refib(80); 37889062373143906 - - Time: 10940 ms - -Note that the compiled procedure runs faster. Your time messages will -differ depending upon which system you have. Compiled functions -remain so for the duration of the REDUCE session, and are then lost. -They must be recompiled if wanted in another session. With the switch -TIME on as shown above, the CPU time used in executing the command is -returned in milliseconds. Be careful not to leave COMP on unless you -want it, as it makes the processing of procedures much slower. - -\endsection -\item[COMPACT] -COMPACT (pages 179, 241) - -Author: Anthony C. Hearn - -COMPACT is a package of functions for the reduction of a polynomial in -the presence of side relations. COMPACT applies the side relations to -the polynomial so that an equivalent expression results with as few -terms as possible. For example, the evaluation of - - compact(s*(1-sin x^2)+c*(1-cos x^2)+sin x^2+cos x^2, - {cos x^2+sin x^2=1}); - -yields the result - - 2 2 - SIN(X) *C + COS(X) *S + 1 - -\endsection -\item[Compiler] -Compiler (page 213) - -A compiler is available in the Professional REDUCE to convert -functions into a compiled form for faster execution. See the switch -COMP for more details. - -\endsection -\item[COMPLEX] -COMPLEX (pages 135, 372) - -When the COMPLEX switch is on, full complex arithmetic is used in -simplification, function evaluation, and factorisation. Default is OFF. - -Examples: - 2 2 -factorize(a**2 + b**2); {A + B } -on complex; -factorize(a**2 + b**2); {A - I*B,A + I*B} -(x**2 + y**2)/(x + i*y); X - I*Y -on rounded; *** Domain mode COMPLEX changed to COMPLEX_FLOAT -sqrt(-17); 4.12310562562*I -log(7*i); 1.94591014906 + 1.57079632679*I - -Complex floating-point can be done by turning on ROUNDED in addition -to COMPLEX. With COMPLEX off however, REDUCE knows that i is the -square root of -1 but will not carry out more complicated complex -operations. If you want complex denominators cleared by -multiplication by their conjugates, turn on the switch RATIONALIZE. - -\endsection -\xitem[Compound statement] -Compound statement (pages 61, 63 - -\endsection -\xitem[Conditional statement] -Conditional statement (page 56) - -\endsection -\item[CONJ] -CONJ (page 72) - - CONJ(expression) or CONJ simple_expression - -This operator returns the complex conjugate of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators REPART and IMPART. - -Examples: -conj(1+i); 1-I -conj(a+i*b); REPART(A) - REPART(B)*I - IMPART(A)*I - IMPART(B) - -\endsection -\xitem[Constructor] -Constructor (page 198) - -\endsection -\item[CONT] -CONT (page 160) - -The command CONT returns control to an interactive file after a -PAUSE command that has been answered with N. - -Examples: -Suppose you are in the middle of an interactive file. - factorize(x**2 + 17*x + 60); {X + 5,X + 12} - pause; Cont? (Y or N) - n - saveas results; - factor1 := first results; FACTOR1 := X + 5 - factor2 := second results; FACTOR2 := X + 12 - cont; -....the file resumes - -A PAUSE allows you to enter your own REDUCE commands, change switch -values, inquire about results, or other such activities. When you -wish to resume operation of the interactive file, use CONT. - -\endsection -\xitem[COORDINATES operator] -COORDINATES operator (page 234) - -\endsection -\xitem[COORDS vector] -COORDS vector (page 234) - -\endsection -\xitem[CORFACTOR] -CORFACTOR (page 350) - -\endsection -\item[COS] -COS (pages 76, 78) - -The COS operator returns the cosine of its argument. - - COS(expression) or COS simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -cos abc; COS(ABC) -cos(pi); -1 -cos 4; COS(4) -on rounded; -cos(4); - 0.653643620864 -cos log 5; - 0.0386319699339 - -COS returns a numeric value only if ROUNDED is on. Then the cosine is -calculated to the current degree of floating point precision. - -\endsection -\item[COSH] -COSH (pages 76, 78) - -The COSH operator returns the hyperbolic cosine of its argument. The -derivative of COSH and some simple transformations are known to the -system. - - COSH(expression) or COSH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -cosh b; COSH(B) -cosh(0); 1 -df(cosh(x*y),x); SINH(X*Y)*Y -int(cosh(x),x); SINH(X) - -You may attach further functionality by defining its inverse (see -ACOSH). A numeric value is not returned by COSH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\item[COT] -COT (pages 76, 78) - -COT represents the cotangent of its argument. It takes an arbitrary -scalar expression as its argument. The derivative of ACOT and some -simple properties are known to the system. - - COT(expression) or COT simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: -cot(a)*tan(a); COT(A)*TAN(A)) -cot(1); COT(1) - 2 -df(cot(2*x),x); - 2*(COT(2*X) + 1) - -Numerical values of expressions involving COT may be found by -turning on the switch ROUNDED. - -\endsection -\item[COTH] -COTH (pages 76, 78) - -The COTH operator returns the hyperbolic cotangent of its argument. -The derivative of COTH and some simple transformations are known to -the system. - - COTH(expression) or COTH simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: - 2 -df(coth(x*y),x); - Y*(COTH(X*Y) - 1) -coth acoth z; Z - -You can write LET statements and procedures to add further -functionality to COTH if you wish. Numerical values of expressions -involving COTH may also be found by turning on the switch ROUNDED. - -\endsection -\item[CRAMER] -CRAMER (pages 85, 163) - -When the CRAMER switch is on, MATRIX inversion and linear equation -solving (operator SOLVE) is done by Cramer's rule, through exterior -multiplication. Default is OFF. - -Examples: -on time; Time: 80 ms -off output; Time: 100 ms -mm := mat((a,b,c,d,f),(a,a,c,f,b), - (b,c,a,c,d), (c,c,a,b,f), - (d,a,d,e,f)); - Time: 300 ms -inverse := 1/mm; Time: 18460 -on cramer; Time: 80 ms -cramersinv := 1/mm; Time: 9260 MS - -Your time readings will vary depending on the REDUCE version you use. -After you invert the matrix, turn on OUTPUT and ask for one of the -elements of the inverse matrix, such as CRAMERSINV(3,2), so that you -can see the size of the expressions produced. - -Inversion of matrices and the solution of linear equations with dense -symbolic entries in many variables is generally considerably faster -with CRAMER on. However, inversion of numeric-valued matrices is -slower. Consider the matrices you're inverting before deciding -whether to turn CRAMER on or off. A substantial portion of the time -in matrix inversion is given to formatting the results for printing. -To save this time, turn OUTPUT off, as shown in this example or -terminate the expression with a dollar sign instead of a semicolon. -The results are still available to you in the workspace associated -with your prompt number, or you can assign them to an identifier for -further use. - -\endsection -\item[CREF] -CREF (pages 215, 216) - -The switch CREF invokes the CREF cross-reference program that -processes a set of procedure definitions to produce a summary of their -entry points, undefined procedures, non-local variables and so on. The -program will also check that procedures are called with a consistent -number of arguments, and print a diagnostic message otherwise. - -The output is alphabetised on the first seven characters of each function -name. - -To invoke the cross-reference program, CREF is first turned on. -This causes the program to load and the cross-referencing process to -begin. After all the required definitions are loaded, turning CREF -off will cause a cross-reference listing to be produced. - - - -Algebraic procedures in REDUCE are treated as if they were symbolic, so -that algebraic constructs will actually appear as calls to symbolic -functions, such as AEVAL. - -\endsection -\xitem[CRESYS] -CRESYS (pages 378, 380) - -\endsection -\xitem[CROSS] -CROSS - vector (page 233) - -\endsection -\xitem[cross product] -cross product (pages 233, 357) - -\endsection -\xitem[Cross reference] -Cross reference (page 215) - -\endsection -\item[CSC] -CSC (pages 76, 78) - -The CSC operator returns the cosecant of its argument. The derivative -of CSC and some simple transformations are known to the system. - - CSC(expression) or CSC simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: -csc(q)*sin(q); CSC(Q)*SIN(Q) -df(csc(x*y),x); -COT(X*Y)*CSC(X*Y)*Y - - -You can write LET statements and procedures to add further -functionality to CSC if you wish. Numerical values of expressions -involving CSC may also be found by turning on the switch ROUNDED. - -\endsection -\item[CSCH] -CSCH (pages 76, 78) - -The COSH operator returns the hyperbolic cosecant of its argument. -The derivative of CSCH and some simple transformations are known to -the system. - - CSCH(expression) or CSCH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -csch b; CSCH(B) -csch(0); 0 -df(csch(x*y),x); - COTH(X*Y)*CSCH(X*Y)*Y -int(csch(x),x); INT(CSCH(X),X) - -A numeric value is not returned by CSCH unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\xitem[CURL operator] -CURL operator (page 234) - -\endsection -\xitem[curl vector field] -curl vector field (page 234) - -\endsection -\xitem[curl operator] -curl operator (page 358) - -\endsection -\xitem[cylindrical coordinates] -cylindrical coordinates (page 355) - -\endsection -\xitem[d exterior differentiation] -d - exterior differentiation (page 271) - -\endsection -\xitem[Declaration] -Declaration (page 67) - -\endsection -\item[DECOMPOSE] -DECOMPOSE (page 127) - -The DECOMPOSE operator takes a multivariate polynomial as argument, -and returns an expression and a LIST of EQUATIONs from which the -original polynomial can be found by composition. - - DECOMPOSE(expression) or DECOMPOSE simple_expression - -Examples: -decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4- - 218900*x^3+65690*x^2-7700*x+234) - 2 - {U + 35*U + 234, - - 2 - U=V + 10*V, - - 2 - V=X - 22*X } - - 2 -decompose(u^2+v^2+2u*v+1); {W + 1,W=U + V} - -Unlike factorisation, this decomposition is not unique. Further -details can be found in V.S. Alagar, M.Tanh, Fast Polynomial -Decomposition, Proc. EUROCAL 1985, pp 150-153 (Springer) and J. von -zur Gathen, Functional Decomposition of Polynomials: the Tame Case, J. -Symbolic Computation (1990) 9, 281-299. - -\endsection -\item[DEFINE] -DEFINE (page 70) - -The command DEFINE allows you to supply a new name for an identifier -or replace it by any valid REDUCE expression. - - DEFINE identifier = substitution {,identifier = substitution} - -identifier is any valid REDUCE identifier, substitution can be a -number, an identifier, an operator, a reserved word, or an expression. - -Examples: - -define is= :=, xx=y+z; -a is 10; A := 10 - 2 2 -xx**2; Y + 2*Y*Z + Z - -xx := 10; Y + Z := 10 - -The renaming is done at the input level, and therefore takes precedence -over any other replacement or substitution declared for the same identifier. -It remains in effect until the end of the REDUCE session. Be careful with -it, since you cannot easily undo it without ending the session. - -\endsection -\xitem[definite integration (simple)] -definite integration (simple) (page 236) - -\endsection -\xitem[DEFINT function] -DEFINT function (page 236) - -\endsection -\xitem[DEFLINEINT function] -DEFLINEINT function (page 238) - -\endsection -\item[DEFN] -DEFN (pages 197, 218) - -When the switch DEFN is on, the Standard Lisp equivalent of the -input statement or procedure is printed, but not evaluated. Default is -OFF. - -Examples: - -on defn; -17/3; (AEVAL (LIST 'QUOTIENT 17 3)) - -df(sin(x),x,2); (AEVAL (LIST 'DF (LIST 'SIN 'X) 'X 2)) -procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; (AEVAL - (PROGN - (FLAG '(COSHVAL) 'OPFN) - (DE COSHVAL (A) - (PROG (G) - (SETQ G - (AEVAL - (LIST - 'QUOTIENT - (LIST - 'PLUS - (LIST 'EXP A) - (LIST 'EXP (LIST 'MINUS A))) - 2))) - (RETURN G)))) ) -coshval(1); (AEVAL (LIST 'COSHVAL 1)) -off defn; -coshval(1); Declare COSHVAL operator? (Y or N) -n -procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; COSHVAL -on rounded; -coshval(1); 1.54308063482 - -The above function COSHVAL finds the hyperbolic cosine (cosh) of its -argument. When DEFN is on, you can see the Standard Lisp equivalent -of the function, but it is not entered into the system as shown by the -message DECLARE COSHVAL OPERATOR?. It must be reentered with DEFN off -to be recognised. This procedure is used as an example; a more -efficient procedure would eliminate the unnecessary local variable -with - procedure coshval(a); - (exp(a) + exp(-a))/2; - -\endsection -\item[DEFPOLY] -DEFPOLY statement (page 225) - -DEFPOLY is used to introduce a defining polynoimial for an algebraic -number. For example, to define an atom to stand for teh square root -of 2 one would say - - load arnum; - defpoly sqrt2^2 -2; - -This associates a simplification function for the variable and also -generates a power reduction rule used by the operations * and / for -the reduction of their result modulo the defining polynomial. A basis -for the representation of an algebraic number is also set up by the -statement. If the defining polynomial is not monic, it will be made -so by an appropriate substitution. - -\endsection -\item[DEG] -DEG (page 128) - -The operator DEG returns the highest degree of its variable argument -found in its expression argument. - - DEG(expression,kernel) - -expression is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch RATARG -is on. variable must be a Kernel. The results are returned in a -list. - -Examples: -deg((x+y)**5,x); 5 -deg((a+b)*(c+2*d)**2,d); 2 -deg(x**2 + cos(y),sin(x)); -deg((x**2 + sin(x))**5,sin(x)); 5 - -\endsection -\xitem[Degree] -Degree (page 128) - -\endsection -\xitem[DELSQ operator] -DELSQ - operator (page 234) - -\endsection -\xitem[delsq operator] -delsq operator (page 358) - -\endsection -\item[DEMO] -DEMO (page 69) - -The DEMO switch is used for interactive files, causing the system -to pause after each command in the file until you type a Return. -Default is OFF. - -The switch DEMO has no effect on top level interactive statements. -Use it when you want to slow down operations in a file so you can see -what is happening. - -You can either include the ON DEMO command in the file, or enter it -from the top level before bringing in any file. Unlike the PAUSE -command, ON DEMO does not permit you to interrupt the file for -questions of your own. - -\endsection -\item[DEN] -DEN (pages 120, 129) - -The DEN operator returns the denominator of its argument. - - DEN(expression) - -expression is ordinarily a rational expression, but may be any valid -scalar REDUCE expression. - -Examples: - 2 -a := x**3 + 3*x**2 + 12*x; A := X*(X + 3*X + 12) -b := 4*x*y + x*sin(x); B := X*(SIN(X) + 4*Y) -den(a/b); SIN(X) + 4*Y -den(aa/4 + bb/5); 20 -den(100/6); 3 -den(sin(x)); 1 - -DEN returns the denominator of the expression after it has been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression does not have any -other denominator, 1 is returned. - -Switch settings, such as MCD or RATIONAL, have an effect on the -denominator of an expression. - -\endsection -\item[DEPEND] -DEPEND (page 95) - -DEPEND declares that its first argument depends on the rest of its -arguments. - - DEPEND kernel{,kernel} - -kernel must be a legal variable name or a prefix operator (see -Kernel). - -Examples: - -depend y,x; -df(y**2,x); 2*DF(Y,X)*Y -depend z,cos(x),y; -df(sin(z),cos(x)); COS(Z)*DF(Z,COS(X)) -df(z**2,x); 2*DF(Z,X)*Z -nodepend z,y; -df(z**2,x); 2*DF(Z,X)*Z -cc := df(y**2,x); CC := 2*DF(Y,X)*Y -y := tan x; Y := TAN(X); - 2 -cc; 2*TAN(X)*(TAN(X) + 1) - -Dependencies can be removed by using the declaration NODEPEND. The -differentiation operator uses this information, as shown in the -examples above. Linear operators also use knowledge of dependencies -(see LINEAR). Note that dependencies can be nested: Having declared y -to depend on x, and z to depend on y, we see that the chain rule was -applied to the derivative of a function of z with respect to x. If -the explicit function of the dependency is later entered into the -system, terms with DF(Y,X), for example, are expanded when they are -displayed again, as shown in the last example. - -\endsection -\xitem[DEPEND statement] -DEPEND statement (page 359) - -\endsection -\xitem[DEQ(I)] -DEQ(I) (page 379) - -\endsection -\xitem[derivative variational] -derivative - variational (page 257) - -\endsection -\item[DET] -DET (pages 97, 163) - -The operator COFACTOR returns the cofactor of the element in row -row and column column of a MATRIX. Errors occur -if row or column do not evaluate to integer expressions or if -the matrix is not square. - - COFACTOR(matrix_expression,row,column) - -Examples: -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); A*R - C*P -cofactor(mat((a,b,c),(d,e,f)),1,1); ***** non-square matrix - -\endsection -\xitem[determinant] -determinant - in DETM!* (page 263) - -\endsection -\xitem[DETM!*] -DETM!* (page 263) - -\endsection -\item[DF] -DF (pages 79, 80) - -The DF operator finds partial derivatives with respect to one or -more variables. - - DF(expression,var - [,number] - {,var [ ,number] } ) - -expression can be any valid REDUCE algebraic expression. var must be -a Kernel, and is the differentiation variable. number must be a -non-negative integer. - -Examples: -df(x**2,x); 2*X - 2 -df(x**2*y + sin(y),y); COS(Y) + X - -df((x+y)**10,z); 0 - 6 -df(1/x**2,x,2); ---- - 4 - X -df(x**4*y + sin(y),y,x,3); 24*X - -for all x let df(tan(x),x) = sec(x)**2; - 2 -df(tan(3*x),x); 3*SEC(3*X) - -An error message results if a non-kernel is entered as a -differentiation operator. If the optional number is omitted, it is -assumed to be 1. See the declaration DEPEND to establish dependencies -for implicit differentiation. - -You can define your own differentiation rules, expanding REDUCE's -capabilities, using the LET command as shown in the last example -above. Note that once you add your own rule for differentiating a -function, it supersedes REDUCE's normal handling of that function for -the duration of the REDUCE session. If you clear the rule -(CLEARRULES), you don't get back to the previous rule. - -\endsection -\item[DFPRINT] -DFPRINT - -When DFPRINT is on, expressions in the differentiation operator -DF are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. In addition, if the -switch NOARG is on (the default), the arguments of the -differentiated operator are suppressed. - -Examples: -operator f; -df(f x,x); DF(F(X),X); -on dfprint; -ws; F - X -df(f(x,y),x,y); F - X,Y -off noarg; -ws; F(X,Y) - X - -\endsection -\xitem[differential geometry] -differential geometry (page 248) - -\endsection -\xitem[Differentiation] -Differentiation (pages 79, 80, 95) - -\endsection -\xitem[differentiation] -differentiation - partial (page 251) - vector (page 233) - -\endsection -\item[DIGAMMA] -DIGAMMA (page 185, 395) - -See PSI -\endsection -\item[DILOG] -DILOG (pages 76, 81, 185) - -The DILOG operator is known to the differentiation and integration -operators, but has numeric value attached only at DILOG(0). DILOG is -defined by - log(x) - dilog(x) = -int ------ dx - x-1 - - dilog(x) = -int(log(x),x)/(x-1) - -Examples: 2 2 -df(dilog(x**2),x); - (2*LOG(X )*X)/(X - 1) - -int(dilog(x),x); DILOG(X)*X - DILOG(X) + LOG(X)*X - X - 2 -dilog(0); PI /6 - -\endsection -\xitem[dimension] -dimension (page 251) - -\endsection -\xitem[Dirac gamma matrix] -Dirac gamma matrix (page 206) - -\endsection -\item[DISPLAY] -DISPLAY (page 158)) - -When given a numeric argument n, DISPLAY prints the n most recent -input statements, identified by prompt numbers. If an empty pair of -parentheses is given, or if n is greater than the current number of -statements, all the input statements since the beginning of the -session are printed. - - DISPLAY(n) or DISPLAY() - -n should be a positive integer. However, if it is a real number, the -truncated integer value is used, and if a non-numeric argument is -used, all the input statements are printed. - -The statements are displayed in upper case, with lines split at -semicolons or dollar signs, as they are in editing. If long files -have been input during the session, the DISPLAY command is slow to -format these for printing. - -\endsection -\xitem[Display] -Display (page 97) - -\endsection -\xitem[DISPLAYFRAME command] -DISPLAYFRAME command (pages 266, 271) - -\endsection -\xitem[Displaying structure] -Displaying structure (page 112) - -\endsection -\item[DIV] -DIV (pages 103, 132) - -When DIV is on, the system divides any simple factors found in the -denominator of an expression into the numerator. Default is OFF. - -Examples: - -on div; - 2 -2 -a := x**2/y**2; A := X *Y - 1 2 -2 -1 -b := a/(3*z); B := ---*X *Y *Z - 3 -off div; - 2 - X -a; ---- - 2 - Y - - 2 - X -b; -------- - 2 - 3*Y *Z - -The DIV switch only has effect when the PRI switch is on. When PRI is -off, regardless of the setting of DIV, the printing behaviour is as if -DIV were off. - -\endsection -\xitem[DIV operator] -DIV - operator (page 234) - -\endsection -\xitem[div operator] -div operator (page 358) - -\endsection -\xitem[divergence vector field] -divergence - vector field (page 234) - -\endsection -\xitem[DLINEINT] -DLINEINT (page 360) - -\endsection -\xitem[DO] -DO (pages 57--59) - -\endsection -\xitem[Dollar sign] -Dollar sign (page 53) - -\endsection -\item[DOT] -DOT product of vectors (pages 205, 233, 357) - -The . operator is used to denote the scalar product of two Lorentz -four-vectors. - vector . vector - -vector must be an identifier declared to be of type VECTOR to have -the scalar product definition. When applied to arguments that are not -vectors, the CONS operator is used, -whose symbol is also ``dot.'' - -Examples: -vector aa,bb,cc; -let aa.bb = 0; -aa.bb; 0 -aa.cc; AA.CC -q := aa.cc; Q := AA.CC -q; AA.CC - -Since vectors are special high-energy physics entities that do not -contain values, the . product will not return a true scalar product. -You can assign a scalar identifier to the result of a . operation, or -assign a . operation to have the value of the scalar you supply, as -shown above. Note that the result of a . operation is a scalar, not a -vector. - -The metric tensor g(u,v) can be represented by U.V. If contraction -over the indices is required, U and V should be declared to be of type -INDEX. - -The dot operator has the highest precedence of the infix operators, so -expressions involving . and other operators have the scalar product -evaluated first before other operations are done. - -\endsection -\xitem[Dot product] -Dot product (pages 205, 233, 357) - -\endsection -\xitem[DOTGRAD operator] -DOTGRAD operator (page 358) - -\endsection -\xitem[DVINT] -DVINT (page 360) - -\endsection -\xitem[DVOLINT] -DVOLINT (page 360) - -\endsection -\item[E] -E (page 36) - -The constant E is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch ROUNDED is on. - - -E may be used as an iterative variable in a FOR statement, -or as a local variable or a PROCEDURE. If E is defined as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. - -\endsection -\item[ECHO] -ECHO (page 153) - -The ECHO switch is normally off for top-level entry, and on when files -are brought in. If ECHO is turned on at the top level, your input -statements are echoed to the screen (thus appearing twice). Default -OFF (but note default ON for files). - - -If you want to display certain portions of a file and not others, use the -commands OFF ECHO and ON ECHO inside the file. If you want -no display of the file, use the input command - - IN filename$ - -rather than using the semicolon delimiter. - -Be careful when you use commands within a file to generate another file. -Since ECHO is on for files, the output file echoes input statements -(unlike its behaviour from the top level). You should explicitly turn off -ECHO when writing output, and turn it back on when you're done. - -\endsection -\item[ED] -ED (pages 157, 158) - -The ED command invokes a simple line editor for REDUCE input -statements. - - ED integer or ED - -ED called with no argument edits the last input statement. If integer -is greater than or equal to the current line number, an error message -is printed. Reenter a proper ED command or return to the top level -with a semicolon. - -The editor formats REDUCE's version of the desired input statement, -dividing it into lines at semicolons and dollar signs. The statement -is printed at the beginning of the edit session. The editor works on -one line at a time, and has a pointer (shown by ^) to the current -character of that line. When the session begins, the pointer is at -the left hand side of the first line. The editing prompt is >. - -The following commands are available. They may be entered in either -upper or lower case. All commands are activated by the carriage -return, which also prints out the current line after changes. Several -commands can be placed on a single line, except that commands -terminated by an Cntrl-G must be the last command before the carriage -return. - -b -Move pointer to beginning of current line. - -ddigit -Delete current character and next (digit-1) characters. An error -message is printed if anything other than a single digit follows d. -If there are fewer than digit characters left on the line, all but the -final dollar sign or semicolon is removed. To delete a line -completely, use the k command. - -e -End the current session, causing the edited expression to be reparsed by -REDUCE. - -fchar -Find the next occurrence of the character char to the right of the -pointer on the current line and move the pointer to it. If the -character is not found, an error message is printed and the pointer -remains in its original position. Other lines are not searched. The -f command is not case-sensitive. - -istring{Cntrl-G} -Insert string in front of pointer. The Cntrl-G key is your delimiter for -the input string. No other command may follow this one on the same -line. - -k -Kill rest of the current line, including the semicolon or dollar sign -terminator. If there are characters remaining on the current line, and it -is the last line of the input statement, a semicolon is added to the line -as a terminator for REDUCE. If the current line is now empty, one of the -following actions is performed: If there is a following line, it becomes -the current line and the pointer is placed at its first character. If the -current line was the final line of the statement, and there is a previous -line, the previous line becomes the current line. If the current line was -the only line of the statement, and it is empty, a single semicolon is -inserted for REDUCE to parse. - -l -Finish editing this line and move to the last previous line. An error message -is printed if there is no previous line. - -n -Finish editing this line and move to the next line. An error message is -printed if there is no next line. - -p -Print out all the lines of the statement. Then a dotted line is printed, and -the current line is reprinted, with the pointer under it. - -q -Quit the editing session without saving the changes. If a semicolon is -entered after q, a new line prompt is given, otherwise REDUCE prompts you -for another command. Whatever you type in to the prompt appearing after -the q is entered is stored as the input for the line number in which you -called the edit. Thus if you enter a semicolon, neither INPUT -ED will find anything under the current number. - -rchar -Replace the character at the pointer by char. - -sstring{Cntrl-G} -Search for the first occurrence of string to the right of the -pointer on the current line and move the pointer to its first character. -The Cntrl-G key is your delimiter for the input string. The s function -does not search other lines of the statement. If the string is not found, -an error message is printed and the pointer remains in its original -position. The s command is not case-sensitive. No other command may -follow this one on the same line. - -x or space -Move the pointer one character to the right. If the pointer is already at -the end of the line, an error message is printed. - -- (minus) -Move the pointer one character to the left. If the pointer is already at the -beginning of the line, an error message is printed. - -? -Display the Help menu, showing the commands and their actions. - -Examples: -(Line numbers are shown in the following examples) - 2 -2: x**2 + y; X + Y -3: ed 2; - X**2 + Y; - ^ -For help, type '?' -?- {(Enter three spaces and Return})} - X**2 + Y; - ^ -?- r5 - X**5 + Y; - ^ -?- fY - X**5 + Y; - ^ -?- iabc{(Terminate with Cntrl-G and Return)} - X**5 + abcY; - ^ -?- ---- - X**5 + abcY; - ^ -?- fbd2 - X**5 + aY; - ^ -?- b - X**5 + aY; - ^ 5 -?- e AY + X -4: procedure dumb(a); - write a; -DUMB -5: dumb(17); 17 -6: ed 4; - PROCEDURE DUMB (A); - ^ -WRITE A; -?- fArBn - WRITE A; - ^ -?- ibegin scalar a; a := b + 10;{space Cntrl-G and Return} - begin scalar a; a := b + 10; WRITE A; -?- f;i end {Cntrl-G Return} - begin scalar b; b := a + 10; WRITE A end; - ^ -?- p - PROCEDURE DUMB (B); - begin scalar b; b := a + 10; WRITE A end; - - - - - - - - - - - - begin scalar b; b := a + 10; WRITE A end; - ^ -?- e DUMB -7: dumb(17); 27 -8: - -Note that REDUCE reparsed the procedure DUMB and updated the -definition. - -Since REDUCE divides the expression to be edited into lines at -semicolons or dollar sign terminators, some lines may occupy more than -one line of screen space. If the pointer is directly beneath the last -line of text, it refers to the top line of text. If there is a blank -line between the last line of text and the pointer, it refers to the -second line of text, and likewise for cases of greater than two lines -of text. In other words, the entire REDUCE statement up to the next -terminator is printed, even if it runs to several lines, then the -pointer line is printed. - -You can insert new statements which contain semicolons of their own -into the current line. They are run into the current line where you -placed them until you edit the statement again. REDUCE will -understand the set of statements if the syntax is correct. - -If you leave out needed closing brackets when you exit the editor, a -message is printed allowing you to redo the edit (you can edit the -previous line number and return to where you were). If you leave out -a closing double-quotation mark, an error message is printed, and the -editing must be redone from the original version; the edited version -has been destroyed. Most syntax errors which you inadvertently leave -in an edited statement are caught as usual by the REDUCE parser, and -you will be able to re-edit the statement. - -When the editor processes a previous statement for your editing, -escape characters are removed. Most special characters that you may -use in identifiers are printed in legal fashion, prefixed by the -exclamation point. Be sure to treat the special character and its -escape as a pair in your editing. The characters ( ) # ; ' ` are -different. Since they have special meaning in Lisp, they are -double-escaped in the editor. It is unwise to use these characters -inside identifiers anyway, due to the probability of confusion. - -If you see a Lisp error message during editing, the edit has been -aborted. Enter a semicolon and you will see a new line prompt. - -Since the editor has no dependence on any window system, it can be -used if you are running REDUCE without windows. - -\endsection -\item[EDITDEF] -EDITDEF (page 159) - -The interactive editor ED may be used to edit a user-defined -procedure that has not been compiled. - - EDITDEF(identifier) - -where identifier is the name of the procedure. When EDITDEF is -invoked, the procedure definition will be displayed in editing mode, -and may then be edited and redefined on exiting from the editor using -standard ED commands. - -\endsection -\item[END] -END (page 69) - -The command END has two main uses: - -(i) as the ending of a BEGIN...END BLOCK; and -(ii) to end input from a file. - -In a BEGIN...END BLOCK, there need not be a delimiter (; or $) before -the END, though there must be one after it, or a right bracket -matching an earlier left bracket. - -Files to be read into REDUCE should end with END;, which must be -preceded by a semicolon (usually the last character of the previous -line). The additional semicolon avoids problems with mistakes in the -files. If you have suspended file operation by answering N to a PAUSE -command, you are still, technically speaking, ``in'' the file. Use END -to exit the file. - -An END at the top level of a program is ignored. - -\endsection -\item[EPS] -EPS (pages 207, 267) - -The EPS operator denotes the completely antisymmetric tensor of -order 4 and its contraction with Lorentz four-vectors, as used in -high-energy physics calculations. - - EPS(vector-expr,vector-expr,vector-expr,vector-expr) - -vector-expr must be a valid vector expression, and may be an index. - -Examples: -vector g0,g1,g2,g3; -eps(g1,g0,g2,g3); - EPS(G0,G1,G2,G3); -eps(g1,g2,g0,g3); EPS(G0,G1,G2,G3); -eps(g1,g2,g3,g1); 0 - - -Vector identifiers are ordered alphabetically by REDUCE. When an odd -number of transpositions is required to restore the canonical order to -the four arguments of EPS, the term is ordered and carries a minus -sign. When an even number of transpositions is required, the term is -returned ordered and positive. When one of the arguments is repeated, -the value 0 is returned. A contraction of the form eps(_i j mu nu -p_mu q_nu) is represented by EPS(I,J,P,Q) when I and J have been -declared to be of type INDEX. - -\endsection -\xitem[EPS Levi-Civita tensor] -EPS - Levi-Civita tensor (page 271) - -\endsection -\item[Equation] -Equation (page 47) - -An Equation is an expression where two algebraic expressions -are connected by the (infix) operator EQUAL or by =. -For access to the components of an EQUATION the operators -LHS, RHS or PART can be used. The -evaluation of the left-hand side of an EQUATION is controlled -by the switch EVALLHSEQP, while the right-hand side is -evaluated unconditionally. When an EQUATION is part of a -logical expression, e.g. in a IF or WHILE statement, -the equation is evaluated by subtracting both sides and comparing -the result with zero. - -\endsection -\item[ERF] -ERF (page 81) - -The ERF operator represents the error function, defined by - erf(x) = (2/sqrt(pi))*int(e^(-x^2),x) - -A limited number of its properties are known to the system, including -the fact that it is an odd function. Its derivative is known, and -from this, some integrals may be computed. However, a complete -integration procedure for this operator is not currently included. - -Examples: -erf(0); 0 -erf(-a); - ERF(A) - 4*SQRT(PI)*X -df(erf(x**2),x); -------------- - 4 - X - - 2 - X - E *ERF(X)*PI*X + SQRT(PI) -int(erf(x),x); ---------------------------- - 2 - X - E *PI - -\endsection -\item[ERRCONT] -ERRCONT (page 157) - -When the ERRCONT switch is on, error conditions do not stop file -execution. Error messages will be printed whether ERRCONT is on or off. -Default is OFF. - -The table below shows REDUCE behaviour under the settings of ERRCONT and -INT : - -Behaviour in Case of Error in Files - -errcont int Behaviour when errors in files are encountered - off off Message is printed and parsing continues, but - no further statements are executed; no commands - from keyboard accepted except bye or end - off on Message is printed, and you are asked if you - wish to continue. (This is the default behaviour) - on off Message is printed, and file continues to execute - without pause - on on Message is printed, and file continues to execute - without pause - - -\endsection -\xitem[ETA(ALFA)] -ETA(ALFA) (page 379) - -\endsection -\xitem[euclidean metric] -euclidean metric (page 263) - -\endsection -\item[EULER] -EULER (pages 185, 393) - -The EULER operator returns the nth Euler number. - -EULER(integer) - -Examples: -load_package specfn; (SPECFN) -Euler 20; 370371188237525 -Euler 0; 1 - -The EULER numbers are evaluated by a recursive algorithm which makes -it hard to compute Euler numbers above say 200. - -Euler numbers appear in the coefficients of the power series -representation of 1/cos(z). - -\endsection -\item[EULERP] -Euler Polynomials (page 185) - -The EULERP operator returns the nth Euler Polynomial. - -EULERP(integer,expression) - -Examples: - load_package specfn; (SPECFN) - EulerP(2,xx); XX*(XX - 1) - EulerP(10,3); 2046 - -The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. - -\endsection -\item[Euler Numbers] -Euler Numbers (pages 185, 393) - -See EULERP. -The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. - -\endsection -\item[EVAL_MODE] -EVAL_MODE (page 191) - -The constant E is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch ROUNDED is on. - - -E may be used as an iterative variable in a FOR statement, -or as a local variable or a PROCEDURE. If E is defined as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. - -\endsection -\item[EVALLHSEQP] -EVALLHSEQP (page 47) - -Under normal circumstances, the right-hand-side of an EQUATION is evaluated -but not the left-hand-side. If both sides are to be evaluated, the switch -EVALLHSEQP should be turned on. - -\endsection -\item[EVEN] -EVEN (page 90) - - EVEN identifier{,identifier} - -This declaration is used to declare an operator even in its first -argument. Expressions involving an operator declared in this manner -are transformed if the first argument contains a minus sign. Any -other arguments are not affected. - -Examples: - even f; - f(-a) F(A) - f(-a,-b) F(A,-B) - -\endsection -\xitem[Even operator] -Even operator (page 90) - -\endsection -\item[EVENP] -EVENP (page 46) - -The EVENP logical operator returns TRUE if its argument is an even -integer, and NIL if its argument is an odd integer. An error message -is returned if its argument is not an integer. - - EVENP(integer) or EVENP integer - -integer must evaluate to an integer. - -Examples: -aa := 1782; AA := 1782 -if evenp aa then yes else no; YES -if evenp(-3) then yes else no; NO - -Although you would not ordinarily enter an expression such as the last -example above, note that the negative term must be enclosed in -parentheses to be correctly parsed. The EVENP operator can only be -used in conditional statements such as IF...THEN...ELSE or WHILE...DO. - -\endsection -\item[EXCALC] -EXCALC (pages 180, 247) - -Author: Eberhard Schruefer - -The EXCALC package is designed for easy use by all who are familiar -with the calculus of Modern Differential Geometry. The program is currently -able to handle scalar-valued exterior forms, vectors and operations between -them, as well as non-scalar valued forms (indexed forms). It is thus an ideal -tool for studying differential equations, doing calculations in general -relativity and field theories, or doing simple things such as calculating the -Laplacian of a tensor field for an arbitrary given frame. - -\endsection -\xitem[Exclamation mark] -Exclamation mark (page 33) - -\endsection -\xitem[EXCLUDE] -EXCLUDE (page 368) - -\endsection -\xitem[EXDEGREE] -EXDEGREE (page 271) - -\endsection -\xitem[EXDEGREE command] -EXDEGREE command (page 249) - -\endsection -\item[EXP] -EXP (operator and switch) (pages 76, 78, 81, 120, 124) - -The EXP operator returns E raised to the power of its argument. - - EXP(expression) or EXP simple_expression - -expression can be any valid REDUCE scalar expression. -simple_expression must be a single identifier or begin with a -prefix operator. - -Examples: - SIN X -exp(sin(x)); E - 11 -exp(11); E -on rounded; -exp sin(pi/3); 2.37744267524 - -Numeric values are returned only when ROUNDED is on. The single -letter E with the exponential operator ^ or ** may be substituted for -EXP without change of function. - -EXP switch - -When the EXP switch is on, powers and products of expressions are -expanded. Default is ON. - -Examples: 3 2 -(x+1)**3; X + 3*X + 3*X + 1 -(a + b*i)*(c + d*i); A*C + A*D*I + B*C*I - B*D -off exp; 3 -(x+1)**3; (X + 1) -(a + b*i)*(c + d*i); (A + B*I)*(C + D*I) -length((x+1)**2/(y+1)); 2 - - -Note that REDUCE knows that i^2 = -1. When EXP is off, equivalent -expressions may not simplify to the same form, although zero -expressions still simplify to zero. Several operators that expect a -polynomial argument behave differently when EXP is off, such as -LENGTH. Be cautious about leaving EXP off. - - -\endsection -\item[EXPAND_CASES] -EXPAND_CASES (page 86) - -When a ROOT_OF form in a result of SOLVE has been converted to a -ONE_OF form, EXPAND_CASES can be used to convert this into form -corresponding to the normal explicit results of SOLVE. See ROOT_OF. - -\endsection -\item[EXPANDLOGS] -EXPANDLOGS (page 77) - -In many cases it is desirable to expand product arguments of -logarithms, or collect a sum of logarithms into a single logarithm. -Since these are inverse operations, it is not possible to provide -rules for doing both at the same time and preserve the REDUCE concept -of idempotent evaluation. As an alternative, REDUCE provides two -switches EXPANDLOGS and COMBINELOGS to carry out these operations. -Both are off by default. - -Examples: - on expandlogs; - log(x*y); LOG(X) + LOG(Y) - on combinelogs; - ws; LOG(X*Y) - -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behaviour, since it may change in the next release. - -\endsection -\item[EXPINT] -EXPINT (page 76) - -The EXPINT operator represents the exponential integral defined by: - - expint(x) = int(e^x,x)/x - -A limited number of its properties are known to the system, including -its derivative. From this, some integrals may be computed. However, -a complete integration procedure for this operator is not currently -included. - -Examples: -expint(0); EXPINT(0) - 2 - X - 2*E -df(expint(x**2),x); ------- - X - X -int(expint(x),x); EXPINT(X)*X - E - -\endsection -\xitem[EXPR] -EXPR (page 196) - -\endsection -\xitem[Expression] -Expression (page 43) - -\endsection -\item[exterior calc] -exterior calculus (page 248) - -See the EXCALC package - -\endsection -\item[exterior df] -exterior differentiation (page 252) - -See the EXCALC package - -\endsection -\xitem[exterior form] -exterior form - declaration (page 249) - vector (page 249) - with indices (pages 249, 259) - -\endsection -\xitem[exterior product] -exterior product (pages 250, 269) - -\endsection -\item[EZGCD] -EZGCD (page 124) - -When EZGCD and GCD are on, greatest common divisors are -computed using the EZ GCD algorithm that uses modular arithmetic (and is -usually faster). Default is OFF. - - -As a side effect of the gcd calculation, the expressions involved are -factored, though not the heavy-duty factoring of FACTORIZE. The -EZ GCD algorithm was introduced in a paper by J. Moses and D.Y.Y. Yun in -Proceedings of the ACM, 1973, pp. 159-166. - -Note that the GCD switch must also be on for EZGCD to have -effect. - -\endsection -\item[FACTOR] -FACTOR (Declaration and Switch) (pages 101, 121, 122) - -When a kernel is declared by FACTOR, all terms involving fixed powers -of that kernel are printed as a product of the fixed powers and the -rest of the terms. - - FACTOR kernel {,kernel} - -kernel must be a Kernel. - -Examples: 2 2 2 -a := (x + y + z)**2; A := X + 2*X*Y + 2*X*Z + Y + 2*Y*Z + Z -factor y; 2 2 2 -a; Y + 2*Y*(X + Z) + X + 2*X*Z + Z -factor sin(x); 4 3 2 -c := df(sin(x)**4*x**2*z,x); C := 2*SIN(X) *X*Z + 4*SIN(X) *COS(X)*X *Z -remfac sin(x); 3 -c; 2*SIN(X) *X*Z*(2*COS(X)*X + SIN(X)) - -Use the FACTOR declaration to display variables of interest so that -you can see their powers more clearly, as shown in the example. -Remove this special treatment with the declaration REMFAC. The FACTOR -declaration is only effective when the switch PRI is on. - -The FACTOR declaration is not a factoring command; to factor -expressions use the FACTOR switch or the FACTORIZE command. - -FACTOR (switch) - -When the FACTOR switch is on, input expressions and results are -automatically factored. - -Examples: - -on factor; -aa := 3*x**3*a + 6*x**2*y*a + 3*x**3*b + 6*x**2*y*b -+ x*y*a + 2*y**2*a + x*y*b + 2*y**2*b; - 2 - AA := (A + B)*(3*X + Y)*(X + 2*Y) -off factor; -aa; - 3 2 2 3 2 2 - 3*A*X + 6*A*X *Y + A*X*Y + 2*A*Y + 3*B*X + 6*B*X *Y + B*X*Y + 2*B*Y -on factor; - 2 -ab := x**2 - 2; AB := X - 2 - -REDUCE factors univariate and multivariate polynomials with integer -coefficients, finding any factors that also have integer coefficients. -The factoring is done by reducing multivariate problems to univariate -ones with symbolic coefficients, and then solving the univariate ones -modulo small primes. The results of these calculations are merged to -determine the factors of the original polynomial. The factoriser -normally selects evaluation points and primes using a random number -generator. Thus, the detailed factoring behaviour may be different -each time any particular problem is tackled. - -When the FACTOR switch is turned on, the EXP switch is turned off, and -when the FACTOR switch is turned off, the EXP switch is turned on, -whether it was on previously or not. - -When the switch TRFAC is on, informative messages are generated at -each call to the factoriser. The TRALLFAC switch causes the -production of a more verbose trace message. It takes precedence over -TRFAC if they are both on. - -To factor a polynomial explicitly and store the results, use the operator -FACTORIZE. - -\endsection -\item[FACTORIAL] -FACTORIAL (pages 72, 174) - -FACTORIAL(expression) - -If the argument of FACTORIAL is a positive integer or zero, its -factorial is returned. Otherwise the result is expressed in terms of -the original operator. For more general operations, the GAMMA -operator is available in the SPECFN package. - -Examples: -factorial 4; 24 -factorial 30 ; 265252859812191058636308480000000 -factorial(a) ; FACTORIAL(A) - -\endsection -\item[Factorization] -Factorization (page 121) - -Operations for factorising expressions exist in REDUCE. See the -operator FACTORIZE and the switch FACTOR. - -The command FACTOR controls output format. - -\endsection -\item[FACTORIZE] -FACTORIZE (pages 121, 122) - -The FACTORIZE operator factors a given expression. - - FACTORIZE(expression) - -expression should be a polynomial, otherwise an error will result. - -Examples: - 2 2 -fff := factorize(x^3 - y^3); FFF := {X - Y,X + X*Y + Y } -fac1 := first fff; FAC1 := X - Y -factorize(x^15 - 1); {X - 1, - - 2 - X + X + 1, - - 4 3 2 - X + X + X + X + 1, - - 8 7 5 4 3 - X - X + X - X + X - X + 1} - - 8 7 5 4 3 -lastone := part(ws,length ws); lastone := x - x + x - x + x - x + 1 -setmod 2; 1 -on modular; -factorize(x^15 - 1); {X + 1, - - 2 - X + X + 1, - - 4 - X + X + 1, - - 4 3 - X + X + 1, - - 4 3 2 - X + X + X + X + 1} - -The FACTORIZE command returns the factors it finds as a LIST. You can -therefore use the usual list access methods (FIRST, SECOND, THIRD, -REST, LENGTH and PART) to extract the factors. - -If the expression given to FACTORIZE is an integer, it will be -factored into its prime components. To factor any integer factor of a -non-numerical expression, the switch IFACTOR should be turned on. Its -default is off. IFACTOR has effect only when factoring is explicitly -done by FACTORIZE, not when factoring is automatically done with the -FACTOR switch. If full factorisation is not needed the switch -LIMITEDFACTORS allows you to reduce the computing time of calls to -FACTORIZE. - -Factoring can be done in a modular domain by calling FACTORIZE when -MODULAR is on. You can set the modulus with the SETMOD command. The -last example above shows factoring modulo 2. - -For general comments on factoring, see comments under the switch -FACTOR. - -\endsection -\item[FAILHARD] -FAILHARD - -When the FAILHARD switch is on, the integration operator INT terminates -with an error message if the integral cannot be done in closed terms. -Default is off. - -Use the FAILHARD switch when you are dealing with complicated integrals -and want to know immediately if REDUCE was unable to handle them. The -integration operator sometimes returns a formal integration form that is -more complicated than the original expression, when it is unable to -complete the integration. - -\endsection -\xitem[Fast loading of code] -Fast loading of code (page 214) - -\endsection -\xitem[FDOMAIN command] -FDOMAIN command (pages 251, 271) - -\endsection -\xitem[FEXPR] -FEXPR (page 196) - -\endsection -\xitem[File handling] -File handling (page 153) - -\endsection -\item[FIRST] -FIRST (page 50) - -The FIRST operator returns the first element of a LIST. - FIRST(list) or FIRST list - -list must be a non-empty list to avoid an error message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -first alist; A -blist := {x,y,{ww,aa,qq},z}; BLIST := {X,Y,{WW,AA,QQ},Z} -first third blist; WW - -\endsection -\item[FIRSTROOT] -FIRSTROOT (page 370) - - FIRSTROOT(expression) - FIRSTROOT simple_exprerssion - -FIRSTROOT is like ROOTS but only the first root determined by ROOTS is -computed. Note that this is not in general the first root that would -be listed in ROOTS output, since the ROOTS outputs are sorted into a -canonical order. Also, in some difficult root finding cases, the -first root computed might be incorrect. - -\endsection -\item[FIX] -FIX (page 73) - FIX(expression) - -The operator FIX returns the integer part of its argument, if that -argument has a numerical value. For positive numbers, this is equivalent -to FLOOR, and, for negative numbers, CEILING. For -non-numeric arguments, the value is an expression in the original operator. - -Examples: -fix 3.4; 3 -floor 3.4; 3 -ceiling 3.4; 4 -fix(-5.2); -5 -floor(-5.2); -6 -ceiling(-5.2); -5 -fix(a); FIX(A) - -\endsection -\item[FIXP] -FIXP (page 46) - -The FIXP logical operator returns true if its argument is an integer. - - FIXP(expression) or FIXP simple_expression - -expression can be any valid REDUCE expression, simple_expression -must be a single identifier or begin with a prefix operator. - -Examples: -if fixp 1.5 then write "ok" else write "not"; not -if fixp(a) then write "ok" else write "not"; not -a := 15; A := 15 -if fixp(a) then write "ok" else write "not"; ok - -Logical operators can only be used inside conditional expressions such as -IF...THEN or WHILE...DO. - -\endsection -\item[FLOOR] -FLOOR (page 73) - - FLOOR(expression) - -This operator returns the floor (i.e., the greatest integer less than -or equal to its argument) if its argument has a numerical value. For -positive numbers, this is equivalent to FIX. For non-numeric -arguments, the value is an expression in the original operator. - -Examples: -floor 3.4; 3 -fix 3.4; 3 -floor(-5.2); -6 -fix(-5.2); -5 -floor a; FLOOR(A) - -\endsection -\item[FOR] -FOR (page 65) - -The FOR command is used for iterative loops. There are many -possible forms it can take. - - / \ - / |STEP UNTIL| \ - |:=| || -FOR| | : | | - | \ / | - |EACH IN | - \ / - - where ::= DO|PRODUCT|SUM|COLLECT|JOIN. - -var can be any valid REDUCE identifier except T or NIL, inc, start and -stop can be any expression that evaluates to a positive or negative -integer. list must be a valid LIST structure. The action taken must -be one of the actions shown above, each of which is followed by a -single REDUCE expression, statement or a GROUP (<<...>>) or BLOCK -(BEGIN...END) statement. - -Examples: -for i := 1:10 sum i; 55 -for a := -2 step 3 until 6 product a; - -8 -a := 3; A := 3 -for iter := 4:a do write iter; -m := 0; M := 0 -for s := 10 step -1 until 3 do - <>; -m; 520 - 2 2 2 -for each x in {q,r,s} sum x**2; Q + R + S - 1 1 1 -for i := 1:4 collect 1/i; {1,---,---,---} - 2 3 4 - -for i := 1:3 join list solve(x**2 + i*x + 1,x); - SQRT(3)*I - 1 - {{X=---------------, - 2 - - - (SQRT(3)*I + 1) - X=--------------------}, - 2 - - {X=-1}, - - SQRT(5) - 3 - SQRT(5) - 3 - {X=-------------,X=----------------}} - 2 2 - -The behaviour of each of the five action words follows: - - Action Word Behaviour -Keyword Argument Type Action - do statement, command, group Evaluates its argument once - or block for each iteration of the loop, - not saving results -collect expression, statement, Evaluates its argument once for - command, group, block, list each iteration of the loop, - storing the results in a list - which is returned by the for - statement when done - join list or an operator which Evaluates its argument once for - produces a list each iteration of the loop, - appending the elements in each - individual result list onto the - overall result list -product expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - multiplying the results together - and returning the overall product - sum expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - adding the results together and - returning the overall sum - -For number-driven FOR statements, if the ending limit is smaller than -the beginning limit (larger in the case of negative steps) the action -statement is not executed at all. The iterative variable is local to -the FOR statement, and does not affect the value of an identifier with -the same name. For list-driven FOR statements, if the list is empty, -the action statement is not executed, but no error occurs. - -You can use nested FOR statements, with the inner FOR statement after -the action keyword. You must make sure that your inner statement -returns an expression that the outer statement can handle. - -\endsection -\item[FORALL] -FORALL (pages 141, 142) - -See the LET construction. - -\endsection -\item[FOREACH] -FOREACH (page 57--59, 195) - -FOREACH is a synonym for the FOR EACH variant of the -FOR construct. It is designed to iterate down a list, and an -error will occur if a list is not used. The use of FOR EACH is -preferred to FOREACH. - - FOREACH variable in list action expression - where action ::= DO|PRODUCT|SUM|COLLECT|JOIN - -Example: - 2 2 2 -foreach x in {q,r,s} sum x**2; Q + R + S - -\endsection -\xitem[FORDER command] -FORDER command (pages 268, 271) - -\endsection -\item[FORT] -FORT (page 108) - -When FORT is on, output is given Fortran-compatible syntax. Default -is OFF. - -Examples: -on fort; -df(sin(7*x + y),x); ANS=7.*COS(7*X+Y) -on rounded; -b := log(sin(pi/5 + n*pi)); B=LOG(SIN(3.14159265359*N+0.628318530718)) - -REDUCE results can be written to a file (using OUT) and used as data -by Fortran programs when FORT is in effect. FORT knows about correct -statement length, continuation characters, defining a symbol when it -is first used, and other Fortran details. - -The GENTRAN package offers many more possibilities than the FORT -switch. It produces Fortran (or C or Ratfor) code from REDUCE -procedures or structured specifications, including facilities for -producing double precision output. - -\endsection -\item[FORT_WIDTH] -FORT_WIDTH (page 111) - -The FORT_WIDTH variable sets the number of characters in a line of -Fortran-compatible output produced when the FORT switch is on. -Default is 70. - -Examples: -fort_width := 30; FORT_WIDTH := 30 -on fort; -df(sin(x**3*y),x); ANS=3.*COS(X - . **3*Y)*X**2* - . Y - -FORT_WIDTH includes the usually blank characters at the beginning -of the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. - -\endsection -\item[FORTRAN] -FORTRAN (pages 108, 110) - -REDUCE can produce FORTRAN syntax printed expressions with the switch - ON FORT - -There are also two major packages concerned with generating FORTRAN, -GENTRAN and SCOPE. The first of these is an embedded language for -defining FORTRAN program fragments or program units, with parts -substituted from algebraic calculation. SCOPE is a system for -optimising the form of FORTRAN expressions, usually used in -conjunction with GENTRAN. - -\endsection -\xitem[FRAME command] -FRAME command (pages 265, 271) - -\endsection -\item[FREEOF] -FREEOF (page 46) -The FREEOF logical operator returns TRUE if its first argument does -not contain its second argument anywhere in its structure. - - FREEOF(expression,kernel) or expression FREEOF kernel - -expression can be any valid scalar REDUCE expression, kernel must -be a kernel expression (see Kernel). - -Examples: 2 -a := x + sin(y)**2 + log sin z; A := LOG(SIN(Z)) + SIN(Y) + X -if freeof(a,sin(y)) - then write "free" else write "not free"; - not free -if freeof(a,sin(x)) - then write "free" else write "not free"; - free -if a freeof sin z - then write "free" else write "not free"; - not free - -Logical operators can only be used in conditional expressions such as -IF...THEN or WHILE...DO. - -\endsection -\item[FULLPREC] -FULLPREC - -Trailing zeroes of rounded numbers to the full system precision are -normally not printed. If this information is needed, for example to get a -more understandable indication of the accuracy of certain data, the switch -FULLPREC can be turned on. - -Examples: - on rounded; - 1/2; 0.5 - on fullprec; - ws; 0.500000000000 - -This is just an output options which neither influences the accuracy -of the computation nor does it give additional information about the -precision of the results. See also SCIENTIFIC_NOTATION. - -\endsection -\item[FULLROOTS] -FULLROOTS (page 87) - -Since roots of cubic and quartic polynomials can often be very -messy, a switch FULLROOTS controls the production -of results in closed form. SOLVE will apply the -formulas for explicit forms for degrees 3 and 4 only if -FULLROOTS is ON. Otherwise the result forms -are built using ROOT_OF. Default is OFF. - -\endsection -\xitem[Function] -Function (page 175) - -\endsection -\item[G] -G (page 206) - -G is an n-ary operator used to denote a product of gamma matrices -contracted with Lorentz four-vectors, in high-energy physics. - G(identifier,vector-expr -{,vector-expr}) - -identifier is a scalar identifier representing a fermion line -identifier, vector-expr can be any valid vector expression, -representing a vector or a gamma matrix. - -Examples: -vector aa,bb,cc; -vector a; -g(line1,aa,bb); AA.BB -g(line2,aa,a); 0 -g(id,aa,bb,cc); 0 -g(li1,aa,bb) + k; AA.BB + K -let aa.bb = m*k; -g(ln1,aa)*g(ln1,bb); K*M -g(ln1,aa)*g(ln2,bb); 0 - -The vector A is reserved in arguments of G to denote the special gamma -matrix gamma_5. It must be declared to be a vector before you use it. - -Gamma matrix expressions are associated with fermion lines in a -Feynman diagram. If more than one line occurs in an expression, the -gamma matrices involved are separate (operating in independent spin -space), as shown in the last two example lines above. A product of -gamma matrices associated with a single line can be entered either as -a single G command with several vector arguments, or as products of -separate G commands each with a single argument. - -While the product of vectors is not defined, the product, sum and -difference of several gamma expressions are defined, as is the product -of a gamma expression with a scalar. If an expression involving gamma -matrices includes a scalar, the scalar is treated as if it were the -product of itself with a unit 4 x 4 matrix. - -Dirac expressions are evaluated by computing the trace of the -expression using the commutation algebra of gamma matrices. The -algorithms used are described in articles by J. S. R. Chisholm in Il -Nuovo Cimento X, Vol. 30, p. 426, 1963, and J. Kahane, Journal of -Mathematical Physics, Vol. 9, p. 1732, 1968. The trace is then -divided by 4 to distinguish between the trace of a scalar and the -trace of an expression that is the product of a scalar with a unit 4 x -4 matrix. - -Trace calculations may be prevented over any line identifier by -declaring it to be NOSPUR. If it is later desired to evaluate these -traces, the declaration can be undone with the SPUR declaration. - -The notation of Bjorken and Drell, Relativistic Quantum Mechanics, -1964, is assumed in all operations involving gamma matrices. For an -example of the use of G in a calculation, see the REDUCE -User's Manual. - -\endsection -\item[GAMMA] -GAMMA (pages 185, 394) - -The GAMMA operator returns the Gamma function. - - GAMMA(expression) - -Examples: - load_package specfn; (SPECFN) - gamma(10); 362880 - gamma(1/2); SQRT(PI) - -\endsection -\item[Gamma Function] -Gamma Function (pages 185, 394) - -See GAMMA. - -\endsection -\item[GC] -GC - -With the GC switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. - -See RECLAIM for an explanation of garbage collection. REDUCE does -garbage collection when needed even if you have turned the notices off. - -\endsection -\item[GCD] -GCD (operator and switch) (pages 123, 124) - -The GCD operator returns the greatest common divisor of two -polynomials. - - GCD(expression,expression) - -expression must be a polynomial (or integer), otherwise an error -occurs. - -Examples: -gcd(2*x**2 - 2*y**2,4*x + 4*y); 2*(X + Y) -gcd(sin(x),x**2 + 1); 1 -gcd(765,68); 17 - -The operator GCD described here provides an explicit means to find the -gcd of two expressions. The switch GCD described below simplifies -expressions by finding and cancelling gcd's at every opportunity. When -the switch EZGCD is also on, gcd's are figured using the EZ GCD -algorithm, which is usually faster. - -GCD switch - -With the GC switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. - - -See RECLAIM for an explanation of garbage collection. REDUCE does -garbage collection when needed even if you have turned the notices off. - -\endsection -\item[GDIMENSION] -GDIMENSION (page 300) - - GDIMENSION(bas[,vars]) - -where bas is a GROEBNER basis in the current term order which must be -LEX term order (see IDEAL parameters). GDIMENSION computes the -dimension of the ideal spanned by the given basis. - -GDIMENSION cannot be called with other TERM orders. - -\endsection -\item[GEGENBAUERP] -GEGENBAUERP (page 185) - -The GEGENBAUERP operator computes Gegenbauer's (ultraspherical) -polynomials. - - GEGENBAUERP(integer,expression,expression) - -Examples: - load_package specfn; (SPECFN) - 2 - GegenbauerP(3,2,xx); 4*XX*(8*XX - 3) - - GegenbauerP(3,2,4); 2000 - -\endsection -\xitem[GEN(I)] -GEN(I) (page 379) - -\endsection -\xitem[Generalized Hypergeometric functions] -Generalized Hypergeometric functions (page 187) - -\endsection -\item[GENTRAN] -GENTRAN (page 180) - -Author: Barbara L. Gates - -This package is an automatic code GENerator and TRANslator. It constructs -complete numerical programs based on sets of algorithmic specifications and -symbolic expressions. Formatted FORTRAN, RATFOR or C code can be generated -through a series of interactive commands or under the control of a template -processing routine. Large expressions can be automatically segmented into -subexpressions of manageable size, and a special file-handling mechanism -maintains stacks of open I/O channels to allow output to be sent to any -number of files simultaneously and to facilitate recursive invocation of the -whole code generation process. - -\endsection -\xitem[GETCSYSTEM command] -GETCSYSTEM command (page 235) - -\endsection -\xitem[GETROOT] -GETROOT (page 370) - -\endsection -\xitem[GFNEWT] -GFNEWT (page 371) - -\endsection -\xitem[GFROOT] -GFROOT (page 371) - -\endsection -\item[GINDEPENDENT_SETS] -GINDEPENDENT_SETS (page 300) - - GINDEPENDENT_SETS(bas[,vars]) - -where bas is a GROEBNER basis in LEX term order (which must be the -current TERM order) with the specified variables (see IDEAL -parameters). - -GINDEPENDENT_SETS computes the maximal left independent variable sets -of the ideal, that are the variable sets which play the role of free -parameters in the current ideal basis. Each set is a list which is a -subset of the variable list. The result is a list of these sets. For -an ideal with dimension zero the list is empty. The -Kredel-Weispfenning algorithm is used. - -The operator cannot be called under another TERM order. - -\endsection -\xitem[GL(I)] -GL(I) (page 379) - -\endsection -\item[GLEXCONVERT] -GLEXCONVERT (page 300) - - GLEXCONVERT(bas[,vars][,MAXDEG=mx][,NEWVARS=nv]) - -where bas is a GROEBNER basis in the current term order, mx (optional) -is a positive integer and nvl (optional) is a list of variables (see -IDEAL parameters). - -The operator GLEXCONVERT converts the basis of a zero-dimensional -ideal (finite number of isolated solutions) from arbitrary ordering -into a basis under LEX term order. - -The parameter newvars defines the new variable sequence. If omitted, -the original variable sequence is used. If only a subset of variables -is specified here, the partial ideal basis is evaluated. - -If newvars is a list with one element, the minimal UNIVARIATE -polynomial is computed. - -maxdeg is an upper limit for the degrees. The algorithm stops with an -error message, if this limit is reached. - -A warning occurs, if the ideal is not zero dimensional. - -During the call the TERM order of the input basis must be active. - -\endsection -\item[GLTBASIS] -GLTBASIS (pages 299, 303) - -If GLTBASIS set on, the leading terms of the result basis of a -GROEBNER or GROEBNERF calculation are extracted. They are collected as -a basis of monomials, which is available as value of the global -variable GLTB. - -\endsection -\xitem[GNUPLOT] -GNUPLOT (page 181) - -\endsection -\xitem[GO TO] -GO TO (page 63) - -\endsection -\item[GosperAlg] -Gosper's Algorithm (page 403) - -See SUM and PROD. - -\endsection -\xitem[GRAD operator] -GRAD - operator (page 234) - -\endsection -\xitem[grad operator] -grad operator (page 358) - -\endsection -\xitem[gradient vector field] -gradient - vector field (page 234) - -\endsection -\item[GRADLEX] -GRADLEX (page 293) - -The terms are ordered first with their total degree, and if the total -degree is identical the comparison is LEX term order. With Groebner -basis calculations this term order produces polynomials of lowest -degree. - -\endsection -\item[GRADLEXGRADLEX] -GRADLEXGRADLEX - -The terms are separated into two groups where the second parameter of -the TORDER call determines the length of the first group. For a -comparison first the total degrees of both variable groups are -compared. If both are equal GRADLEX term order comparison is applied -to the first group, and if that does not decide GRADLEX term order is -applied for the second group. This order has the elimination property -for the variable groups. It can be used e.g. for separating variables -from parameters. The terms are ordered first with their total degree, -and if the total degree is identical the comparison is LEX term order. -With Groebner basis calculations this term order produces polynomials -of lowest degree. - -\endsection -\item[GREDUCE] -GREDUCE (page 307) - - GREDUCE(exp, exp1, exp2, ... , expm}[,vars]) - -where exp is an expression, and {exp1, exp2, ... , expm} is a list of -expressions or equations and vars is an optional list of variables -(see IDEAL parameters). - -GREDUCE is functionally equivalent with a call to GROEBNER and then a -call to PREDUCE. - -\endsection -\item[GROEBFULLREDUCTION] -GROEBFULLREDUCTION (page 298) - -If GROEBFULLREDUCTION set off, the polynomial reduction steps during -GROEBNER and GROEBNERF are limited to the pure head term reduction; -subsequent terms are reduced otherwise. - -By default GROEBFULLREDUCTION is on. - -\endsection -\item[GROEBMONFAC] -GROEBMONFAC (page 304) - -The variable GROEBMONFAC is connected to the handling of monomial -factors. A monomial factor is a product of variable powers as a -factor, e.g. x**2*y in x**3*y - 2*x**2*y**2. A monomial factor -represents a solution of the type x = 0 or y = 0 with a certain -multiplicity. With GROEBNERF the multiplicity of monomial factors is -lowered to the value of the shared variable GROEBMONFAC which by -default is 1 (= monomial factors remain present, but their -multiplicity is brought down). With GROEBMONFAC:= 0 the monomial -factors are suppressed completely. - -\endsection -\item[GROEBNER] -GROEBNER (pages 181, 296) - - GROEBNER({exp, ...}[,{var, ...}]) - -where {exp, ... } is a list of expressions or equations, {var, ... } -is an optional list of variables (see IDEAL PARAMETERS). - -The operator GROEBNER implements the Buchberger algorithm for -computing Groebner bases for a given set of expressions with respect -to the given set of variables in the order given. As a side effect, -the sequence of variables is stored as a REDUCE list in the shared -variable GVARSLAST - this is important in cases where the algorithm -rearranges the variable sequence because GROEBOPT is ON. - -Example: - - groebner({x**2+y**2-1,x-y}) {X - Y,2*Y**2 -1} - -See also GROEBNERF, GVARSLAST, GROEBOPT, GROEBPREREDUCE, -GROEBFULLREDUCTION, GLTBASIS, GLTB, GLTERMS, GROEBSTAT, TRGROEB, -TRGROEBS, GROEBPROT, GROEBPROTFILE, GROEBNERT. - -\endsection -\item[Groebner_Bases] -Groebner Bases (page 291) - -The GROEBNER package calculates Groebner bases using the Buchberger -algorithm and provides related algorithms for arithmetic with ideal -bases, such as ideal quotients, Hilbert polynomials, basis conversion, -independent variable set. - -Some routines of the Groebner package are used by SOLVE -- in -that context the package is loaded automatically. However, if you -want to use the package by explict calls you must load it by - - load_package groebner; - -For the common parameter setting of most operators in this package -see IDEAL PARAMETERS. - -\endsection -\item[GROEBNERF] -GROEBNERF (pages 302, 304, 318) - - GROEBNERF({exp, ...}[,{var, ...}] [,{nz, ... }]); - -where {exp, ... } is a list of expressions or equations, {var, ...} is -an optional list of variables (see IDEAL parameters) and {nz,... } is -an optional list of polynomials to be considered as non zero for this -calculation. - -GROEBNERF tries to separate polynomials into individual factors and to -branch the computation in a recursive manner (factorization tree). -The result is a list of partial Groebner bases. Multiplicities (one -factor with a higher power, the same partial basis twice) are deleted -as early as possible in order to speed up the calculation. - -The third parameter of GROEBNERF declares some polynomials -nonzero. If any of these is found in a branch of the calculation -the branch is canceled. - -Example: - -groebnerf({ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3, - 2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3, - x**3*y+x**2*y+3*x**3+2*x**2 }, {y,x}); - - {{Y - 3,X}, - - 2 - {2*Y + 2*X - 1,2*X - 5*X - 5}} - -See also GROEBRESMAX, GROEBMONFAC, GROEBRESTRICTION, GROEBNER, -GVARSLAST, GROEBOPT, GROEBPREREDUCE, GROEBFULLREDUCTION, GLTBASIS, -GLTB, GLTERMS, GROEBSTAT, TRGROEB, TRGROEBS, GROEBNERT. - -\endsection -\item[GROEBNERT] -GROEBNERT (page 311) - - GROEBNERT(v}=exp,...}[,vars]) - -where v are KERNELS (simple or indexed variables), exp are polynomials -and optional vars are variables (see IDEAL parameters). - -GROEBNERT is functionally equivalent to a GROEBNER call for {exp,...}, -but the result is a set of equations where the left-hand sides are the -basis elements while the right-hand sides are the same values -expressed as combinations of the input formulas, expressed in terms of -the names v. - -Example: - - groebnert({p1=2*x**2+4*y**2-100,p2=2*x-y+1}); - - GB1 := {2*X - Y + 1=P2, - - 2 - 9*Y - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2} - - -\endsection -\item[GROEBOPT] -GROEBOPT (pages 298, 303) - -If GROEBOPT is set ON, the sequence of variables is optimized with -respect to execution speed of GROEBNER calculations; note that the -final list of variables is available in GVARSLAST. By default -GROEBOPT is off, conserving the original variable sequence. - -An explicitly declared dependency using the DEPEND declaration -superseeds the variable optimization. - -Example: - - depend a, x, y; - -guarantees that a will be placed in front of x and y. - -\endsection -\item[GROEBPREREDUCE] -GROEBPREREDUCE (pages 298, 303) - -If GROEBPREREDUCE set ON, GROEBNER and GROEBNERF try to simplify the -input expressions: if the head term of an input expression is a -multiple of the head term of another expression, it can be reduced; -these reductions are done cyclicly as long as possible in order to -shorten the main part of the algorithm. - -By default GROEBPREREDUCE is off. - -\endsection -\item[GROEBPROT] -GROEBPROT (page 309) - -If GROEBPROT is ON the computation steps during PREDUCE, GREDUCE and -GROEBNER are collected in a list which is assigned to the variable -GROEBPROTFILE. - -\endsection -\item[GROEBPROTFILE] -GROEBPROTFILE (page 309) - -If GROEBPROT is ON the computation steps during PREDUCE, GREDUCE and -GROEBNER are collected in a list which is assigned to the variable -GROEBPROTFILE. - -\endsection -\xitem[GROEBRES] -GROEBRES (page 304) - -\endsection -\item[GROEBRESMAX] -GROEBRESMAX (page 305) - -The variable GROEBRESMAX controls during GROEBNERF calculations the -number of partial results. Its default value is 300. If more partial -results are calculated, the calculation is terminated. - -\endsection -\item[GROEBRESTRICTION] -GROEBRESTRICTION (page 306) - -During GROEBNERF calculations irrelevant branches can be excluded by -setting the variable GROEBRESTRICTION. The following restrictions are -implemented: - - GROEBRESTRICTION := NONNEGATIVE - GROEBRESTRICTION := POSITIVE - -With NONNEGATIVE branches are excluded where one polynomial has no -nonnegative real zeros; with POSITIVE the restriction is sharpened to -positive zeros only. - -\endsection -\item[GROEBSTAT] -GROEBSTAT (pages 299, 303) - -If GROEBSTAT is on, a summary of the GROEBNER or GROEBNERF computation -is printed at the end including the computing time, the number of -intermediate H polynomials and the counters for the criteria hits. - -\endsection -\xitem[GROEPOSTPROC] -GROEPOSTPROC (page 319) - -\endsection -\xitem[GROESOLVE] -GROESOLVE (page 318) - -\endsection -\xitem[Group statement] -Group statement (pages 55, 56, 61) - -\endsection -\xitem[grouped ordering] -grouped ordering (page 315) - -\endsection -\item[GSORT] -GSORT (page 322) - - GSORT(p[,vars]) - -where p is a polynomial or a list of polynomials, vars in an optional -list of variables (see IDEAL parameters). - -The polynomials are reordered and sorted corresponding to the current -TERM order. - -Example: - - torder lex; - 2 2 - gsort(x**2+2x*y+y**2,{y,x}); {Y + 2 * Y * X + X } - -\endsection -\item[GSPLIT] -GSPLIT (page 323) - - GSPLIT(p[,vars]); - -where p is a polynomial or a list of polynomials, vars in an optional -list of variables (see IDEAL parameters). - -The polynomial is reordered corresponding to the the current TERM -order and then separated into leading term and reductum. Result is a -list with the leading term as first and the reductum as second -element. - -Example: - - torder lex; - 2 2 - gsplit(x**2+2x*y+y**2,{y,x}); {Y , 2*Y*X + X } - -\endsection -\item[GSPOLY] -GSPOLY (page 324) - - GSPOLY(p1,p2[,vars]); - -where p1 and p2 are polynomials, vars in an optional list of variables -(see IDEAL parameters). - -The SUBTRACTION polynomial of p1 and p2 is computed corresponding to -the method of the Buchberger algorithm for computing GROEBNER bases: -p1 and p2 are multiplied with terms such that when subtracting them -the leading terms cancel each other. - -\endsection -\item[GVARS] -GVARS (page 296) - - GVARS({exp,exp,... }) - - where exp are expressions or equations. - -GVARS extracts from the expressions the KERNELs which can -play the role of variables for a GROEBNER or GROEBNERF calculation. - -\endsection -\item[GVARSLAST] -GVARSLAST (page 298) - -After a GROEBNER or GROEBNERF calculation the actual variable sequence -is stored in the variable GVARSLAST. If GROEBOPT is ON, GVARSLAST -shows the variable sequence after reordering. - -\endsection -\item[GZERODIM?] -GZERODIM? (page 299) - - GZERODIM!?(basis[,vars]) - -where basis is a Groebner basis in the current -TERM order with the specified variables (see IDEAL parameters). - -GZERODIM!? tests whether the ideal spanned by the given basis -has dimension zero. If yes, the number of zeros is returned, -NIL otherwise. - -\endsection -\item[Hankel Functions] -Hankel Functions (pages 185, 396) - -Part of the SPECFN package. See HANKEL1 and HANKEL2. - -\endsection -\item[HANKEL1] -HANKEL1 (pages 185, 396) - -The HANKEL1 operator returns the Hankel function of the first kind. - -HANKEL1(order,argument) - -Examples: - load_package specfn; (SPECFN) - Hankel1 (1/2,pi); - SQRT(2) / PI - on rounded; - Hankel1 (1,3); 0.324674424792 - -The operator HANKEL1 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. - -\endsection -\item[HANKEL2] -HANKEL2 (pages 185, 396) - -The HANKEL2 operator returns the Hankel function of the second kind. - - HANKEL2(order,argument) - -Examples: - load_package specfn; (SPECFN) - Hankel2 (1/2,pi); - SQRT(2) / PI - on rounded; - Hankel2 (1,3); 0.324674424792 - -The operator HANKEL2 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. - -\endsection -\item[HERMITEP] -HERMITEP (page 185) - -The HERMITEP operator returns the nth Hermite Polynomial. - - HERMITEP(integer,expression) - -Examples: - load_package specfn; (SPECFN) - 2 - HermiteP(3,xx); 4*XX*(2*XX - 3) - HermiteP(3,4); 464 - -Hermite polynomials are computed using the recurrence relation: - -HermiteP(n,x) := 2x*HermiteP(n-1,x) - 2*(n-1)*HermiteP(n-2,x) with -HermiteP(0,x) := 1 and HermiteP(1,x) := 2x - -\endsection -\xitem[HFACTORS scale factors] -HFACTORS scale factors (page 234) - -\endsection -\xitem[High energy trace] -High energy trace (page 209) - -\endsection -\item[HIGH_POW] -HIGH_POW (page 115) - -The variable HIGH_POW is set by COEFF to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -Examples: -coeff((x+1)^5*(x*(y+3)^2)^2,x); {0, - - 0, - - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81, - - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81} - -high_pow; 7 - -\endsection -\xitem[HIGHESTDERIV] -HIGHESTDERIV (page 350) - -\endsection -\item[HILBERTPOLYNOMIAL] -HILBERTPOLYNOMIAL (page 321) - - HILBERTPOLYNOMIAL(bas,[vars]) - -where bas is a GROEBNER basis in the current TERM order and vars is an -optional variable list(see IDEAL parameters). - -The degree of the HILBERT polynomial is the dimension of the ideal -spanned by the basis. For an ideal of dimension zero the Hilbert -polynomial is a constant which is the number of common zeros of the -ideal (including eventual multiplicities). The HOLLMANN algorithm is -used. - -\endsection -\xitem[History] -History (page 158) - -\endsection -\xitem[Hodge-* duality operator] -Hodge-* duality operator (pages 256, 266) - -\endsection -\item[HORNER] -HORNER - -When the HORNER switch is on, polynomial expressions are printed -in Horner's form for faster and safer numerical evaluation. Default -is OFF. The leading variable of the expression is selected as -Horner variable. To select the Horner variable explicitly use the -KORDER declaration. - -Examples: -on horner; 3 2 -(13p-4q)^3; ( - 64)*Q + P*(624*Q + P*(( - 2028)*Q + P*2197)) -korder q; - 3 2 -ws; 2197*P + Q*(( - 2028)*P + Q*(624*P + Q*(-64))) - -\endsection -\xitem[HYPERGEOMETRIC] -Hypergeometric Functions (page 397) - -The HYPERGEOMETRIC operator provides simplifications for the -generalised hypergeometric functions. -The HYPERGEOMETRIC operator is included in the package specfn2. - - HYPERGEOMETRIC(list_of_parameters,list_of_parameters,argument) - -Examples: -load_package specfn; (SPECFN) -hypergeometric ({1/2,1},{3/2},-x^2); \rfrac{atan(x)}{x} -hypergeometric ({},{},z); e^z - -The special case with length of the first list equals 2 and -length of the second list equals 1 is often called "hypergeometric function". - -\endsection -\item[HYPOT] -HYPOT (pages 76, 78) - - HYPOT(expression,expression) - -If ROUNDED is on, and the two arguments evaluate to numbers, this -operator returns the square root of the sums of the squares of the -arguments in a manner that avoids intermediate overflow. In other cases, -an expression in the original operator is returned. - -Examples: -hypot(3,4); HYPOT(3,4) -on rounded; -ws; 5.0 -hypot(a,b); HYPOT(A,B) - -\endsection -\item[I] -I (page 36) - -REDUCE knows I is the square root of -1, and that i^2 = -1. - -Examples: -(a + b*i)*(c + d*i); A*C + A*D*I + B*C*I - B*D -i**2; -1 - -I cannot be used as an identifier. It is all right to use I as an -index variable in a FOR loop, or as a local (SCALAR) variable inside a -BEGIN...END block, but it loses its definition as the square root of --1 inside the block in that case. - -Only the simplest properties of i are known by REDUCE unless the -switch COMPLEX is turned on, which implements full complex arithmetic -in factoring, simplification, and functional values. COMPLEX is -ordinarily off. - -\endsection -\xitem[i] -i (page 223) - -\endsection -\xitem[ideal dimension] -ideal dimension (page 300) - -\endsection -\item[IDEAL PARAMETERS] -IDEAL PARAMETERS - -Most operators of the Groebner package compute expressions in a -polynomial ring which given as R[var,var,...] where R is the current -REDUCE coefficient domain. All algebraically exact domains of REDUCE -are supported. The package can operate over rings and fields. The -operation mode is distinguished automatically. In general the ring -mode is a bit faster than the field mode. The factoring variant can -be applied only over domains which allow you factoring of multivariate -polynomials. - -The variable sequence var is either given explicitly as argument in -form of a list, or it is extracted automatically from the -expressions. In the second case the current REDUCE system order is -used (see KORDER) for arranging the variables. If some kernels should -play the role of formal parameters (the ground domain R then is the -polynomial ring over these), the variable sequences must be given -explicitly. - -All REDUCE kernels can be used as variables. But please note, that -all variables are considered as independent; e.g. when using SIN(A) -and COS(A) as variables, the basic relation SIN(A)^2+COS(A)^2-1=0 must -be explicitly added to an equation set because the Groebner operators -do not include such knowledge automatically. - -The terms (monomials) in polynomials are arranged according to the -current TERM ORDER. Note that the algebraic properties of the -computed results only are valid as long as neither the ordering nor -the variable sequence changes. - -The input expressions exp can be polynomials P, rational functions N/D -or equations LH=RH built from polynomials or rational functions. -Apart from the tracing algorithms GROEBNERT and PREDUCET, where the -equations have a specific meaning, equations are converted to simple -expressions by taking the difference of the left-hand and right-hand -sides LH-RH=>P. Rational functions are converted to polynomials by -converting the expression to a common denominator form first, and then -using the numerator only N=>P. So eventual zeros of the denominators -are ignored. - -A basis on input or output of an algorithm is coded as a list -of expressions {exp,exp,...}. - -\endsection -\item[IDEALQUOTIENT] -IDEALQUOTIENT (page 320) - - IDEALQUOTIENT({exp, ...}, d [,{var, ...}]) - -where {exp,...} is a list of expressions or equations, d is a single -expression or equation and {var,...} is an optional list of variables -(see IDEAL parameters). - -IDEALQUOTIENT computes the ideal quotient: ideal spanned by the -expressions {exp,...} divided by the single polynomial/expression -f. The result is the GROEBNER basis of the quotient ideal. - -\endsection -\item[Identifier] -Identifier (page 35) - -Identifiers in REDUCE consist of one or more alphanumeric characters, -of which the first must be alphabetical. The maximum number of -characters allowed is system dependent, but is usually over 100. -However, printing is simplified if they are kept under 25 characters. - -You can also use special characters in your identifiers, but each must be -preceded by an exclamation point ! as an escape character. Useful -special characters are # $ % ^ & * - + = ? < > ~ | / ! and -the space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore _ is special in this regard. It must be preceded -by an escape character in the first position in an identifier, but is -treated like a normal letter within an identifier. - -Other characters, such as ( ) # ; ` ' " can also be used if preceded -by a !, but as they have special meanings to the Lisp reader it is -best to avoid them to avoid confusion. - -Many system identifiers have * before or after their names, or - -between words. If you accidentally pick one of these names for your -own identifier, it could have disastrous effects. For this reason it -is wise not to include * or - anywhere in your identifiers. - -You will notice that REDUCE does not use the escape characters when it -prints identifiers containing special characters; however, you still -must use them when you refer to these identifiers. Be careful when -editing statements containing escaped special characters to treat the -character and its escape as an inseparable pair. - -Identifiers are used for variable names, labels for GO TO statements, -and names of arrays, matrices, operators, and procedures. Once an -identifier is used as a matrix, array, scalar or operator identifier, -it may not be used again as a matrix, array or operator. An operator -or array identifier may later be used as a scalar without problems, -but a matrix identifier cannot be used as a scalar. All procedures -are entered into the system as operators, so the name of a procedure -may not be used as a matrix, array, or operator identifier either. - -\endsection -\item[IF] -IF (pages 55, 56) - -The IF command is a conditional statement that executes a statement -if a condition is true, and optionally another statement if it is not. - - IF condition THEN statement {ELSE statement} - -condition must be a logical or comparison operator that evaluates to -true or false. statement must be a single REDUCE statement or a GROUP -(<<...>>) or BLOCK (BEGIN...END) statement. - -Examples: -if x = 5 then a := b+c else a := d+f; D + F -x := 9; X := 9 -if numberp x and x<20 then y := sqrt(x) else write "illegal"; 3 -clear x; -if numberp x and x<20 then y := sqrt(x) else write "illegal"; illegal -x := 12; X := 12 -a := if x < 5 then 100 else 150; A := 150 -b := u**(if x < 10 then 2); B := 1 - 2 -bb := u**(if x > 10 then 2); BB := U - -An IF statement may be used inside an assignment statement and sets -its value depending on the conditions, or used anywhere else an -expression would be valid, as shown in the last example. If there is -no ELSE clause, the value is 0 if a number is expected, and nothing -otherwise. - -The ELSE clause may be left out if no action is to be taken if the -condition is false. - -The condition may be a compound conditional statement using AND or -OR. If a non-conditional statement, such as a constant, is used by -accident, it is assumed to have value true. - -Be sure to use GROUP or BLOCK statements after THEN or ELSE. - -The IF operator is right associative. The following constructions are -examples: - -(1) - IF condition THEN IF condition THEN action ELSE action - -which is equivalent to - IF condition THEN (IF condition THEN action ELSE action); - -(2) IF condition THEN action ELSE IF condition THEN action ELSE action -which is equivalent to - IF condition THEN action ELSE - (IF condition THEN action ELSE action). - -\endsection -\item[IFACTOR] -IFACTOR (page 121) - -When the IFACTOR switch is on, any integer terms appearing as a result -of the FACTORIZE command are factored themselves into primes. Default -is OFF. If the argument of FACTORIZE is an integer, -IFACTOR has no effect, since the integer is always factored. - -Examples: -factorize(4*x**2 + 28*x + 48); {4,X + 3,X + 4} -factorize(22587); {3,7529} -on ifactor; -factorize(4*x**2 + 28*x + 48); {2,2,X + 4,X + 3} -factorize(22587); {3,7529} - -Constant terms that appear within nonconstant polynomial factors are -not factored. - -The IFACTOR switch affects only factoring done specifically with -FACTORIZE, not on factoring done automatically when the FACTOR switch -is on. - -\endsection -\xitem[imaginary unit] -imaginary unit (page 223) - -\endsection -\item[IMPART] -IMPART (pages 72, 73, 75) - - IMPART(expression) or IMPART simple_expression - -This operator returns the imaginary part of an expression, if that -argument has an numerical value. A non-numerical argument is returned -as an expression in the operators REPART and IMPART. - -Examples: -impart(1+i); 1 -impart(a+i*b); REPART(B) + IMPART(A) - -\endsection -\item[IN] -IN (page 153) - -The IN command takes a list of file names and inputs each file into -the system. - IN filename{,filename} - -filename must be in the current directory, or be a valid pathname. -If the file name is not an identifier, double quote marks (") are -needed around the file name. - - -A message is given if the file cannot be found, or has a mistake -in it. - -Ending the command with a semicolon causes the file to be echoed to the -screen; ending it with a dollar sign does not echo the file. If you want -some but not all of a file echoed, turn the switch ECHO on or off -in the file. - -An efficient way to develop procedures in REDUCE is to write them into a file -using a system editor of your choice, and then input the -files into an active REDUCE session. REDUCE reparses the procedure as -it takes information from the file, overwriting the previous procedure -definition. When it accepts the procedure, it echoes its name to the screen. -Data can also be input to the system from files. - -Files to be read in should always end in END; to avoid -end-of-file problems. Note that this is an additional END; to any -ending procedures in the file. - -\endsection -\item[Indefinite integration] -Indefinite integration (page 80) - -See the INT operator. - -\endsection -\xitem[independent sets] -independent sets (page 300) - -\endsection -\item[INDEX] -INDEX (page 206) - -The declaration INDEX flags a four-vector as an index for subsequent -high-energy physics calculations. - INDEX vector-id{,vector-id} - -vector-id must have been declared of type VECTOR. - -Examples: -vector aa,bb,cc; -index uu; -let aa.bb = 0; -(aa.uu)*(bb.uu); 0 -(aa.uu)*(cc.uu); AA.CC - -Index variables are used to represent contraction over components of -vectors when scalar products are taken by the . operator, as well as -indicating contraction for the EPS operator or metric tensor. - -The special status of a vector as an index can be revoked with the -declaration REMIND. The object remains a vector, however. - -\endsection -\xitem[INDEX_SYMMETRIES command] -INDEX_SYMMETRIES command (page 271) - -\endsection -\xitem[INDEXRANGE command] -INDEXRANGE command (page 271) - -\endsection -\xitem[INDEXSYMMETRIES command] -INDEXSYMMETRIES command (page 262) - -\endsection -\item[INFINITY] -INFINITY (pages 37, 368) - -The name INFINITY is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator reflects -finite arithmetic, rather than true operations on infinity. - -\endsection -\item[INFIX] -INFIX (page 94) - -INFIX declares identifiers to be infix operators. - - INFIX identifier {,identifier} - -identifier can be any valid REDUCE identifier, which has not already -been declared an operator, array or matrix, and is not reserved by the -system. - -Examples: -infix aa; -for all x,y let aa(x,y) = cos(x)*cos(y) - sin(x)*sin(y); -x aa y; COS(X)*COS(Y) - SIN(X)*SIN(Y) - - SQRT(3) -pi/3 aa pi/2; ------------ - 2 -aa(pi,pi); 1 - -A LET statement must be used to attach functionality to the operator. -Note that the operator is defined in prefix form in the LET statement. -After its definition, the operator may be used in either prefix or infix -mode. The above operator aa finds the cosine of the sum of two angles by -the formula - cos(x+y) = cos(x)*cos(y) - sin(x)*sin(y). -Precedence may be attached to infix operators with the PRECEDENCE declaration. - -User-defined infix operators may be used in prefix form. If they are used -in infix form, a space must be left on each side of the operator to avoid -ambiguity. Infix operators are always binary. - -\endsection -\xitem[Infix operator] -Infix operator (pages 38--41) - -\endsection -\xitem[inner product] -inner product (page 357) - -\endsection -\xitem[inner product exterior form] -inner product - exterior form (page 254) - -\endsection -\item[INPUT] -INPUT (page 158) - -The INPUT command returns the input expression to the REDUCE numbered -prompt that is its argument. - INPUT(number) or INPUT number - - -number must be between 1 and the current REDUCE prompt number. - -An expression brought back by INPUT can be re-executed with new -values or switch settings, or used as an argument in another expression. -The command WS brings back the results of a numbered REDUCE -statement. Two lists contain every input and every output statement since -the beginning of the session. If your session is very long, storage space -begins to fill up with these expressions, so it is a good idea to end the -session once in a while, saving needed expressions to files with the -SAVEAS and OUT commands. - -Switch settings and LET statements can also be re-executed by using -INPUT. - -An error message is given if a number is called for that has not yet been used. - -\endsection -\xitem[Input] -Input (page 153) - -\endsection -\xitem[Instant evaluation] -Instant evaluation (pages 68, 117, 140, 162, 164) - -\endsection -\item[INT] -INT (operator and switch) (pages 80, 160) - -The INT operator performs analytic integration on a variety of -functions. - - INT(expression,kernel) - -expression can be any scalar expression. involving polynomials, log -functions, exponential functions, or tangent or arctangent -expressions. INT attempts expressions involving error functions, -dilogarithms and other trigonometric expressions. Integrals involving -algebraic extensions (such as square roots) may not succeed. kernel -must be a REDUCE KERNEL. - -Examples: - 3 - X*(X + 12) -int(x**3 + 3,x); ------------- - 4 - - 2*X - E *( - COS(X) + 2*SIN(x)) -int(sin(x)*exp(2*x),x); ----------------------------- - 5 - - SQRT(2)*(LOG( - SQRT(2) + X) - LOG(SQRT(2) + X)) -int(1/(x^2-2),x); -------------------------------------------------- - 4 - - COS(X) - - ATAN(--------) - 2 -int(sin(x)/(4 + cos(x)**2),x); ------------------- - 2 - - SQRT(x - 1) -int(1/sqrt(x^2-x),x); INT(---------------------,X) - SQRT(X)*X - SQRT(X) - -Note that REDUCE could not handle the last integral with its default -integrator, since the integrand involves a square root. However, the -integral can be found using the ALGINT package. Alternatively, you -could add a rule using the LET statement to evaluate this integral. - -The arbitrary constant of integration is not shown. Definite -integrals can be found by evaluating the result at the limits of -integration (use ROUNDED) and subtracting the lower from the higher. -Evaluation can be easily done by the SUB operator. - -When INT cannot find an integral it returns an expression involving -formal INT expressions unless the switch FAILHARD has been set. If not -all of the expression can be integrated, the switch NOLNR controls -whether a partially integrated result should be returned or not. - -INT switch - -The INT switch specifies an interactive mode of operation. Default -ON. - - -There is no reason to turn INT off during interactive calculations, -since there are no benefits to be gained. If you do have INT off -while inputting a file, and REDUCE finds an error, it prints the message -``Continuing with parsing only''. In this state, REDUCE accepts only -END; or BYE; from the keyboard; -everything else is ignored, even the command ON INT. - -\endsection -\item[INTEGER] -INTEGER (page 61) - -The INTEGER declaration must be made immediately after a BEGIN (or -other variable declaration such as REAL and SCALAR) and declares local -integer variables. They are initialised to 0. - - INTEGER identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Integer variables remain local, and do not share values with variables -of the same name outside the BEGIN...END block. When the block is -finished, the variables are removed. You may use the words REAL or -SCALAR in the place of INTEGER. INTEGER does not indicate -type-checking by the current REDUCE; it is only for your own -information. Declaration statements must immediately follow the -BEGIN, without a semicolon between BEGIN and the first variable -declaration. - -Any variables used inside BEGIN...END blocks that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Any ARRAY or MATRIX declared -inside a block is always global. - -\endsection -\xitem[Integer] -Integer (page 44) - -\endsection -\item[Integration] -Integration (pages 80, 92) - -See INT, ALGINT or NUM_INT. -\endsection -\xitem[integration definite (simple)] -integration definite (simple) (page 236) - line (page 238) - volume (page 237) - -\endsection -\xitem[Interactive use] -Interactive use (pages 157, 160) - -\endsection -\item[INTERPOL] -INTERPOL (page 127) - -INTERPOL generates an interpolation polynomial. - - INTERPOL(values,variable,points) - -values and points are LISTs of equal length and variable is an -algebraic expression (preferably a KERNEL). The interpolation -polynomial is generated in the given variable of degree -length(values)-1. The unique polynomial F is defined by the property -that for corresponding elements V of values and P of points the -relation F(P)=V holds. - -Examples: -f := for i:=1:4 collect(i**3-1); F := {0,7,26,63} -p := {1,2,3,4}; P := {1,2,3,4} - 3 -interpol(f,x,p); X - 1 - -The Aitken-Neville interpolation algorithm is used which guarantees a -stable result even with rounded numbers and an ill-conditioned problem. - -\endsection -\item[INTSTR] -INTSTR (page 98) - -If INTSTR (for ``internal structure'') is on, arguments of an -operator are printed in a more structured form. - -Examples: - operator f; - f(2x+2y); F(2*X + 2*Y) - on intstr; - ws; F(2*(X + Y)) - -\endsection -\item[ISOLATER] -ISOLATER (page 369) - - ISOLATER(expression) - ISOLATER simple_expresion - ISOLATER(expression, POSITIVE) - ISOLATER(expression, NEGATIVE) - ISOLATER(expression, lo, hi) - -The ISOLATER function produces a list of rational intervals, each -containing a single real root of the univariate polynomial p, within -the specified region, but does not find the roots. If arg2 and arg3 -are not present, all real roots are found. If the additional -arguments are present, they restrict the region of consideration. - -If arg2=NEGATIVE then only negative roots of p are included; if -arg2=POSITIVE then only positive roots of p are included. Zero roots -are excluded. - -If arguments are (p,arg2,arg3) then Arg2 and Arg3 must be r (a real -number) or EXCLUDE r, or a member of the list POSITIVE, NEGATIVE, -INFINITY, -INFINITY. EXCLUDE r causes the value r to be excluded from -the region. The order of the sequence arg2, arg3 is unimportant. -Assuming that arg2 <= arg3 when both are numeric, then - - {-INFINITY,INFINITY} is equivalent to {} represents all roots; - {arg2,NEGATIVE} represents -1 (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ -let trig1; - COS(A - B) + COS(A + B) -cos(a)*cos(b); ------------------------- - 2 - -A LET command returns no value, though the substitution rule is -entered. Assignment rules made by ASSIGN and LET rules are at the -same level, and cancel each other. There is a difference in their -operation, however, as shown in the first example: a LET assignment -tracks the changes in what it is assigned to, while a := assignment is -fixed at the value it originally had. - -The use of expressions as left-hand sides of LET statements is a -little complicated. The rules of operation are: - -(i) Expressions of the form A*B = C do not change A, B or C, but set -A*B to C. - -(ii) Expressions of the form A+B = C substitute C - B for A, but do -not change B or C. - -(iii) Expressions of the form A-B = C substitute B + C for A, but do -not change B or C. - -(iv) Expressions of the form A/B = C substitute B*C for A, but do not -change B or C. - -(v) Expressions of the form A**N = C substitute C for A**N in every -expression of a power of A to N or greater. An asymptotic command -such as A**N = 0 sets all terms involving A to powers greater than or -equal to N to 0. Finite fields may be generated by requiring modular -arithmetic (the MODULAR switch) and defining the primitive polynomial -via a LET statement. - -LET substitutions involving expressions are cleared by using the CLEAR -command with exactly the same expression. - -Note when a simple LET statement is used to assign functionality to an -operator, it is valid only for the exact identifiers used. For the -use of the LET command to attach more general functionality to an -operator, see FORALL. - -Arrays as a whole cannot be arguments to LET statements, but matrices -as a whole can be legal arguments, provided both arguments are -matrices. However, it is important to note that the two matrices are -then linked. Any change to an element of one matrix changes the -corresponding value in the other. Unless you want this behaviour, you -should not use LET for matrices. The assignment operator ASSIGN can -be used for non-tracking assignments, avoiding the side effects. -Matrices are redimensioned as needed in LET statements. - -When array or matrix elements are used as the left-hand side of LET -statements, the contents of that element is used as the argument. -When the contents is a number or some other expression that is not a -valid left-hand side for LET, you get an error message. If the -contents is an identifier or simple expression, the LET rule is -globally attached to that identifier, and is in effect not only inside -the array or matrix, but everywhere. Because of such unwanted side -effects, you should not use LET with array or matrix elements. The -assignment operator := can be used to put values into array or matrix -elements without the side effects. - -Local variables declared inside BEGIN...END blocks cannot be used as -the left-hand side of LET statements. However, BEGIN...END blocks -themselves can be used as the right-hand side of LET statements. The -construction: - FOR ALL vars - LET operator(vars) = block -is an alternative to the - PROCEDURE name(vars); block -construction. One important difference between the two constructions -is that the vars as formal parameters to a procedure have their global -values protected against change by the procedure, while the vars of a -LET statement are changed globally by its actions. - -Be careful in using a construction such as LET x = x + 1 except inside -a controlled loop statement. The process of resubstitution continues -until a stack overflow message is given. - -The LET statement may be used to make global changes to variables from -inside procedures. If X is a formal parameter to a procedure, the -command LET x = ... makes the change to the calling variable. For -example, if a procedure was defined by - procedure f(x,y); - let x = 15; -and the procedure was called as - f(a,b); -A would have its value changed to 15. Be careful when using LET -statements inside procedures to avoid unwanted side effects. - -It is also important to be careful when replacing LET statements with -other LET statements. The overlapping of these substitutions can be -unpredictable. Ordinarily the latest-entered rule is the first to be -applied. Sometimes the previous rule is superseded completely; other -times it stays around as a special case. The order of entering a set -of related LET expressions is very important to their eventual -behaviour. The best approach is to assume that the rules will be -applied in an arbitrary order. - -\endsection -\xitem[Levi-Cevita tensor] -Levi-Cevita tensor (page 267) - -\endsection -\item[LEX] - -The terms are ordered lexicographically: two terms t1 t2 are compared -for their degrees along the fixed variable sequence: t1 is higher than -t2 if the first different degree is higher in t1. This order has the -elimination property for GROEBNER BASIS calculations. If the ideal -has a univariate polynomial in the last variable the groebner basis -will contain such polynomial. LEX is best suited for solving of -polynomial equation systems. - -\endsection -\item[LHS] -LHS (page 47) - -The LHS operator returns the left-hand side of an EQUATION, such as -those returned in a list by SOLVE. - - LHS(equation) or LHS equation - -equation must be an equation of the form - LEFT-HAND SIDE = RIGHT-HAND SIDE. - -Examples: -polly := (x+3)*(x^4+2x+1); - 5 4 2 - POLLY := X + 3*X + 2*X + 7*X + 3 - -pollyroots := solve(polly,x); - 3 2 - POLLYROOTS := {X=ROOT_OF(X_ - X_ + X_ + 1,X_),X=-1,X=-3} - -variable := lhs first pollyroots; - VARIABLE := X - -\endsection -\xitem[LIE Derivative] -Lie Derivative (page 255) - -\endsection -\item[LIMIT] -LIMIT (pages 329, 360) - -LIMITS is a fast limit package for REDUCE for functions which are -continuous except for computable poles and singularities, based on -some earlier work by Ian Cohen and John P. Fitch. The Truncated -Power Series package is used for non-critical points, at which -the value of the function is the constant term in the expansion -around that point. l'Hopital's rule is used in critical cases, -with preprocessing of 1-1 forms and reformatting of product forms -in order to apply l'Hopital's rule. A limited amount of bounded -arithmetic is also employed where applicable. - - LIMIT(expr,var,limpoint) or - LIMIT!+(expr,var,limpoint) or - LIMIT!-(expr,var,limpoint) - -where expr is an expression depending of the variable var (a KERNEL) -and limpoint is the limit point. If the limit depends upon the -direction of approach to the limpoint, the operators LIMIT!+ and -LIMIT!- may be used. - -Examples: - limit(x*cot(x),x,0); 0 - 2 - limit((2x+5)/(3x-2),x,infinity); --- - 3 - -\endsection -\xitem[LIMIT0] -LIMIT0 (page 330) - -\endsection -\xitem[LIMIT1] -LIMIT1 (page 330) - -\endsection -\xitem[LIMIT2] - -\endsection -\xitem[LIMIT2] -LIMIT2 (page 330) - -\endsection -\xitem[LIMITS] -LIMITS (page 181) - -\endsection -\xitem[LIMITS package] -LIMITS package (page 329) - -\endsection -\item[LIMITEDFACTORS] -LIMITEDFACTORS - -To get limited factorisation in cases where it is too expensive to use -full multivariate polynomial factorisation, the switch -LIMITEDFACTORS can be turned on. In that case, only ``inexpensive'' -factoring operations, such as square-free factorisation, will be used -when FACTORIZE is called. - -Examples: -a := (y-x)^2*(y^3+2x*y+5)*(y^2-3x*y+7)$ -factorize a; { - X + Y, - X - Y, - 3 - 2*X*Y + Y + 5, - 2 - 3*X*Y - Y - 7} -on limitedfactors; -factorize a; { - X + Y, - X - Y, - 2 2 4 3 5 3 2 - 6*X *Y + 3*X*Y - 2*X*Y + X*Y - Y - 7*Y - 5*Y - 35} - -\endsection -\xitem[line integrals] -line integrals (page 238) - -\endsection -\item[LINEAR] -LINEAR (page 91) - -An operator can be declared linear in its first argument over powers of -its second argument by the declaration LINEAR. - - LINEAR operator{,operator} - -operator must have been declared to be an operator. Be careful not to -use a system operator name, because this command may change its -definition. The operator being declared must have at least two -arguments, and the second one must be a kernel. - -Examples: -operator f; -linear f; -f(0,x); 0 -f(-y,x); - F(1,X)*Y -f(y+z,x); F(1,X)*(Y + Z) -f(y*z,x); F(1,X)*Y*Z -depend z,x; -f(y*z,x); F(Z,X)*Y - 1 -f(y/z,x); F(---,X)*Y - Z - -depend y,x; - Y -f(y/z,x); F(---,X) - Z -nodepend z,x; - F(Y,X) -f(y/z,x); -------- - Z - - SIN(x) -f(2*e**sin(x),x); 2*F(E ,X) - -Even when the operator has not had its functionality attached, it -exhibits linear properties as shown in the examples. Notice the -difference when dependencies are added. Dependencies are also in -effect when the operator's first argument contains its second, as in -the last line above. - -For a fully-developed example of the use of linear operators, refer to -the article in the Journal of Computational Physics, Vol. 14 -(1974), pp. 301-317, ``Analytic Computation of Some Integrals in -Fourth Order Quantum Electrodynamics'', by J.A. Fox and A.C. Hearn. -The article includes the complete listing of REDUCE procedures used -for this work. - -\endsection -\xitem[Linear operator] -Linear operator (pages 91, 92, 95) - -\endsection -\xitem[LINEINT] -LINEINT (page 360) - -\endsection -\xitem[LINEINT function] -LINEINT function (page 238) - -\endsection -\item[LINELENGTH] -LINELENGTH (page 100) - -The LINELENGTH declaration sets the length of the output line. Default -is 80. - - LINELENGTH integer - -integer must be positive, less than 128 (although this varies from -system to system), and should not be less than 20 or so for proper -operation. - -LINELENGTH returns the previous linelength. If you want the current -linelength value, but not change it, say LINELENGTH NIL. - -\endsection -\item[LISP] -LISP (page 191) - -The LISP command changes REDUCE's mode of operation to symbolic. When -LISP is followed by an expression, that expression is evaluated in -symbolic mode, but REDUCE's mode is not changed. This command is -equivalent to SYMBOLIC. - -Examples: -lisp; NIL -car '(a b c d e); A -algebraic; 2 -c := (lisp car '(first second))**2; C := FIRST - -\endsection -\item[LIST] -LIST (page 103) - -The LIST switch causes REDUCE to print each term in any sum on -separate lines. - -Examples: 2 2 - X*(2*A*X*Y + 4*A*X*Y + Y + Z) -x**2*(y**2 + 2*y) + x*(y**2 + z)/(2*a); --------------------------------- - 2*A -on list; - 2 -ws; (X*(2*A*X*Y - + 4*A*X*Y - 2 - + Y - + Z))/(2*A) - -\endsection -\xitem[List] -List (page 49) - -\endsection -\item[List(operation)] -List operation (pages 49, 51) - -The LIST operator constructs a list from its arguments. - LIST(item {,item}) or - LIST() to construct an empty list. - -item can be any REDUCE scalar expression, including another list. -Left and right curly brackets can also be used instead of the operator -LIST to construct a list. - -Examples: -liss := list(c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x)); - 2 - LISS := {C,B,C,{XX,YY},3*X + 7*X + 3,2*COS(2*X)} -length liss; 6 -liss := {c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x)}; - 2 - LISS := {C,B,C,{XX,YY},3*X + 7*X + 3,2*COS(2*X)} -emptylis := list(); EMPTYLIS := {} -a . emptylis; {A} - -Lists are ordered, hierarchical structures. The elements stay where -you put them, and only change position in the list if you specifically -change them. Lists can have nested sublists to any (reasonable) -level. The PART operator can be used to access elements anywhere -within a list hierarchy. The LENGTH operator counts the number of -top-level elements of its list argument; elements that are themselves -lists still only count as one element. - -\endsection -\item[LISTARGP] -LISTARGP (page 51) - - LISTARGP operator{,operator} - -If an operator other than those specifically defined for lists is -given a single argument that is a LIST, then the result of this -operation will be a list in which that operator is applied to each -element of the list. This process can be inhibited for a specific -operator, or list of operators, by using the declaration LISTARGP. - -Examples: -log {a,b,c}; {LOG(A),LOG(B),LOG(C)} -listargp log; -log {a,b,c}; LOG({A,B,C}) - -It is possible to inhibit such distribution globally by turning on the -switch LISTARGS. In addition, if an operator has more than one -argument, no such distribution occurs, so LISTARGP has no effect. - -\endsection -\item[LISTARGS] -LISTARGS (page 51) - -If an operator other than those specifically defined for lists is given a -single argument that is a list, then the result of this operation will be -a list in which that operator is applied to each element of the list. -This process can be inhibited globally by turning on the switch -LISTARGS. - -Examples: - log {a,b,c}; {LOG(A),LOG(B),LOG(C)} - on listargs; - log {a,b,c}; LOG({A,B,C}) - -It is possible to inhibit such distribution for a specific operator by -using the declaration LISTARGP. In addition, if an operator has -more than one argument, no such distribution occurs, so LISTARGS -has no effect. - -\endsection -\item[LN] -LN (pages 76, 78) - - LN(expression) - -expression can be any valid scalar REDUCE expression. - -The LN operator returns the natural logarithm of its argument. -However, unlike LOG, there are no algebraic rules associated -with it; it will only evaluate when ROUNDED is on, and the -argument is a real number. - -Examples: -ln(x); LN(X) -ln 4; LN(4) -ln(e); LN(E) -df(ln(x),x); DF(LN(X),X) -on rounded; -ln 4; 1.38629436112 -ln e; 1 - -Because of the restricted algebraic properties of LN, users are -advised to use LOG whenever possible. - -\endsection -\xitem[LOAD] -LOAD (page 214) - -\endsection -\item[LOAD_PACKAGE] -LOAD_PACKAGE (pages 177, 188, 215) - -The LOAD_PACKAGE command is used to load REDUCE packages, such as -GENTRAN that are not automatically loaded by the system. - - LOAD_PACKAGE "package_name" - -A package is only loaded once; subsequent calls of LOAD_PACKAGE -for the same package name are ignored. - -\endsection -\item[LOG] -LOG (pages 76, 78, 81) - -The LOG operator returns the natural logarithm of its argument. - - LOG(expression) or LOG expression - -expression can be any valid scalar REDUCE expression. - -Examples: -log(x); LOG(X) -log 4; LOG(4) -log(e); 1 -on rounded; -log 4; 1.38629436112 - -LOG returns a numeric value only when ROUNDED is on. In that case, -use of a negative argument for LOG results in an error message. No -error is given on a negative argument when REDUCE is not in that mode. - -\endsection -\xitem[LOG10] -LOG10 (pages 76, 78) - -\endsection -\item[LOGB] -LOGB (pages 76, 78) - - LOGB(expression,integer) - -expression can be any valid scalar REDUCE expression. - -The LOGB operator returns the logarithm of its first argument using -the second argument as base. However, unlike LOG, there are no -algebraic rules associated with it; it will only evaluate when ROUNDED -is on, and the first argument is a real number. - -Examples: -logb(x,2); LOGB(X,2) -logb(4,3); LOGB(4,3) -logb(2,2); LOGB(2,2) -df(logb(x,3),x); DF(LOGB(X,3),X) -on rounded; -logb(4,3); 1.26185950714 -logb(2,2); 1 - -\endsection -\item[Lommel Functions] -Lommel Functions (pages 185, 397) - -Part of the SPECFN package. See LOMMEL1 and LOMMEL2. - -\endsection -\item[LOMMEL1] -LOMMEL1 (pages 185, 397) - - LOMMEL1(integer, integer, expression) - -The LOMMEL1 function is defined in terms of the BESSELJ and GAMMA -functions for some of its arguments, and the STRUVEH function for -others. There are no rules for differentiation or for numerical -evaluation. - -Examples: - load_package specfn; (SPECFN) - 3 - Lommel1(3,2,xx); - 48*BESSELJ(3,XX) + XX - 15*STRUVEH(3,XX)*PI - Lommel1(3,3,xx); --------------------- - 2 - -\endsection -\item[LOMMEL2] -LOMMEL2 (pages 185, 397) - - LOMMEL2(integer, integer, expression) - -The LOMMEL2 function is defined in terms of the BESSELY, GAMMA and -STRUVEH function for some of its arguments. There are no rules for -differentiation or for numerical evaluation. - -Examples: -load_package specfn; (SPECFN) - 2 -Lommel2(3,2,xx); XX - 15*PI*( - BESSELY(3,XX) + STRUVEH(3,XX)) -Lommel2(3,3,xx); ------------------------------------------ - 2 - -\endsection -\xitem[Loop] -Loop (pages 57, 58) - -\endsection -\item[LOW_POW] -LOW_POW (page 115) - -The variable LOW_POW is set by COEFF to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -Examples: 6 -coeff((x+2*y)**6,y); {X , - 5 - 12*X , - 4 - 60*X , - 3 - 160*X , - 2 - 240*X , - - 192*X, - - 64} - -low_pow; 0 -coeff(x**2*(x*sin(y) + 1),x); {0,0,1,SIN(Y)} -low_pow; 2 - -\endsection -\item[LTERM] -LTERM (pages 130, 203) - -The LTERM operator returns the leading term of an expression with -respect to a kernel. - - LTERM(expression,kernel) - -expression is ordinarily a polynomial. If RATARG is on, a rational -expression may also be used, otherwise an error results. kernel must -be a kernel. - -Examples: 6 -lterm((x+2*y)**6,y); 64*Y - 8 -lterm((x + cos(x))**8 + df(x**2,x),cos(x)); COS(X) -lterm(x**3 + 3*x,y); 0 - -\endsection -\xitem[MACRO] -MACRO (page 196) - -\endsection -\item[MAINVAR] -MAINVAR (page 130) - -The MAINVAR operator returns the main variable (in the system's -internal representation) of its argument. - - MAINVAR(expression) - -expression is usually a polynomial, but may be any valid REDUCE scalar -expression. In the case of a rational function, the main variable of -the numerator is returned. The main variable returned is a KERNEL. - -Examples: 2 2 2 -test := (a + b + c)**2; TEST := A + 2*A*B + 2*A*C + B + 2*B*C + C -mainvar(test); A -korder c,b,a; -mainvar(test); C -mainvar(2*cos(x)**2); COS(X) -mainvar(17); 0 - -The main variable is the first variable in the canonical ordering of -kernels. Generally, alphabetically ordered functions come first, then -alphabetically ordered identifiers (variables). Numbers come last, -and as far as MAINVAR is concerned belong in the family 0. The -canonical ordering can be changed by the declaration KORDER, as shown -above. - -\endsection -\item[MASS] -MASS (pages 208, 210) - -The MASS command associates a scalar variable as a mass with -the corresponding vector variable, in high-energy physics calculations. - MASS vector-var=scalar-var {,vector-var=scalar-var} - -vector-var can be a declared vector variable; MASS will declare -it to be of type VECTOR if it is not. This may override an existing -matrix variable by that name. scalar-var must be a scalar variable. - -Examples: -vector bb,cc; -mass cc=m; -mshell cc; - 2 -cc.cc; M - -Once a mass has been attached to a vector with a MASS declaration, the -MSHELL declaration puts the associated particle ``on the mass shell.'' -Subsequent scalar (.) products of the vector with itself will be -replaced by the square of the mass expression. - -\endsection -\item[MAT] -MAT (pages 161--162) - -The MAT operator is used to represent a two-dimensional -MATRIX. - MAT((expr{,expr}) {(expr{,expr})}) - -expr may be any valid REDUCE scalar expression. - -Examples: -mat((1,2),(3,4)); MAT(1,1) := 1 - MAT(2,3) := 2 - MAT(2,1) := 3 - MAT(2,2) := 4 -mat(2,1); ***** Matrix mismatch - Cont? (Y or N) -matrix qt; -qt := ws; QT(1,1) := 1 - QT(1,2) := 2 - QT(2,1) := 3 - QT(2,2) := 4 -matrix a,b; -a := mat((x),(y),(z)); A(1,1) := X - A(2,1) := Y - A(3,1) := Z -b := mat((sin x,cos x,1)); B(1,1) := SIN(X) - B(1,2) := COS(X) - B(1,3) := 1 - -Matrices need not have a size declared (unlike arrays). MAT -redimensions a matrix variable as needed. It is necessary, of course, -that all rows be the same length. An anonymous matrix, as shown in -the first example, must be named before it can be referenced (note -error message). When using MAT to fill a 1 x n matrix, the row of -values must be inside a second set of parentheses, to eliminate -ambiguity. - -\endsection -\item[MATCH] -MATCH (page 146) - -The MATCH command is similar to the LET command, except -that it matches only explicit powers in substitution. - - MATCH expr = expression{,expr = expression} - -expr is generally a term involving powers, and is limited by the rules -for the LET command. expression may be any valid REDUCE scalar -expression. - -Examples: -match c**2*a**2 = d; - 4 3 3 4 -(a+c)**4; A + 4*A *C + 4*A*C + C + 6*D -match a+b = c; -a + 2*b; B + C - 2 2 2 -(a + b + c)**2; A - B + 2*B*C + 3*C -clear a+b; - 2 2 2 -(a + b + c)**2; A + 2*A*B + 2*A*C + B + 2*B*C + C -let p*r = s; -match p*q = ss; - 2 2 -(a + p*r)**2; A + 2*A*S + S - 2 2 2 -(a + p*q)**2; A + 2*A*SS + P *Q - -Note in the last example that A + B has been explicitly matched after -the squaring was done, replacing each single power of A by C - B. -This kind of substitution, although following the rules, is confusing -and could lead to unrecognisable results. It is better to use MATCH -with explicit powers or products only. MATCH should not be used -inside procedures for the same reasons that LET should not be. - -Unlike LET substitutions, MATCH substitutions are executed after all -other operations are complete. The last example shows the -difference. MATCH commands can be cleared by using CLEAR, with exactly -the expression that the original MATCH took. MATCH commands can also -be done more generally with FOR ALL or FORALL...SUCH THAT commands. - -\endsection -\item[MATEIGEN] -MATEIGEN (page 164) - -The MATEIGEN operator calculates the eigenvalue equation and the -corresponding eigenvectors of a MATRIX. - - MATEIGEN(matrix-id,tag-id) - -matrix-id must be a declared matrix of values, and tag-id must be a -legal REDUCE identifier. - -Examples: -aa := mat((2,5),(1,0))$ - 2 -mateigen(aa,alpha); {{ALPHA - 2*ALPHA - 5, - 1, - 5*ARBCOMPLEX(1) - MAT(1,1) := --------------- - ALPHA - 2 - - MAT(2,1) := ARBCOMPLEX(1) - }} - 2 -charpoly := first first ws; CHARPOLY := ALPHA - 2*ALPHA - 5 - -bb := mat((1,0,1),(1,1,0),(0,0,1))$ - -mateigen(bb,lamb); {{LAMB - 1,3, - - [ 0 ] - [ ] - [ARBCOMPLEX(2)] - [ ] - [ 0 ] - - }} - -The MATEIGEN operator returns a list of lists of three elements. The -first element is a square free factor of the characteristic -polynomial; the second element is its multiplicity; and the third -element is the corresponding eigenvector. If the characteristic -polynomial can be completely factored, the product of the first -elements of all the sublists will produce the minimal polynomial. You -can access the various parts of the answer with the usual list access -operators. - -If the matrix is degenerate, more than one eigenvector can be produced -for the same eigenvalue, as shown by more than one arbitrary variable -in the eigenvector. The identification numbers of the arbitrary -complex variables shown in the examples above may not be the same as -yours. Note that since LAMBDA is a reserved word in REDUCE, you -cannot use it as a tag-id for this operator. - -\endsection -\xitem[Mathematical function] -Mathematical function (page 76) - -\endsection -\item[MATRIX] -MATRIX (page 162) - -Identifiers are declared to be of type MATRIX. - MATRIX identifier (index,index) {,identifier (index,index)} - -identifier must not be an already-defined operator or array or the -name of a scalar variable. Dimensions are optional, and if used -appear inside parentheses. index must be a positive integer. - -Examples: -matrix a,b(1,4),c(4,4); -b(1,1); 0 -a(1,1); ***** Matrix A not set -a := mat((x0,y0),(x1,y1)); A(1,1) := X0 - A(1,2) := Y0 - A(2,1) := X0 - A(2,2) := X1 -length a; {2,2} - 2 -b := a**2; B(1,1) := X0 + X1*Y0 - B(1,2) := Y0*(X0 + Y1) - B(2,1) := X1*(X0 + Y1) - 2 - B(2,2) := X1*Y0 + Y1 - -When a matrix variable has not been dimensioned, matrix elements -cannot be referenced until the matrix is set by the MAT operator. -When a matrix is dimensioned in its declaration, matrix elements are -set to 0. Matrix elements cannot stand for themselves. When you use -LET on a matrix element, there is no effect unless the element -contains a constant, in which case an error message is returned. The -same behaviour occurs with CLEAR. Do not use CLEAR to try to set a -matrix element to 0. LET statements can be applied to matrices as a -whole, if the right-hand side of the expression is a matrix -expression, and the left-hand side identifier has been declared to be -a matrix. - -Arithmetical operators apply to matrices of the correct dimensions. -The operators + and - can be used with matrices of the same -dimensions. The operator * can be used to multiply m x n matrices by -n x p matrices. Matrix multiplication is non-commutative. Scalars -can also be multiplied with matrices, with the result that each -element of the matrix is multiplied by the scalar. The operator / -applied to two matrices computes the first matrix multiplied by the -inverse of the second, if the inverse exists, and produces an error -message otherwise. Matrices can be divided by scalars, which results -in dividing each element of the matrix. Scalars can also be divided -by matrices when the matrices are invertible, and the result is the -multiplication of the scalar by the inverse of the matrix. Matrix -inverses can by found by 1/A or /A, where A is a matrix. Square -matrices can be raised to positive integer powers, and also to -negative integer powers if they are nonsingular. - -When a matrix variable is assigned to the results of a calculation, the -matrix is redimensioned if necessary. - -\endsection -\xitem[Matrix assignment] -Matrix assignment (page 168) - -\endsection -\xitem[Matrix calculations] -Matrix calculations (page 161) - -\endsection -\item[MAX] -MAX (page 73) - -The operator MAX is an n-ary prefix operator, which returns the largest -value in its arguments. - - MAX(expression{,expression}) - -expression must evaluate to a number. MAX of an empty list returns 0. - -Examples: -max(4,6,10,-1); 10 -<>; 46 -max(-5,-10,-a); -5 - -\endsection -\item[MCD] -MCD (pages 123, 125, 126) - -When MCD is on, sums and differences of rational expressions are put -on a common denominator. Default is ON. - -Examples: 5*A + B*X + B -a/(x+1) + b/5; --------------- - 5*(X + 1) -off mcd; - -1 -a/(x+1) + b/5; (X + 1) *A + 1/5*B - -1/6 + 1/7; 13/42 - -Even with MCD off, rational expressions involving only numbers are -still put over a common denominator. - -Turning MCD off is useful when explicit negative powers are needed, or -if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when MCD is -off are no longer in canonical form, and expressions equivalent to -zero may not simplify to 0. Some operations, such as factoring cannot -be done while MCD is off. This option should therefore be used with -some caution. Turning MCD off is most valuable in intermediate parts -of a complicated calculation, and should be turned back on for the -last stage. - -\endsection -\xitem[MEIJERG] -Meijer's G function (page 187) - -The MEIJERG operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or -special functions or (generalised) HYPERGEOMETRIC functions. - -The MEIJERG operator is included in the package specfn2. - -MEIJERG(list of parameters,list of parameters,argument) -The first element of the lists has to be the list containing the -first group (mostly called "m" and "n") of parameters. This passes -the four parameters of a Meijer's G function implicitly via the -length of the lists. - -Examples: -load specfn2; -MeijerG({{},1},{{0}},x); & heaviside(-x+1) -MeijerG({{}},{{1+1/4},1-1/4},(x^2)/4) * sqrt pi; - & \rfrac{sqrt(2)*sin(x)*x^2}{4*sqrt(x)} - -Many well-known functions can be written as G functions, -e.g. exponentials, logarithms, trigonometric functions, Bessel functions -and hypergeometric functions. -The formulae can be found e.g. in -A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: -Integrals and Series, Volume 3: More special functions, -Gordon and Breach Science Publishers (1990). - -\endsection -\xitem[METRIC command] -METRIC command (page 271) - -\endsection -\xitem[metric structure] -metric structure (page 262) - -\endsection -\item[MIN] -MIN (page 73) - -The operator MIN is an n-ary prefix operator, which returns the -smallest value in its arguments. - - MIN(expression{,expression}) - -expression must evaluate to a number. MIN of an empty list -returns 0. - -Examples: -min(-3,0,17,2); -3 -<>; 16 -min(5,10,a); 5 - -\endsection -\xitem[Minimum] -Minimum (page 182) - -\endsection -\item[MKID] -MKID (page 83) - -The MKID command constructs an identifier, given a stem and an identifier -or an integer. - - MKID(stem,leaf) - -stem can be any valid REDUCE identifier that does not include escaped -special characters. leaf may be an integer, including one given by a -local variable in a FOR loop, or any other legal group of characters. - -Examples: -mkid(x,3); X3 -factorize(x^15 - 1); {X - 1, - - 2 - X + X + 1, - - 4 3 2 - X + X + X + X + 1, - - 8 7 5 4 3 - X - X + X - X + X - X + 1} - -for i := 1:length ws do write set(mkid(f,i),part(ws,i)); - X - 1 - - 2 - X + X + 1 - - 4 3 2 - X + X + X + X + 1 - - 8 7 5 4 3 - X - X + X - X + X - X + 1 - -You can use MKID to construct identifiers from inside procedures. This -allows you to handle an unknown number of factors, or deal with variable -amounts of data. It is particularly helpful to attach identifiers to the -answers returned by FACTORIZE and SOLVE. - -\endsection -\item[MKPOLY] -MKPOLY (page 370) - -Given a roots list as returned by ROOTS, the operator MKPOLY -constructs a polynomial which has these numbers as roots. - - MKPOLY rl - -where rl is a LIST with equations, which all have the same KERNEL on -their left-hand sides and numbers as right-hand sides. - -Examples: - 4 3 2 - mkpoly{x=1,x=-2,x=i,x=-i}; X + X - X + X - 2 - - -Note that this polynomial is unique only up to a numeric factor. - -\endsection -\xitem[MM] -MM (page 379) - -\endsection -\xitem[Mode] -Mode (page 68) - -\endsection -\xitem[Mode communication] -Mode communication (page 197) - -\endsection -\item[MODULAR] -MODULAR (page 134) - -When MODULAR is on, polynomial coefficients are reduced by the -modulus set by SETMOD. If no modulus has been set, MODULAR -has no effect. - -Examples: -setmod 2; 1 -on modular; - 2 2 -(x+y)**2; X + Y - 2 -145*x**2 + 20*x**3 + 17 + 15*x*y; X + X*Y + 1 - -Modular operations are only conducted on the coefficients, not the -exponents. The modulus is not restricted to being prime. When the -modulus is prime, division by a number not relatively prime to the -modulus results in a Zero divisor error message. When the modulus is -a composite number, division by a power of the modulus results in an -error message, but division by an integer which is a factor of the -modulus does not. The representation of modular number can be -influenced by BALANCED_MOD. - -\endsection -\xitem[Modular coefficient] -Modular coefficient (page 134) - -\endsection -\item[MSG] -MSG (page 218) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\item[MSHELL] -MSHELL (page 210) - -The MSHELL command puts particles on the mass shell in high-energy -physics calculations. - MSHELL vector-var{,vector-var} - -vector-var must have had a mass attached to it by a MASS -declaration. - -Examples: -vector v1,v2; -mass v1=m,v2=q; -mshell v1; - 2 -v1.v1; M -v2.v2; V2.V2 -mshell v2; - 2 2 -v1.v1*v2.v2; M *Q - -Even though a mass is attached to a vector variable representing a -particle, the replacement does not take place until the MSHELL -declaration is given for that vector variable. - -\endsection -\xitem[Multiple assignment statement] -Multiple assignment statement (page 54) - -\endsection -\item[MULTIPLICITIES] -MULTIPLICITIES (page 86) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\xitem[MULTIROOT] -MULTIROOT (page 373) - -\endsection -\item[NAT] -NAT (page 111, 259) - -When NAT is on, output is printed to the screen in natural form, with -raised exponents. NAT should be turned off when outputting expressions -to a file for future input. Default is ON. - -Examples: 3 2 2 3 -(x + y)**3; X + 3*X *Y + 3*X*Y + Y -off nat; -(x + y)**3; X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ -on fort; -(x + y)**3; ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3 - -With NAT off, a dollar sign is printed at the end of each expression. -An output file written with NAT off is ready to be read into REDUCE -using the command IN. - -\endsection -\item[NEARESTROOT] -NEARESTROOT (pages 370, 372) - -The operator NEARESTROOT finds one root of a polynomial with an -iteration using a given starting point. - - NEARESTROOT(p,pt) - -where p is a univariate polynomial and pt is a number. - -Example: - - nearestroot(x^2+2,2); {X=1.41421*I} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[NEARESTROOTS] -NEARESTROOTS (page 370) - -\endsection -\xitem[NEGATIVE] -NEGATIVE (page 368) - -\endsection -\item[NERO] -NERO (page 108) - -When NERO is on, zero assignments (such as matrix elements) are not -printed. - -Examples: -matrix a; -a := mat((1,0),(0,1)); A(1,1) := 1 - A(1,2) := 0 - A(2,1) := 0 - A(2,2) := 1 -on nero; -a; MAT(1,1) := 1 - MAT(2,2) := 1 -a(1,2); {nothing is printed.} -b := 0; {nothing is printed.} -off nero; -b := 0; B := 0 - -NERO is often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. - -\endsection -\xitem[Newton's method] -Newton's method (page 182) - -\endsection -\item[NEXTPRIME] -NEXTPRIME (page 74) - - NEXTPRIME(expression) - -If the argument of NEXTPRIME is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. - -Examples: -nextprime 5001; 5003 -nextprime(10^30); 1000000000000000000000000000057 -nextprime a; ***** A invalid as integer - -\endsection -\xitem[NN] -NN (page 379) - -\endsection -\item[NOARG] -NOARG - -When DFPRINT is on, expressions in the differentiation operator -DF are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. When NOARG -is on (the default), the arguments of the differentiated operator are also -suppressed. - -Examples: -operator f; -df(f x,x); DF(F(X),X); -on dfprint; -ws; F - X -df(f(x,y),x,y); F - X,Y -off noarg; -ws; F(X) - X - -\endsection -\item[NODEPEND] -NODEPEND (page 95) - -The NODEPEND declaration removes the dependency declared with DEPEND. - - NODEPEND dep-kernel{,kernel} - -dep-kernel -must be a kernel that has had a dependency declared upon -the one or more other kernels that are its other arguments. - -Examples: -depend y,x,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) -nodepend y,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); 0 - -A warning message is printed if the dependency had not been declared by -DEPEND. - -\endsection -\xitem[NOETHER function] -NOETHER function (pages 258, 271) - -\endsection -\xitem[Non-commuting operator] -Non-commuting operator (page 92) - -\endsection -\item[NOLNR] -NOLNR - -When NOLNR is on, the linear properties of the integration operator -INT are suppressed if the integral cannot be found in closed terms. - - -REDUCE uses the linear properties of integration to attempt to break down -an integral into manageable pieces. If an integral cannot be found in -closed terms, these pieces are returned. When the NOLNR switch is off, -as many of the pieces as possible are integrated. When it is on, if any piece -fails, the rest of them remain unevaluated. - -\endsection -\item[NONCOM] -NONCOM (page 92) - -NONCOM declares that already-declared operators are noncommutative -under multiplication. - - NONCOM operator{,operator} - -operator must have been declared an OPERATOR, or a warning message is -given. - -Examples: -operator f,h; -noncom f; -f(a)*f(b) - f(b)*f(a); F(A)*F(B) - F(B)*F(A) -h(a)*h(b) - h(b)*h(a); 0 -operator comm; -for all x,y such that x neq y and ordp(x,y) - let f(x)*f(y) = f(y)*f(x) + comm(x,y); -f(1)*f(2); F(1)*F(2) -f(2)*f(1); COMM(2,1) + F(1)*F(2) - -The last example introduces the commutator of f(x) and f(y) for all x -and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or -it can remain an indeterminate operator. - -\endsection -\item[NONZERO] -NONZERO (page 90) - - NONZERO identifier{,identifier} - -If an operator F is declared ODD, then F(0) is replaced by zero unless -F is also declared non zero by the declaration NONZERO. - -Examples: - odd f; - f(0) 0 - nonzero f; - f(0) F(0) - -\endsection -\item[NOSPLIT] -NOSPLIT (page 103) - -Under normal circumstances, the printing routines try to break an expression -across lines at a natural point. This is a fairly expensive process. If -you are not overly concerned about where the end-of-line breaks come, you -can speed up the printing of expressions by turning off the switch -NOSPLIT. This switch is normally on. - -\endsection -\item[NOSPUR] -NOSPUR (page 210) - -The NOSPUR declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. - NOSPUR line-id{,line-id} - - -line-id is a scalar identifier that will be used as a line identifier. - -Examples: -vector a1,b1,c1; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*B1.C1 -nospur line2; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*G(LINE2,B1,C1) - -Nospur declarations can be removed by making the declaration SPUR. - -\endsection -\xitem[NOSUM command] -NOSUM command (pages 262, 271) - -\endsection -\xitem[NOSUM switch] -NOSUM switch (page 262) - -\endsection -\item[NOXPND @] -NOXPND @ (pages 254, 271) -NOXPND D (pages 253, 271) - -(Part of the EXCALC package) - -There are two forms of the NOXPND command, which controls the use of -the product rule for the d operator and the expansion into partial -derivatives. The default for both these is OFF. - - noxpnd d; - noxpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also XPND -\endsection -\xitem[NS dummy variable] -NS dummy variable (page 260) - -\endsection -\item[NULLSPACE] -NULLSPACE (page 166) - -NULLSPACE(matrix_expression) - -nullspace calculates for its MATRIX argument, A, a list of linear -independent vectors (a basis) whose linear combinations satisfy the -equation A x = 0. The basis is provided in a form such that as many -upper components as possible are isolated. - -Examples: -nullspace mat((1,2,3,4),(5,6,7,8)); { - [ 1 ] - [ ] - [ 0 ] - [ ] - [ - 3] - [ ] - [ 2 ] - , - [ 0 ] - [ ] - [ 1 ] - [ ] - [ - 2] - [ ] - [ 1 ] - } - -Note that with B := NULLSPACE A, the expression LENGTH B is the -nullity of A, and that SECOND LENGTH A - LENGTH B calculates the rank -of A. The rank of a matrix expression can also be found more directly -by the RANK operator. - -In addition to the REDUCE matrix form, NULLSPACE accepts as input a -matrix given as a LIST of lists, that is interpreted as a row matrix. If -that form of input is chosen, the vectors in the result will be -represented by lists as well. This additional input syntax facilitates -the use of NULLSPACE in applications different from classical linear -algebra. - -\endsection -\item[NUM] -NUM (page 131) -The NUM operator returns the numerator of its argument. - - NUM(expression) or NUM simple_expression - -expression can be any valid REDUCE scalar expression. - -Examples: -num(100/6); 50 -num(a/5 + b/6); 6*A + 5*B -num(sin(x)); SIN(X) - -NUM returns the numerator of the expression after it has been simplified -by REDUCE. As seen in the examples, this includes putting sums of rational -expressions over a common denominator, and reducing common factors where -possible. If the expression is not a rational expression, it is returned -unchanged. - -\endsection -\item[NUMVAL] -NUMVAL - -With ROUNDED on, elementary functions with numerical arguments -will return a numerical answer where appropriate. If you wish to inhibit -this evaluation, NUMVAL should be turned off. It is normally on. - -Examples: - on rounded; - cos 3.4; - 0.966798192579 - off numval; - cos 3.4; COS(3.4) - -\endsection -\item[NUM_INT] -NUM_INT (page 182) - -For the numerical evaluation of univariate integrals over a finite -interval the following strategy is used: If INT finds a formal -antiderivative which is bounded in the integration interval, this is -evaluated and the end points and the difference is returned. -Otherwise a Chebyshev fit is computed, starting with order 20, -eventually up to order 80. If that is recognized as sufficiently -convergent it is used for computing the integral by directly -integrating the coefficient sequence. If none of these methods is -successful, an adaptive multilevel quadrature algorithm is used. - -For multivariate integrals only the adaptive quadrature is used. This -algorithm tolerates isolated singularities. The value ITERATIONS here -limits the number of local interval intersection levels. a is a -measure for the relative total discretization error (comparison of -order 1 and order 2 approximations). - -NUM_INT(exp,var=(l .. u) [,var=(l .. u),...] [,accuracy=a][,iterations=i]) - -where exp is the function to be integrated, var are the integration -variables, l are the lower bounds, u are the upper bounds. - -Result is the value of the integral. - -Example: - on rounded; - num_int(sin x,x=(0 .. pi)); 2.0 - -\endsection -\item[NUM_MIN] -NUM_MIN (page 182) - -The Fletcher Reeves version of the STEEPEST_DESCENT algorithms is used -to find the minimum of a function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be specified; if not, -random values are taken instead. The steepest descent algorithms in -general find only local minima. - -Syntax: - - NUM_MIN(exp, var[=val] [,var[=val] ... [,accuracy=a] [,iterations=i]) -NUM_MIN(exp, {var[=val] [,var[=val} ...] } [,accuracy=a] [,iterations=i]) - -where exp is a function expression, var are the variables in exp and -val are the (optional) start values. For a and i see NUMERIC_ACCURACY. - -NUM_MIN tries to find the next local minimum along the descending path -starting at the given point. The result is a LIST with the minimum -function value as first element followed by a list of equations, where -the variables are equated to the coordinates of the result point. - -Examples: - load numeric; - num_min(sin(x)+x/5, x); { - 0.0775892231689,{x=4.51200216375}} - num_min(sin(x)+x/5, x=0); { - 1.33416631212,{x= - 1.78326532423}} - -\endsection -\item[NUM_ODESOLVE] -NUM_ODESOLVE (page 182) - -The Runge-Kutta method of order 3 finds an approximate graph for the -solution of real ODE initial value problem. - -NUM_ODESOLVE(exp,depvar=start, indep=(from .. to) [,accuracy=a][,iterations=i]) -NUM_ODESOLVE({exp,exp,...},{depvar=start,depvar=start,...} indep=(from .. to) - [,accuracy=a][,iterations=i]) - -where depvar and start specify the dependent variable(s) and the -starting point value (vector), indep, from and to specify the -independent variable and the integration interval (starting point and -end point), exp are equations or expressions which contain the first -derivative of the independent variable with respect to the dependent -variable. - -The ODEs are converted to an explicit form, which then is used for a -Runge Kutta iteration over the given range. The number of steps is -controlled by the value of i (default: 20). If the steps are too -coarse to reach the desired accuracy in the neighborhood of the -starting point, the number is increased automatically. - -Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. - -Example: -num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5); - - {{0.0,1.0},{0.2,1.2214},{0.4,1.49181796},{0.6,1.8221064563}, - {0.8,2.2255208258},{1.0,2.7182511366}} - -If in exp the differential is not isolated on the left-hand side, -please ensure that the dependent variable is explicitly declared using -a DEPEND otherwise the formal derivative will be computed to zero by -REDUCE. - -The operator SOLVE is used to convert the form into an explicit -ODE. If that process fails or has no unique result, the evaluation is -stopped with an error message. - -\endsection -\item[NUM_SOLVE] -NUM_SOLVE (page 182) - -An adaptively damped Newton iteration is used to find an approximative -root of a function (function vector) or the solution of an EQUATION -(equation system). The expressions must have continuous derivatives -for all variables. A starting point for the iteration can be -given. If not given random values are taken instead. When the number -of forms is not equal to the number of variables, the Newton method -cannot be applied. Then the minimum of the sum of absolute squares is -located instead. - -With COMPLEX on, solutions with imaginary parts can be found, if -either the expression(s) or the starting point contain a nonzero -imaginary part. - - NUM_SOLVE(exp, var[=val][,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, var[=val],...,var[=val] [,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, {var[=val],...,var[=val]} - [,accuracy=a][,iterations=i]) - -where exp are function expressions, - var are the variables, - val are optional start values. -For a and i see NUMERIC_ACCURACY. - -NUM_SOLVE tries to find a zero/solution of the expression(s). Result -is a list of equations, where the variables are equated to the -coordinates of the result point. - -The Jacobian matrix is stored as side effect the shared jacobian. - -Examples: -num_solve({sin x=cos y, x + y = 1},{x=1,y=2}); - {X= - 52.1216769476,Y=53.1216769476} - [COS(X) SIN(Y)] -jacobian; [ ] - [ 1 1 ] -\endsection -\xitem[Number] -Number (pages 34, 35) - -\endsection -\item[NUMBERP] -NUMBERP (page 46) -The NUMBERP operator returns TRUE if its argument is a number, -and NIL otherwise. - - NUMBERP(expression) or NUMBERP expression - -expression can be any REDUCE scalar expression. - -Examples: -cc := 15.3; CC := 15.3 -if numberp(cc) then write "number" else write "nonnumber"; number -if numberp(cb) then write "number" else write "nonnumber"; nonnumber - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[NUMERIC package] -NUMERIC package (page 337) - -The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use the ROUNDED -mode arithmetic of REDUCE, including the variable precision feature -which is exploited in some algorithms in an adaptive manner in order -to reach the desired accuracy. - -\endsection -\xitem[Numerical operator] -Numerical operator (page 71) - -\endsection -\xitem[Numerical precision] -Numerical precision (page 36) - -\endsection -\item[ODD] -ODD (page 90) - - ODD identifier{,identifier} - -This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner -are transformed if the first argument contains a minus sign. Any -other arguments are not affected. - -Examples: - odd f; - f(-a) -F(A) - f(-a,-b) -F(A,-B) - f(a,-b) F(A,-B) - -If say F is declared odd, then F(0) is replaced by zero unless F is -also declared non zero by the declaration NONZERO. - -\endsection -\xitem[ODEDEGREE] -ODEDEGREE (page 350) - -\endsection -\xitem[ODELINEARITY] -ODELINEARITY (page 350) - -\endsection -\xitem[ODEORDER] -ODEORDER (page 350) - -\endsection -\item[ODESOLVE] -ODESOLVE (pages 183, 349) - -Main Author: Malcolm A.H. MacCallum -Other contributors: Francis Wright, Alan Barnes - -Ordinary Differential Equations Solver. - -The ODESOLVE package is a solver for ordinary differential -equations. At the present time it has very limited capabilities. -It can handle only a single scalar equation presented as an -algebraic expression or equation, and it can solve only first- -order equations of simple types, linear equations with constant -coefficients and Euler equations. These solvable types are exactly -those for which Lie symmetry techniques give no useful information. - -For example, the evaluation of - depend(y,x); - odesolve(df(y,x)=x**2+e**x,y,x); -yields the result - X 3 - 3*E + 3*ARBCONST(1) + X - {Y=---------------------------} - 3 - -\endsection -\item[OFF] -OFF (pages 68, 69) - -The OFF command is used to turn switches off. - - OFF switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already off. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ON] -ON (pages 68, 69) - -The ON command is used to turn switches on. - - ON switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already on. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ONE_OF] -ONE_OF (page 86) -The operator ONE_OF is used to represent an indefinite choice -of one element from a finite set of objects. - -Example: - x=one_of{1,2,5} - -This equation encodes that x can take one of the values 1,2 or 5 - -REDUCE generates a ONE_OF form in cases when an implicit ROOT_OF -expression could be converted to an explicit solution set. A ONE_OF -form can be converted to a SOLVE solution using EXPAND_CASES. See -ROOT_OF. - -\endsection -\item[OPERATOR] -OPERATOR (page 202) - -Use the OPERATOR declaration to declare your own operators. - - OPERATOR identifier{,identifier} - -identifier can be any valid REDUCE identifier, which is not the name -of a MATRIX, ARRAY, scalar variable or previously-defined operator. - -Examples: -operator dis,fac; -let dis(~x,~y) = sqrt(x^2 + y^2); -dis(1,2); SQRT(5) - 2 -dis(a,10); SQRT(A + 100) -on rounded; -dis(1.5,7.2); 7.35459040329 -let fac(~n) = - if n=0 then 1 - else if not(fixp n and n>0) - then rederr "choose non-negative integer" - else for i := 1:n product i; - -fac(5); 120 -fac(-2); ***** choose non-negative integer - -The first operator is the Euclidean distance metric, the distance of -point (x,y) from the origin. The second operator is the factorial. - -Operators can have various properties assigned to them; they can be -declared INFIX, LINEAR, SYMMETRIC, ANTISYMMETRIC, or NONCOMmutative. -The default operator is prefix, nonlinear, and commutative. -Precedence can also be assigned to operators using the declaration -PRECEDENCE. - -Functionality is assigned to an operator by a LET statement or a -FORALL...LET statement, (or possibly by a procedure with the name of -the operator). Be careful not to redefine a system operator by -accident. REDUCE permits you to redefine system operators, giving you -a warning message that the operator was already defined. This -flexibility allows you to add mathematical rules that do what you want -them to do, but can produce odd or erroneous behaviour if you are not -careful. - -You can declare operators from inside PROCEDUREs, as long as they are -not local variables. Operators defined inside procedures are global. -A formal parameter may be declared as an operator, and has the effect -of declaring the calling variable as the operator. - -\endsection -\xitem[Operator precedence] -Operator precedence (page 39, 41) - -\endsection -\item[ORDER] -ORDER (pages 101, 114) - -The ORDER declaration changes the order of precedence of kernels for -display purposes only. - - ORDER identifier{,identifier} - -kernel must be a valid KERNEL or OPERATOR name complete with argument. - -Examples: -x + y + z + cos(a); COS(A) + X + Y + Z -order z,y,x,cos(a); -x + y + z + cos(a); Z + Y + X + COS(A) - 2 2 -(x + y)**2; Y + 2*Y*X + X -order nil; - 2 2 -(z + cos(z))**2; COS(Z) + 2*COS(Z)*Z + Z - -ORDER affects the printing order of the identifiers only; internal -order is unchanged. Change internal order of evaluation with the -declaration KORDER. You can use ORDER to feature variables or -functions you are particularly interested in. - -Declarations made with ORDER are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, -specific kernels named in new declarations are removed from previous -ones and given the new priority. Return to the standard canonical -printing order with the statement ORDER NIL. - -The print order specified by ORDER commands is not in effect if the -switch PRI is off. - -\endsection -\xitem[ordering exterior form] -ordering - exterior form (page 268) - -\endsection -\xitem[ordinary differential equations] -ordinary differential equations (page 349) - -\endsection -\item[ORDP] -ORDP (pages 46, 92) - -The ORDP logical operator returns TRUE if its first argument is -ordered ahead of its second argument in canonical internal ordering, -or is identical to it. - - ORDP(expression1,expression2) - -expression1 and expression2 can be any valid REDUCE scalar expression. - -Examples: -if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no"; no -if ordp(101,100) then write "yes" else write "no"; yes -if ordp(x,x) then write "yes" else write "no"; yes - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[ORTHOVEC] -ORTHOVEC (pages 184, 353) - -Author: James W. Eastwood - -A Package for the Manipulation of Scalars and Vectors. - -ORTHOVEC is a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars -and vectors. Operations include addition, subtraction, dot and -cross products, division, modulus, div, grad, curl, laplacian, -differentiation, integration, and Taylor expansion. - -\endsection -\item[OUT] -OUT (pages 153, 154) - -The OUT command directs output to the filename that is its argument, -until another OUT changes the output file, or SHUT closes it. - OUT filename or OUT "pathname " or OUT T - -filename must be in the current directory, or be a valid complete -file description for your system. If the file name is not -in the current directory, quote marks are needed around the file name. -If the file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. - - -To restore output to the terminal, type OUT T, or SHUT the -file. When you use OUT T, the file remains available, and if you -open it again (with another OUT), new material is appended rather -than overwriting. - -To write a file using OUT that can be input at a later time, the -switch NAT must be turned off, so that the standard linear form -is saved that can be read in by IN. If NAT is on, exponents -are printed on the line above the expression, which causes trouble -when REDUCE tries to read the file. - -There is a slight complication if you are using the OUT command from -inside a file to create another file. The ECHO switch is normally -off at the top-level and on while reading files (so you can see what is -being read in). If you create a file using OUT at the top-level, -the result lines are printed into the file as you want them. But if you -create such a file from inside a file, the ECHO switch is on, and -every line is echoed, first as you typed it, then as REDUCE parsed it, and -then once more for the file. Therefore, when you create a file from -a file, you need to turn ECHO off explicitly before the OUT -command, and turn it back on when you SHUT the created file, so your -executing file echoes as it should. This behaviour also means that as you -watch the file execute, you cannot see the lines that are being put into -the OUT file. As soon as you turn ECHO on, you can see -output again. - -\endsection -\item[OUTPUT] -OUTPUT (page 100) - -When OUTPUT is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default is -ON. - - -Turn output OFF if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large expressions -for display. Results are still available with WS, or in their -assigned variables. - -\endsection -\xitem[Output] -Output (pages 105, 110) - -\endsection -\xitem[Output declaration] -Output declaration (pages 100, 101) - -\endsection -\item[OVERVIEW] -OVERVIEW - -When OVERVIEW is on, the amount of detail reported by the factoriser -switches TRFAC and TRALLFAC is reduced. - - -\endsection -\item[PART] -PART (pages 49, 113, 116) -The operator PART permits the extraction of various parts or -operators of expressions and LISTS. - - PART(expression,integer{,integer}) - -expression can be any valid REDUCE expression or a list, integer may -be an expression that evaluates to a positive or negative integer or -0. A positive integer n picks up the nth term, counting from the -first term toward the end. A negative integer n picks up the nth -term, counting from the back toward the front. The integer 0 picks up -the operator (which is LIST when the expression is a list). - -Examples: - 2 3 -part((x + y)**5,4); 10*X *Y - - 2 -part((x + y)**5,4,2); X - -part((x + y)**5,4,2,1); X -part((x + y)**5,0); PLUS - 4 -part((x + y)**5,-5); 5*x *y - - 5 4 3 2 4 5 -part((x + y)**5,4) := sin(x); x + 5*x *y + 10*x *y + sin(x) + 5*x*y + y - -alist := {x,y,{aa,bb,cc},x**2*sqrt(y)}; - ALIST := {X, - Y, - {AA,BB,CC}, - 2 - SQRT(Y)*X } -part(alist,3,2); BB -part(alist,4,0); TIMES - -Additional integer arguments after the first one examine the terms -recursively, as shown above. In the third line, the fourth term is -picked from the original polynomial, 10x^2y^3, then the second term -from that, x^2, and finally the first component, x. If an integer's -absolute value is too large for the appropriate expression, a message -is given. - -PART works on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind -the current switch settings. It is important to realise that the -switch settings change the operation of PART. PRI must be on when -PART is used. - -When PART is used on a polynomial expression that has minus signs, the -+ is always returned as the top-level operator. The minus is found as -a unary operator attached to the negative term. - -PART can also be used to change the relevant part of the expression or -list as shown in the sixth example line. The PART operator returns the -changed expression, though original expression is not changed. You can -also use PART to change the operator. - -\endsection -\xitem[partial differentiation] -partial differentiation (page 251) - -\endsection -\item[PAUSE] -PAUSE (page 160)) -The PAUSE command, given in an interactive file, stops operation and -asks if you want to continue or not. - -Examples: -An interactive file is running, and at some point you see the -question - Cont? (Y or N) -If you type y {Return} -the file continues to run until the next pause or the end. -If you type n {Return} - -you will get a numbered REDUCE prompt, and be allowed to enter and -execute any REDUCE statements. If you later wish to continue with the -file, type - cont; -and the file resumes. - -To use PAUSE in your own interactive files, type - -PAUSE; - -in the file wherever you want it. - -PAUSE does not allow you to continue without typing either Y or N. -Its use is to slow down scrolling of interactive files, or to let you -change parameters or switch settings for the calculations. - -If you have stopped an interactive file at a PAUSE, and do not wish to -resume the file, type END;. This does not end the REDUCE session, but -stops input from the file. A second END; ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an -END; brings you back to the top level, not the file directly above. - -A PAUSE typed from the terminal has no effect. - -\endsection -\xitem[PCLASS] -PCLASS (pages 379, 380, 383) - -\endsection -\xitem[Percent sign] -Percent sign (page 38) - -\endsection -\item[PERIOD] -PERIOD (page 111) - -When PERIOD is on, periods are added after integers in -Fortran-compatible output (when FORT is on). There is no effect -when FORT is off. Default is ON. - -\endsection -\item[PF] -PF (page 83) - - PF(expression,variable) - -PF transforms expression into a LIST of partial fractions with respect -to the main variable, variable. PF does a complete partial fraction -decomposition, and as the algorithms used are fairly unsophisticated -(factorisation and the extended Euclidean algorithm), the code may be -unacceptably slow in complicated cases. - -Examples: - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,--------------} - x + 2 x + 1 2 - x + 2*x + 1 -off exp; -pf(2/((x+1)^2*(x+2)),x); - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,----------} - x + 2 x + 1 2 - (x + 1) - - 2 -for each j in ws sum j; ------------------ - 2 - (x + 2)*(x + 1) - -If you want the denominators in factored form, turn EXP off, as shown -in the second example above. As shown in the final example, the FOR -EACH construct can be used to recombine the terms. Alternatively, one -can use the operations on lists to extract any desired term. - -\endsection -\xitem[PFORM command] -PFORM command (page 271) - -\endsection -\xitem[PFORM statement] -PFORM statement (page 249) - -\endsection -\item[PI] -PI (page 37) - -The identifier PI is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. - - -PI may be used as a looping variable in a FOR statement, -or as a local variable in a PROCEDURE. Its value in such cases will be -taken from the local environment. - -\endsection -\xitem[PLOT] -PLOT (page 181) - -\endsection -\item[POCHHAMMER] -POCHHAMMER (pages 185, 394) - -The POCHHAMMER operator implements the Pochhammer notation -(shifted factorial). - - POCHHAMMER(expression,expression) - -Examples: -load_package specfn; (SPECFN) -pochhammer(17,4); 116280 - - FACTORIAL(2*Z) -pochhammer(1/2,z); ------------------- - 2*Z - 2 *FACTORIAL(Z) - -A number of complex rules for POCHHAMMER are inactive, because they -cause a huge system load in algebraic mode. If one wants to use more -rules for the simplification of Pochhammer's notation, one can do: - let special!*pochhammer!*rules; - -\endsection -\item[POLYGAMMA] -POLYGAMMA (pages 185, 395) - -The POLYGAMMA operator returns the Polygamma function. - - Polygamma(n,x) := df(Psi(z),z,n); - - POLYGAMMA(integer,expression) - -Examples: - load_package specfn; (SPECFN) - PI - 6 - Polygamma(1,2); --------- - 6 - on rounded; - Polygamma(1,2.35); 0.52849689109 - -The POLYGAMMA function is used for simplification of the ZETA function -for some arguments. - -\endsection -\xitem[Polynomial] -Polynomial (page 119) - -\endsection -\xitem[Polynomial equations] -Polynomial equations (page 181) - -\endsection -\xitem[POSITIVE] -POSITIVE (page 368) - -\endsection -\xitem[power series] -power series (page 413) - -\endsection -\xitem[power series arithmetic] -power series - arithmetic (page 422) - composition (page 420) - differentiation (page 422) - of integral (page 415) - of user defined function (page 415) - -\endsection -\item[PRECEDENCE] -PRECEDENCE (page 94) - -The PRECEDENCE declaration attaches a precedence to an infix operator. - - PRECEDENCE operator, known_operator - -operator should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. -known_operator must be a system infix operator or have had its -precedence already declared. - -Examples: -operator f,h; -precedence f,+; -precedence h,*; -a + f(1,2)*c; (1 F 2)*C + A -a + h(1,2)*c; 1 H 2*C + A -a*1 f 2*c; A F 2*C -a*1 h 2*c; 1 H 2*A*C - -The operator whose precedence is being declared is inserted into the -infix operator precedence list at the next higher place than -known-operator. - -Attaching a precedence to an operator has the side effect of declaring -the operator to be infix. If the identifier argument for PRECEDENCE -has not been declared to be an operator, an attempt to use it causes -an error message. After declaring it to be an operator, it becomes an -infix operator with the precedence previously given. Infix operators -may be used in prefix form; if they are used in infix form, a space -must be left on each side of the operator to avoid ambiguity. -Declared infix operators are always binary. - -To see the infix operator precedence list, enter symbolic mode and -type PRECLIS!*;. The lowest precedence operator is listed first. - -All prefix operators have precedence higher than infix operators. - -\endsection -\item[PRECISE] -PRECISE (page 78) - -When the PRECISE switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. - -Examples: -sqrt(x**2); X -(x**2)**(1/4); SQRT(X) -on precise; -sqrt(x**2); ABS(X) -(x**2)**(1/4); SQRT(ABS(X)) - -In many types of mathematical work, simplification of powers and surds -can proceed by the fastest means of simplifying the exponents -arithmetically. When it is important to you that the positive root be -returned, turn PRECISE on. One situation where this is important is -when graphing square-root expressions such as sqrt(x^2+y^2) to avoid a -spike caused by REDUCE simplifying sqrt(y^2) to y when x is zero. - -\endsection -\item[PRECISION] -PRECISION (pages 132, 374) - -The PRECISION declaration sets the number of decimal places used when -ROUNDED is on. Default is system dependent, and normally about 12. - - PRECISION(integer) or PRECISION integer - -integer must be a positive integer. When integer is 0, the current -precision is displayed, but not changed. There is no upper limit, but -precision of greater than several hundred causes unpleasantly slow -operation on numeric calculations. - -Examples: -on rounded; -7/9; 0.777777777778 -precision 20; 20 -7/9; 0.77777777777777777778 -sin(pi/4); 0.7071067811865475244 - -Trailing zeroes are dropped, so sometimes fewer than 20 decimal places -are printed as in the last example. Turn on the switch FULLPREC if -you want to print all significant digits. The ROUNDED mode carries -calculations to two more places than given by PRECISION, and rounds -off. - -\endsection -\item[PREDUCE] -PREDUCE (page 308) - - PREDUCE(p, {exp, ... }[,vars]) - -where p is an expression, and {exp, ... } is a list of expressions or -equations and vars is an optional list of variables (see IDEAL -parameters). - -PREDUCE computes the remainder of EXP modulo the given set of -polynomials resp. equations. This result is unique (canonical) only -if the given set is a GROEBNER basis under the current TERM order. - -see also: PREDUCET operator. - -\endsection -\item[PREDUCET] -PREDUCET (page 311) - - PREDUCE(p,{v=exp...}[,vars]) - -where p is an expression, v are kernels (simple or indexed variables), -EXP are polynomials and optional vars is a variable list (see IDEAL -parameters). - -PREDUCET computes the remainder of p modulo {exp,...} similar to -PREDUCE, but the result is an equation which expresses the remainder -as combination of the polynomials. - -Example: - - gb2 := {g1=2*x - y + 1,g2=9*y**2 - 2*y - 199}$ - preducet(q=x**2,gb2); - - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2 - - -\endsection -\xitem[Prefix] -Prefix (pages 71, 93, 95) - -\endsection -\xitem[Prefix operator] -Prefix operator (page 38, 39) - -\endsection -\item[PRET] -PRET (pages 217, 218) - -When PRET is on, input is printed in standard REDUCE format and then -evaluated. - -Examples: -on pret; -(x+1)^3; (x + 1)**3; - 3 2 - X + 3*X + 3*X + 1 - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - procedure fac n; - if not (fixp n and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n - 1 product i + 1; - - FAC - -fac 5; fac 5; - 120 - -Note that all input is converted to lower case except strings (which -keep the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on -each side. In addition, syntactical constructs like IF...THEN...ELSE -are printed in a standard format. - -\endsection -\xitem[PRETTYPRINT] -PRETTYPRINT (page 218) - -\endsection -\xitem[Prettyprinting] -Prettyprinting (pages 217, 218) - -\endsection -\xitem[PRGEN] -PRGEN (page 378) - -\endsection -\item[PRI] -PRI (page 101) - -When PRI is on, the declarations ORDER and FACTOR can -be used, and the switches ALLFAC, DIV, RAT, -and REVPRI take effect when they are on. Default is ON. - - -Printing of expressions is faster with PRI off. The expressions are -then returned in one standard form, without any of the display options that -can be used to feature or display various parts of the expression. You can -also gain insight into REDUCE's representation of expressions with -PRI off. - -\endsection -\item[PRIMEP] -PRIMEP (page 46) - - PRIMEP(expression) or PRIMEP simple_expression - -If expression evaluates to a integer, PRIMEP returns TRUE if -expression is a prime number and NIL otherwise. If expression does -not have an integer value, a type error occurs. - -Examples: -if primep 3 then write "yes" else write "no"; YES -if primep a then 1; ***** A invalid as integer - -\endsection -\item[PRINT_PRECISION] -PRINT_PRECISION (page 133) - - PRINT_PRECISION(integer) or PRINT_PRECISION integer - -In ROUNDED mode, numbers are normally printed to the specified -precision. If the user wishes to print such numbers with less -precision, the printing precision can be set by the declaration -PRINT_PRECISION. - -Examples: -on rounded; -1/3; 0.333333333333 -print_precision 5; -1/3 0.33333 - -\endsection -\item[PROCEDURE] -PROCEDURE (page 169) - -The PROCEDURE command allows you to define a mathematical operation as a -function with arguments. - PROCEDURE identifier (arg{,arg});body - -The option may be ALGEBRAIC or SYMBOLIC, indicating the mode under -which the procedure is executed, or REAL or INTEGER, indicating the -type of answer expected. The default is algebraic. Real or integer -procedures are subtypes of algebraic procedures; type-checking is done -on the results of integer procedures, but not on real procedures (in -the current REDUCE release). identifier may be any valid REDUCE -identifier that is not already a procedure name, operator, ARRAY or -MATRIX. arg is a formal parameter that may be any valid REDUCE -identifier. body is a single statement (a GROUP or BLOCK statement -may be used) with the desired activities in it. - -Examples: - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - FAC -fac(0); 1 -fac(5); 120 -fac(-5); ***** choose nonneg. integer only - -Procedures are automatically declared as operators upon definition. -When REDUCE has parsed the procedure definition and successfully -converted it to a form for its own use, it prints the name of the -procedure. Procedure definitions cannot be nested. Procedures can -call other procedures, or can recursively call themselves. Procedure -identifiers can be cleared as you would clear an operator. Unlike LET -statements, new definitions under the same procedure name replace the -previous definitions completely. - -Be careful not to use the name of a system operator for your own -procedure. REDUCE may or may not give you a warning message. If you -redefine a system operator in your own procedure, the original -function of the system operator is lost for the remainder of the -REDUCE session. - -Procedures may have none, one, or more than one parameter. A REDUCE -parameter is a formal parameter only; the use of x as a parameter in a -PROCEDURE definition has no connection with a value of x in the REDUCE -session, and the results of calling a procedure have no effect on the -value of x. If a procedure is called with x as a parameter, the -current value of x is used as specified in the computation, but is not -changed outside the procedure. Making an assignment statement by := -with a formal parameter on the left-hand side only changes the value -of the calling parameter within the procedure. - -Using a LET statement inside a procedure always changes the value -globally: a LET with a formal parameter makes the change to the -calling parameter. LET statements cannot be made on local variables -inside BEGIN...END BLOCKS. When CLEAR statements are used on formal -parameters, the calling variables associated with them are cleared -globally too. The use of LET or CLEAR statements inside procedures -should be done with extreme caution. - -Arrays and operators may be used as parameters to procedures. The -body of the procedure can contain statements that appropriately -manipulate these arguments. Changes are made to values of the calling -arrays or operators. Simple expressions can also be used as -arguments, in the place of scalar variables. Matrices may not be used -as arguments to procedures. - -A procedure that has no parameters is called by the procedure name, -immediately followed by empty parentheses. The empty parentheses may -be left out when writing a procedure with no parameters, but must -appear in a call of the procedure. If this is a nuisance to you, use -a LET statement on the name of the procedure (i.e., LET NOARGS = -NOARGS()) after which you can call the procedure by just its name. - -Procedures that have a single argument can leave out the parentheses -around it both in the definition and procedure call. (You can use the -parentheses if you wish.) Procedures with more than one argument must -use parentheses, with the arguments separated by commas. - -Procedures often have a BEGIN...END block in them. Inside the block, -local variables are declared using SCALAR, REAL or INTEGER -declarations. The declarations must be made immediately after the -word BEGIN, and if more than one type of declaration is made, they are -separated by semicolons. REDUCE currently does no type checking on -local variables; REAL and INTEGER are treated just like SCALAR. -Actions take place as specified in the statements inside the block -statement. Any identifiers that are not formal parameters or local -variables are treated as global variables, and activities involving -these identifiers are global in effect. - -If a return value is desired from a procedure call, a specific RETURN -command must be the last statement executed before exiting from the -procedure. If no RETURN is used, a procedure returns a zero or no -value. - -Procedures are often written in a file using an editor, then the file -is input using the command IN. This method allows easy changes in -development, and also allows you to load the named procedures whenever -you like, by loading the files that contain them. - -\endsection -\xitem[Procedure body] -Procedure body (pages 171--173) - -\endsection -\xitem[Procedure heading] -Procedure heading (page 170) - -\endsection -\item[PROD] -PROD operator (page 403) - -The operator PROD returns -the indefinite or definite product of a given expression. - - -PROD(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be multiplied, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: -prod(k/(k-2),k); k*( - k + 1) - -\endsection -\item[PRODUCT] -PRODUCT (page 57, 58) - -See the FOR loop construction. - -\endsection -\xitem[Program] -Program (page 38) - -\endsection -\xitem[Program structure] -Program structure (page 33) - -\endsection -\xitem[Proper statement] -Proper statement (pages 48, 53, 54) - -\endsection -\xitem[PRSYS] -PRSYS (pages 378, 382) - -\endsection -\xitem[PS] -PS (page 188) - -\endsection -\xitem[PS operator] -PS operator (page 414) - -\endsection -\xitem[PSCHANGEVAR operator] -PSCHANGEVAR operator (page 418) - -\endsection -\xitem[PSCOMPOSE operator] -PSCOMPOSE operator (page 420) - -\endsection -\xitem[PSDEPVAR operator] -PSDEPVAR operator (page 418) - -\endsection -\xitem[PSEXPANSIONPT operator] -PSEXPANSIONPT operator (page 418) - -\endsection -\xitem[PSEXPLIM operator] -PSEXPLIM operator (pages 414, 416) - -\endsection -\xitem[PSFUNCTION operator] -PSFUNCTION operator (page 418) - -\endsection -\item[PSI] -PSI (pages 185, 395) - -The PSI operator returns the Psi (or DiGamma) function. - - Psi(x) := df(Gamma(z),z)/ Gamma (z) - - GAMMA(expression) - -Examples: - load_package specfn; - 1 - 2*LOG(2) + PSI(---) + PSI(1) + 3 - 2 - Psi(3); ---------------------------------- - 2 - - on rounded; - - Psi(1); 0.577215664902 - -Euler's constant can be found as - Psi(1). - -\endsection -\xitem[PSINTCONST (shared)] -PSINTCONST (shared) (page 415) - -\endsection -\xitem[PSORDER operator] -PSORDER operator (page 417) - -\endsection -\xitem[PSORDLIM operator] -PSORDLIM operator (page 416) - -\endsection -\xitem[PSREVERSE operator] -PSREVERSE operator (page 419) - -\endsection -\xitem[PSSETORDER operator] -PSSETORDER operator (page 417) - -\endsection -\xitem[PSSUM operator] -PSSUM operator (page 421) - -\endsection -\xitem[PSTERM operator] -PSTERM operator (page 417) - -\endsection -\xitem[Puiseux expansion] -Puiseux expansion (page 419) - -\endsection -\xitem[PUTCSYSTEM command] -PUTCSYSTEM command (page 235) - -\endsection -\xitem[Quadrature] -Quadrature (page 182) - -\endsection -\item[QUIT] -QUIT (page 70) - -The QUIT command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are -at the top level, the QUIT command exits REDUCE. BYE is a synonym for -QUIT. - -\endsection -\xitem[QUOTE] -QUOTE (page 193) - -\endsection -\xitem[RANDOM] -RANDOM (page 74) - -\endsection -\xitem[RANDOM_NEW_SEED] -RANDOM_NEW_SEED (page 75) - -\endsection -\item[RANK] -RANK (page 167) - - RANK(matrix_expression) -RANK calculates the rank of its matrix argument. - -Examples: - rank mat((a,b,c),(d,e,f)); 2 - -The argument to RANK can also be a LIST of lists, interpreted either -as a row matrix or a set of equations. If that form of input is -chosen, the vectors in the result will be represented by lists as -well. This additional input syntax facilitates the use of RANK in -applications different from classical linear algebra. - -\endsection -\item[RAT] -RAT (page 104) - -When the RAT switch is on, and kernels have been selected to display -with the FACTOR declaration, the denominator is printed with each -term rather than one common denominator at the end of an expression. - -Examples: 3 - SIN(Y)*X + SIN(Y) + X -(x+1)/x + x**2/sin y; ------------------------ - SIN(Y)*X -factor x; - 3 - X + X*SIN(Y) + SIN(Y) -(x+1)/x + x**2/sin y; ------------------------ - X*SIN(Y) -on rat; - 2 - X -1 -(x+1)/x + x**2/sin y; -------- + 1 + X - SIN(Y) - -The RAT switch only has effect when the PRI switch is on. -When PRI is off, regardless of the setting of RAT, the -printing behaviour is as if RAT were off. RAT only has -effect upon the display of expressions, not their internal form. - -\endsection -\item[RATARG] -RATARG (pages 115, 128) - -When RATARG is on, rational expressions can be given to operators -such as COEFF and LTERM that normally require -polynomials in one of their arguments. When RATARG is off, rational -expressions cause an error message. - -Examples: 3 2 3 - X + X*Y + Y -aa := x/y**2 + 1/x + y/x**2; AA := ---------------- - 2 2 - X *Y - 3 2 3 - X + X*Y + Y -coeff(aa,x); ***** ---------------- invalid as POLYNOMIAL - 2 2 - X *Y -on ratarg; - Y 1 1 -coeff(aa,x); {----,----,0,-------} - 2 2 2 2 - X X X *Y - -\endsection -\item[RATIONAL] -RATIONAL (page 132) - -When RATIONAL is on, polynomial expressions with rational coefficients -are produced. - -Examples: - 2*X + 3*Y -x/2 + 3*y/4; ----------- - 4 - 2 - X + 5*X + 17 -(x**2 + 5*x + 17)/2; --------------- - 2 -on rational; - 1 3 -x/2 + 3y/4; ---*(X + ---*Y) - 2 2 - - 1 2 -(x**2 + 5*x + 17)/2; ---*(X + 5*X + 17) - 2 - -By using RATIONAL, polynomial expressions with rational coefficients -can be used in some commands that expect polynomials. With RATIONAL -off, such a polynomial becomes a rational expression, with denominator -the least common multiple of the denominators of the rational number -coefficients. - -\endsection -\xitem[Rational coefficient] -Rational coefficient (page 132) - -\endsection -\xitem[Rational function] -Rational function (page 119) - -\endsection -\item[RATIONALIZE] -RATIONALIZE (page 135) - -When the RATIONALIZE switch is on, denominators of rational expressions -that contain complex numbers or root expressions are simplified by -multiplication by their conjugates. - -Examples: - SQRT(3) + 1 -qq := (1+sqrt(3))/(sqrt(3)-7); QQ := ------------- - SQRT(3) - 7 -on rationalize; - - 4*SQRT(3) - 5 -qq; ------------------ - 23 - 2/3 1/3 - 6 - 4*6 + 16 -2/(4 + 6**(1/3)); -------------------- - 35 -on complex; - 1 - 2*i -(i-1)/(i+3); --------- - 5 - - -\endsection -\item[RATPRI] -RATPRI (page 104) - -When the RATPRI switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a linear -style. Default is ON. - -Examples: - 3 -3/17; ---- - 17 - 3*B + 2*Y -2/b + 3/y; ----------- - B*Y -off ratpri; -3/17; 3/17 -2/b + 3/y; (3*B + 2*Y)/(B*Y) - -\endsection -\xitem[RATROOT] -RATROOT (page 373) - -\endsection -\item[REAL] -REAL (page 61) - -The REAL declaration must be made immediately after a BEGIN (or other -variable declaration such as INTEGER and SCALAR) and declares local -integer variables. They are initialised to zero. - - REAL identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Real variables remain local, and do not share values with variables of -the same name outside the BEGIN...END block. When the block is -finished, the variables are removed. You may use the words INTEGER or -SCALAR in the place of REAL. REAL does not indicate type-checking by -the current REDUCE; it is only for your own information. Declaration -statements must immediately follow the BEGIN, without a semicolon -between BEGIN and the first variable declaration. - -Any variables used inside a BEGIN...END BLOCK that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Any array or matrix declared -inside a block is always global. - -\endsection -\xitem[Real] -Real (pages 34, 35) - -\endsection -\xitem[Real coefficient] -Real coefficient (page 132) - -\endsection -\item[REALROOTS] -REALROOTS (pages 369, 370) - -The operator REALROOTS finds that real roots of a polynomial to an -accuracy that is sufficient to separate them and which is a minimum of -6 decimal places. - - REALROOTS(p) - REALROOTS(p,from,to) - -where p is a univariate polynomial. The optional parameters from and -to classify an interval: if given, exactly the real roots in this -interval will be returned. from and to can also take the values -INFINITY or -INFINITY. If omitted all real roots will be returned. -Result is a LIST of equations which represent the roots of the -polynomial at the given accuracy. - -Examples: - realroots(x^5-2); {X=1.1487} - realroots(x^3-104*x^2+403*x-300,2,infinity); {X=3.0,X=100.0} - realroots(x^3-104*x^2+403*x-300,-infinity,2); {X=1} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[REDERR] -REDERR (page 173) - -\endsection -\item[REDUCT] -REDUCT (page 131) -The REDUCT operator returns the remainder of its expression after the -leading term is removed. - - REDUCT(expression,kernel) - -expression is ordinarily a polynomial. If RATARG is on, a rational -expression may also be used, otherwise an error results. kernel must -be a KERNEL. - -Examples: - 3 -reduct((x+y)**3,x); (x + y) - -reduct(x + sin(x)**3,sin(x)); x - 3 -reduct(x + sin(x)**3,y); sin(x) + x - -If the expression does not contain the kernel, REDUCT returns the -expression. - -\endsection -\xitem[side relations] -relations - side (page 241) - -\endsection -\item[REMAINDER] -REMAINDER (page 126) -The REMAINDER operator returns the remainder after its first -argument is divided by its second argument. - - REMAINDER(expression,expression) - -expression can be any valid REDUCE polynomial, and is not limited -to numeric values. - -Examples: -remainder(13,6); 1 -remainder(x**2 + 3*x + 2,x+1); 0 -remainder(x**3 + 12*x + 4,x**2 + 1); 11*X + 4 -remainder(sin(2*x),x*y); SIN(2*X) - -If the first argument to REMAINDER contains a denominator not equal to -1, an error occurs. - -\endsection -\item[REMFAC] -REMFAC (page 102) - -The REMFAC declaration removes the special factoring treatment of its -arguments that was declared with FACTOR. - -REMFAC kernel{,kernel} - -kernel must be a KERNEL or OPERATOR name that was declared as special -with the FACTOR declaration. - -\endsection -\xitem[REMFORDER command] -REMFORDER command (pages 268, 271) - -\endsection -\item[REMIND] -REMIND (page 206) - -The REMIND declaration removes the special status of its arguments -as indices, which was set in the INDEX declaration, in -high-energy physics calculations. - REMIND identifier{,identifier} - -identifier must have been declared to be of type INDEX. - -\endsection -\xitem[RENOSUM command] -RENOSUM command (pages 262, 271) - -\endsection -\item[REPART] -REPART (pages 72, 73, 75) - - REPART(expression) or REPART simple_expression - -This operator returns the real part of an expression, if that argument -has an numerical value. A non-numerical argument is returned as an -expression in the operators REPART and IMPART. - -Examples: -repart(1+i); 1 -repart(a+i*b); REPART(A) - IMPART(B) - -\endsection -\item[REPEAT] -REPEAT (pages 60, 61, 63, 65) - -The REPEAT command causes repeated execution of a statement UNTIL -the given condition is found to be true. The statement is always executed -at least once. - REPEAT statement UNTIL condition - -statement can be a single statement, GROUP statement, or -a BEGIN...END BLOCK. condition must be a logical -operator that evaluates to rue or nil. - -Examples: -<> until m = 0>>; - 400*X - 300*X - 200*X - 100*X - -<> until m <= 0>>; - -1 - -REPEAT must always be followed by an UNTIL with a condition. Be -careful not to generate an infinite loop with a condition that is -never true. In the second example, if the condition had been M = 0, -it would never have been true since M already had value -2 when the -condition was first evaluated. - -\endsection -\xitem[Reserved variable] -Reserved variable (pages 36, 37) - -\endsection -\item[REST] -REST (page 50) - -The REST operator returns a LIST containing all but the first element of -the list it is given. - REST(list) or REST list - - -list must be a non-empty list, but need not have more than one element. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D}; -rest alist; {B,C,D} -blist := {x,y,{aa,bb,cc},z}; BLIST := {X,Y,{AA,BB,CC},Z} -second rest blist; {AA,BB,CC} -clist := {c}; CLIST := C -rest clist; {} - -\endsection -\xitem[RESULT] -RESULT (page 378) - -\endsection -\item[RESULTANT] -RESULTANT (page 126) -The RESULTANT operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials -have a root in common. - RESULTANT(expression,expression,kernel) - -expression must be a polynomial containing kernel ; -kernel must be a KERNEL. - -Examples: -resultant(x**2 + 2*x + 1,x+1,x); 0 -resultant(x**2 + 2*x + 1,x-3,x); 16 -resultant(z**3 + z**2 + 5*z + 5, - z**4 - 6*z**3 + 16*z**2 - 30*z + 55, - z); 0 -resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); - 6 4 3 2 - 4*(x + 8*x - 15*x + 16*x - 60*x + 25) - -The resultant is the determinant of the Sylvester matrix, formed from the -coefficients of the two polynomials in the following way: - -Given two polynomials: - - n n-1 - a x + a1 x + ... + an - -and - m m-1 - b x + b1 x + ... + bm - -form the (m+n)x(m+n-1) Sylvester matrix by the following means: - - 0.......0 a a1 .......... an - 0....0 a a1 .......... an 0 - . . . . - a0 a1 .......... an 0.......0 - 0.......0 b b1 .......... bm - 0....0 b b1 .......... bm 0 - . . . . - b b1 .......... bm 0.......0 - -If the determinant of this matrix is 0, the two polynomials have a -common root. Finding the resultant of large expressions is -time-consuming, due to the time needed to find a large determinant. - -The sign conventions RESULTANT uses are those given in the article, -``Computing in Algebraic Extensions,'' by R. Loos, appearing in -Computer Algebra--Symbolic and Algebraic Computation, 2nd ed., edited -by B. Buchberger, G.E. Collins and R. Loos, and published by - -Springer-Verlag, 1983. - -These are: - resultant(p(x),q(x),x) = (-1)^{deg p(x)*deg q(x)} * resultant(q(x),p(x),x), - resultant(a,p(x),x) = a^{deg p(x)}, - resultant(a,b,x) = 1 - -where p(x) and q(x) are polynomials which have x as a variable, and -a and b are free of x. - -Error messages are given if RESULTANT is given a non-polynomial -expression, or a non-kernel variable. - -\endsection -\item[RETRY] -RETRY (page 157) -The RETRY command allows you to retry the latest statement that resulted -in an error message. - -Examples: -matrix a; -det a; ***** Matrix A not set -a := mat((1,2),(3,4)); A(1,1) := 1 - A(1,2) := 2 - A(2,1) := 3 - A(2,2) := 4 -retry; -2 - -RETRY remembers only the most recent statement that resulted in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. - -\endsection -\item[RETURN] -RETURN (pages 62--64) - -The RETURN command causes a value to be returned from inside a -BEGIN...END BLOCK. - BEGIN statements RETURN (expression) - END - -statements can be any valid REDUCE statements. The value of -expression is returned. - -Examples: -begin write "yes"; return a end; yes - A -procedure dumb(a); - begin if numberp(a) then return a - else return 10 end; - DUMB -dumb(x); 10 -dumb(-5); -5 -procedure dumb2(a); - begin c := a**2 + 2*a + 1; - d := 17; c*d; return end; - DUMB2 -dumb2(4); -c; 25 -d; 17 - -Note in DUMB2 above that the assignments were made as requested, but -the product C*D cannot be accessed. Changing the procedure to read -RETURN C*D would remedy this problem. - -The RETURN statement is always the last statement executed before -leaving the block. If RETURN has no argument, the block is exited but -no value is returned. A block statement does not need a RETURN ; the -statements inside terminate in their normal fashion without one. In -that case no value is returned, although the specified actions inside -the block take place. - -The RETURN command can be used inside <<...>> GROUP statements and -IF...THEN...ELSE commands that are inside BEGIN...END BLOCKs. It is -not valid in these constructions that are not inside a BEGIN...END -block. It is not valid inside FOR, REPEAT...UNTIL or WHILE...DO loops -in any construction. To force early termination from loops, the GO -TO(GOTO) command must be used. When you use nested block statements, -a RETURN from an inner block exits returning a value to the -next-outermost block, rather than all the way to the outside. - -\endsection -\item[REVERSE] -REVERSE (page 51) - -The REVERSE operator returns a LIST that is the reverse of the list it -is given. - REVERSE(list) or REVERSE list - -list must be a LIST. - -Examples: - 2 3 -aa := {c,b,a,{x**2,z**3},y}; AA := {C,B,A,{X ,Z },Y} - 2 3 -reverse aa; {Y,{X ,Z},A,B,C} - 2 3 -reverse(q . reverse aa); {C,B,A,{X ,Z },Y,Q} - -REVERSE and CONS can be used together to add a new element to the end -of a list (. adds its new element to the beginning). The REVERSE -operator uses a noticeable amount of system resources, especially if -the list is long. If you are doing much heavy-duty list manipulation, -you should probably design your algorithms to avoid much reversing of -lists. A moderate amount of list reversing is no problem. - -\endsection -\item[REVGRADLEX] -REVGRADLEX (page 293) - -The terms are ordered first with their total degree (degree sum), and -if the total degree is identical the comparison is the inverse of LEX -term order. With GROEBNER and GROEBNERF calculations this term order -is similar to GRADLEX term order; it is known as most efficient -ordering with respect to computing time. - -\endsection -\item[REVPRI] -REVPRI (page 105) - -When the REVPRI switch is on, terms are printed in reverse order from -the normal printing order. - -Examples: - 5 2 -x**5 + x**2 + 18 + sqrt(y); SQRT(Y) + X + X + 18 - -a + b + c + w; A + B + C + W - -on revpri; - 2 5 -x**5 + x**2 + 18 + sqrt(y); 17 + X + X + SQRT(Y) - -a + b + c + w; W + C + B + A - -Turn REVPRI on when you want to display a polynomial in ascending -rather than descending order. - -\endsection -\item[RHS] -RHS (page 47) -The RHS operator returns the right-hand side of an EQUATION, such as -those returned in a LIST by SOLVE. - - RHS(equation) or RHS equation - -equation must be an equation of the form left-hand side = right-hand side. - -Examples: - roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); - - 2 - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOTS := {X=----------------------------------------, - 2 - - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - X=-----------------------------------} - 2 - -root1 := rhs first roots; - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOT1 := ---------------------------------------- - 2 -root2 := rhs second roots; - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - ROOT2 := ----------------------------------- - 2 - -An error message is given if RHS is applied to something other than an -equation. - -\endsection -\xitem[Riemann Zeta Function] -Riemann Zeta Function (pages 185, 395) - -\endsection -\xitem[RIEMANNCONX command] -RIEMANNCONX command (pages 267, 271) - -\endsection -\xitem[Riemannian Connections] -Riemannian Connections (page 267) - -\endsection -\xitem[Rlisp] -Rlisp (page 213) - -\endsection -\item[RLISP88] -RLISP88 (page 204) - -Rlisp '88 is a superset of the Rlisp that has been traditionally used -for the support of REDUCE. It is fully documented in the book Marti, -J.B., ``RLISP '88: An Evolutionary Approach to Program Design and -Reuse'', World Scientific, Singapore (1993). It supports different -looping constructs from the traditional Rlisp, and treats ``-'' as a -letter unless separated by spaces. Turning on the switch RLISP88 -converts to Rlisp '88 parsing conventions in symbolic mode, and -enables the use of Rlisp '88 extensions. Turning off the switch -reverts to the traditional Rlisp and the previous mode (SYMBOLIC or -ALGEBRAIC) in force before RLISP88 was turned on. - -\endsection -\item[RLROOTNO] -RLROOTNO (page 369) - -The function RLROOTNO computes the number of real roots of p in the -specified region, but does not find the roots. - - RLROOTNO(expression) - RLROOTNO(expression, POSITIVE) - RLROOTNO(expression, NEGATIVE) - RLROOTNO(expression, lo, hi) - -For more details on the specification of an interval, see ISOLATER. - -Examples: - load_package roots; - rlrootno (x^3-3x^2+2x+10); 1 - rlrootno(x^3-3x^2+2x+10,positive); 0 -\endsection -\xitem[root finding] -root finding (page 367) - -\endsection -\item[ROOT_OF] -ROOT_OF (pages 85, 86) - -When the operator SOLVE is unable to find an explicit solution or if -that solution would be too complicated, the result is presented as -formal root expression using the internal operator ROOT_OF and a new -local variable. An expression with a top level ROOT_OF is implicitly a -list with an unknown number of elements since we can't always know how -many solutions an equation has. If a substitution is made into such an -expression, closed form solutions can emerge. If this occurs, the -ROOT_OF construct is replaced by an operator ONE_OF. At this point it -is of course possible to transform the result if the original SOLVE -operator expression into a standard SOLVE solution. To effect this, -the operator EXPAND_CASES can be used. - -Examples: 7 2 -solve(a*x^7-x^2+1,x); {x=root_of(a*x_ - x_ + 1,x_)} -sub(a=0,ws); {x=one_of(1,-1)} -expand_cases ws; {x=1,x=-1} - -The components of ROOT_OF and ONE_OF expressions can be processed as -usual with operators ARGLENGTH and PART. - -\endsection -\item[ROOT_MULTIPLICITES] -ROOT_MULTIPLICITES - -The ROOT_MULTIPLICITIES variable is set to the list of the -multiplicities of the roots of an equation by the SOLVE operator. - - -SOLVE returns its solutions in a list. The multiplicities of -each solution are put in the corresponding locations of the list -ROOT_MULTIPLICITIES. - -\endsection -\xitem[ROOT_VAL] -ROOT_VAL (page 370) - -\endsection -\item[ROOTACC] -ROOTACC (page 373) - -The operator ROOTACC allows you to set the accuracy up to which the -roots package computes its results. - - ROOTACC(n) - -Here n is an integer value. The internal accuracy of the ROOTS package -is adjusted to a value of MAX(6,N). The default value is 6. - -\endsection -\xitem[ROOTMSG] -ROOTMSG (page 373) - -\endsection -\xitem[ROOTPREC] -ROOTPREC (page 374) - -\endsection -\item[ROOTS] -ROOTS (pages 184, 369, 370) - -The operator ROOTS is the main top level function of the roots -package. It will find all roots, real and complex, of the polynomial -p to an accuracy that is sufficient to separate them and which is a -minimum of 6 decimal places. - - ROOTS(p) - -where p is a univariate polynomial. Result is a LIST of equations -which represent the roots of the polynomial at the given accuracy. In -addition, ROOTS stores separate lists of real roots and complex roots -in the global variables ROOTSREAL and ROOTSCOMPLEX. - -Examples: - - roots(x^5-2); {X=-0.929316 + 0.675188*I, - X=-0.929316 - 0.675188*I, - X=0.354967 + 1.09248*I, - X=0.354967 - 1.09248*I, - X=1.1487} - -The minimal accuracy of the result values is controlled by -ROOTACC. - -\endsection -\xitem[ROOTS package] -ROOTS package (page 367) - -\endsection -\xitem[ROOTS_AT_PREC] -ROOTS_AT_PREC (page 370) - -\endsection -\item[ROOTSCOMPLEX] -ROOTSCOMPLEX (page 369) - -When the operator ROOTS is called the complex roots are collected in -the global variable ROOTSCOMPLEX as LIST. - -\endsection -\item[ROOTSREAL] -ROOTSREAL (page 369) - -When the operator ROOTS is called the real roots are collected in the -global variable ROOTREAL as LIST. - -\endsection -\item[ROUND] -ROUND (page 75) - - ROUND(expression) - -If its argument has a numerical value, ROUND rounds it to the nearest -integer. For non-numeric arguments, the value is an expression in the -original operator. - -Examples: -round 3.4; 3 -round 3.5; 4 -round a; ROUND(A) - -\endsection -\item[ROUNDALL] -ROUNDALL (page 133) - -In ROUNDED mode, rational numbers are normally converted to a -floating point representation. If ROUNDALL is off, this conversion -does not occur. ROUNDALL is normally ON. - -Examples: -on rounded; -1/2; 0.5 -off roundall; - 1 -1/2; --- - 2 - -\endsection -\item[ROUNDBF] -ROUNDBF (page 133) - -When ROUNDED is on, the normal defaults cause underflows to be -converted to zero. If you really want the small number that results -in such cases, ROUNDBF can be turned on. - -Examples: -on rounded; -exp(-100000.1^2); 0 -on roundbf; -exp(-100000.1^2); 1.18441281937E-4342953505 - -If a polynomial is input in ROUNDED mode at the default precision into -any ROOTS function, and it is not possible to represent any of the -coefficients of the polynomial precisely in the system floating point -representation, the switch ROUNDBF will be automatically turned on. -All rounded computation will use the internal bigfloat representation -until the user subsequently turns ROUNDBF off. (A message is output to -indicate that this condition is in effect.) - -\endsection -\item[ROUNDED] -ROUNDED (pages 36, 44, 78, 108, 132, 372) - -When ROUNDED is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 -digits. The precise number can be found by the command PRECISION(0). - -Examples: -pi; PI - - 5 -35/217; ---- - 31 -on rounded; -pi; 3.14159265359 - -35/217; 0.161 - -sqrt(3); 1.73205080756 - -If more than the default number of decimal places are required, use the -PRECISION command to set the required number. - -\endsection -\item[Rule lists] -Rule lists (page 147) - -A RULE is an instruction to replace an algebraic expression -or a part of an expression by another one. - lhs => rhs or - lhs => rhs WHEN cond -lhs is an algebraic expression used as search pattern and -rhs is an algebraic expression which replaces matches of -rhs. => is the operator REPLACE. - -lsh can contain free variables which are preceded by a tilde ~ in -their leftmost position in lhs. If a rule has a WHEN cond part it -will fire only if the evaluation of cond has a result TRUE. cond may -contain references to free variables of lhs. - -Rules can be collected in a LIST which then forms a RULE LIST. RULE -LISTS can be used to collect algebraic knowledge for a specific -evaluation context. - -RULES and RULE LISTS are globally activated and deactivated by LET, -FORALL, CLEARRULES. For a single evaluation they can be locally -activate by WHERE. The active rules for an operator can be visualised -by SHOWRULES. - -Examples: -operator f,g,h; -let f(x) => x^2; - 2 -f(x); X -g_rules:={g(~n,~x)=>h(n/2,x) when evenp n, -g(~n,~x)=>h((1-n)/2,x) when not evenp n}$ -let g_rules; -g(3,x); H(-1,X) - -\endsection -\item[SAVEAS] -SAVEAS (page 99)) -The SAVEAS command saves the current workspace under the name of its -argument. - - SAVEAS identifier - -identifier can be any valid REDUCE identifier. - -Examples: - -(The numbered prompts are shown below, unlike in most examples) -1: solve(x^2-3); {x=sqrt(3),x= - sqrt(3)} -2: saveas rts(0)$ -3: rts(0); {x=sqrt(3),x= - sqrt(3)} - -SAVEAS works only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that -you did not assign to an identifier when you originally typed the -input. For access to previous output use WS. - -\endsection -\xitem[savesfs] -savesfs (page 393) - -\endsection -\item[SAVESTRUCTR] -SAVESTRUCTR (page 113) - -When SAVESTRUCTR is on, results of the STRUCTR command are returned as -a list whose first element is the representation for the expression -and the remaining elements are equations showing the relationships of -the generated variables. - -Examples: -off exp; - -structr((x+y)^3 + sin(x)^2); ANS3 - where - 3 2 - ANS3 := ANS1 + ANS2 - - ANS2 := SIN(X) - - ANS1 := X + Y - -ans3; ANS3 -on savestructr; - 3 2 -structr((x+y)^3 + sin(x)^2); {ANS3,ANS3=ANS1 + ANS2 ,ANS2=SIN(X),ANS1=X + Y} - 3 2 -ans3 where rest ws; (X + Y) + SIN(X) - -In normal operation, STRUCTR is only a display command. With -SAVESTRUCTR on, you can access the various parts of the expression -produced by STRUCTR. - -The generic system names use the stem ANS. You can change this to your -own stem by the command VARNAME. REDUCE adds integers to this stem -to make unique identifiers. - -\endsection -\xitem[Saving an expression] -Saving an expression (page 111) - -\endsection -\item[SCALAR] -SCALAR (pages 61, 62) - -The SCALAR declaration must be made immediately after a BEGIN (or -other variable declaration such as INTEGER and REAL) and declares -local scalar variables. They are initialised to 0. - - SCALAR identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Scalar variables remain local, and do not share values with variables -of the same name outside the BEGIN...END BLOCK. When the block is -finished, the variables are removed. You may use the words REAL or -INTEGER in the place of SCALAR. REAL and INTEGER do not indicate -type-checking by the current REDUCE; they are only for your own -information. Declaration statements must immediately follow the -BEGIN, without a semicolon between BEGIN and the first variable -declaration. - -Any variables used inside BEGIN...END blocks that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Arrays declared inside a block -are always global. - -\endsection -\xitem[Scalar] -Scalar (page 43) - -\endsection -\xitem[SCALEFACTORS operator] -SCALEFACTORS operator (page 234) - -\endsection -\item[SCIENTIFIC_NOTATION] -SCIENTIFIC_NOTATION (page 34) - - SCIENTIFIC_NOTATION(m) or SCIENTIFIC_NOTATION(m,n) - -m and n are positive integers. SCIENTIFIC_NOTATION controls the -output format of floating point numbers. At the default settings, any -number with five or less digits before the decimal point is printed in -a fixed-point notation, e.g., 12345.6. Numbers with more than five -digits are printed in scientific notation, e.g., 1.234567E+5. -Similarly, by default, any number with eleven or more zeros after the -decimal point is printed in scientific notation. - -When SCIENTIFIC_NOTATION is called with the numerical argument m a -number with more than m digits before the decimal point, or m or more -zeros after the decimal point, is printed in scientific notation. -When SCIENTIFIC_NOTATION is called with a list {m, n}, a number with -more than m digits before the decimal point, or n or more zeros after -the decimal point is printed in scientific notation. - -Examples: - -on rounded; -12345.6; 12345.6 - -123456.5; 1.234565e+5 - -0.00000000000000012; 1.2e-16 - -scientific_notation 20; {5,11} - -5: 123456.7; 123456.7 - -0.00000000000000012; 0.00000000000000012 - -\endsection -\item[SCOPE] -SCOPE (page 185) - -Author: J.A. van Hulzen - -REDUCE Source Code Optimization Package. - -SCOPE is a package for the production of an optimised form of a -set of expressions. It applies an heuristic search for common -(sub)expressions to almost any set of proper REDUCE assignment -statements. The output is obtained as a sequence of assignment -statements. GENTRAN is used to facilitate expression output. - -\endsection -\xitem[SDER(I)] -SDER(I) (page 379) - -\endsection -\item[SEC] -SEC (pages 76, 78) - -The SEC operator returns the secant of its argument. - - SEC(expression) or SEC simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sec abc; SEC(ABC) -sec(pi); -1 -sec 4; SEC(4) -on rounded; -sec(4); - 1.52988565647 -sec log 5; - 25.8852966005 - -SEC returns a numeric value only if ROUNDED is on. Then the secant is -calculated to the current degree of floating point precision. - -\endsection -\item[SECH] -SECH (pages 76, 78) - -The SECH operator returns the hyperbolic secant of its argument. - - SECH(expression) or SECH simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sech abc; SECH(ABC) -sech(0); 1 -sech 4; SECH(4) -on rounded; -sech(4); 0.0366189934737 -sech log 5; 0.384615384615 - -SECH returns a numeric value only if ROUNDED is on. Then the -expression is calculated to the current degree of floating point -precision. - -\endsection -\item[SECOND] -SECOND (page 50) - -The SECOND operator returns the second element of a list. - SECOND(list) or SECOND list - -list must be a list with at least two elements, to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -second alist; B -blist := {x,{aa,bb,cc},z}; BLIST := {X,{AA,BB,CC},Z} -second second blist; BB - -\endsection -\xitem[Selector] -Selector (page 198) - -\endsection -\xitem[Semicolon] -Semicolon (page 53) - -\endsection -\item[SET] -SET (pages 55, 83) - -The SET operator is used for assignments when you want both sides of -the assignment statement to be evaluated. - - SET(restricted_expression,expression) - -expression can be any REDUCE expression; restricted_expression -must be an identifier or an expression that evaluates to an identifier. - -Examples: -a := y; A := Y - 2 -set(a,sin(x^2)); SIN(X ) - 2 -a; SIN(X ) - 2 -y; SIN(X ) - -a := b + c; A := B + C - -set(a-c,z); Z - -b; Z - -Using an ARRAY or MATRIX reference as the first argument to SET has -the result of setting the contents of the designated element to SET's -second argument. You should be careful to avoid unwanted side effects -when you use this facility. - -\endsection -\item[SETMOD] -SETMOD (page 134) - -The SETMOD command sets the modulus value for subsequent MODULAR -arithmetic. - - SETMOD integer - -integer must be positive, and greater than 1. It need not be a prime -number. - -Examples: -setmod 6; 1 -on modular; -16; 4 - 2 -x^2 + 5x + 7; X + 5*X + 1 - X -x/3; --- - 3 -setmod 2; 6 - 4 -(x+1)^4; X + 1 -x/3; X - -SETMOD returns the previous modulus, or 1 if none has been set before. -SETMOD only has effect when MODULAR is on. - -Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error -message, since the operation is equivalent to dividing by 0. However, -dividing by a factor of a non-prime modulus does not produce an error -message. - -\endsection -\xitem[SGN indeterminate sign] -SGN - indeterminate sign (page 257) - -\endsection -\item[SHARE] -SHARE (page 197) - -The SHARE declaration allows access to its arguments by both -algebraic and symbolic modes. - - SHARE identifier{,identifier} - -identifier can be any valid REDUCE identifier. - -Programming in SYMBOLIC as well as algebraic mode allows you a wider -range of techniques than just algebraic mode alone. Expressions do -not cross the boundary since they have different representations, -unless the SHARE declaration is used. For more information on using -symbolic mode, see the REDUCE User's Manual, and the Standard Lisp -Report. - -You should be aware that a previously-declared array is destroyed by -the SHARE declaration. Scalar variables retain their values. You can -share a declared MATRIX that has not yet been dimensioned so that it -can be used by both modes. Values that are later put into the matrix -are accessible from symbolic mode too, but not by the usual matrix -reference mechanism. In symbolic mode, a matrix is stored as a list -whose first element is MAT, and whose next elements are the rows of -the matrix stored as lists of the individual elements. Access in -symbolic mode is by the operators FIRST, SECOND, THIRD and REST. - -\endsection -\item[SHOWRULES] -SHOWRULES (page 150) - - SHOWRULES(expression) or SHOWRULES simple_expression - -SHOWRULES returns in RULE-LIST form any OPERATOR rules associated with -its argument. - -Examples: -showrules log; {log(e) => 1, - - log(1) => 0, - - ~x - log(e ) => ~x, - - 1 - df(log(~x),~x) => ----} - ~x - -Such rules can then be manipulated further as with any LIST. For example -RHS FIRST WS; has the value 1. - -An operator may have properties that cannot be displayed in such a form, -such as the fact it is an odd function, or has a definition defined as a -procedure. - -\endsection -\item[SHOWTIME] -SHOWTIME (page 70) - -The SHOWTIME command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has -not been called before. - -Examples: -showtime; Time: 1020 ms - 2 -factorize(x^4 - 8x^4 + 8x^2 - 136x - 153); {X - 9,X + 17,X + 1} -showtime; Time: 920 ms - -The time printed is either the elapsed cpu time or the elapsed wall -clock time, depending on your system. SHOWTIME allows you to see the -system time resources REDUCE uses in its calculations. Your time -readings will of course vary from this example according to the system -you use. - -\endsection -\item[SHUT] -SHUT (pages 153--155) - -The SHUT command closes output files. - SHUT filename{,filename} - -filename must have been a file opened by OUT. - - -A file that has been opened by OUT must be SHUT before it is -brought in by IN. Files that have been opened by OUT should -always be SHUT before the end of the REDUCE session, to avoid either -loss of information or the printing of extraneous information into the file. -In most systems, terminating a session by BYE closes all open -output files. - -\endsection -\xitem[Side effect] -Side effect (page 48) - -\endsection -\xitem[side relations] -side relations (page 241) - -\endsection -\item[SIGN] -SIGN (page 75) - - SIGN expression - -SIGN tries to evaluate the sign of its argument. If this is possible -SIGN returns one of 1, 0 or -1. Otherwise, the result is the original -form or a simplified variant. - -Examples: - sign(-5) -1 - sign(-a^2*b) -SIGN(B) - -Even powers of formal expressions are assumed to be positive only as long -as the switch COMPLEX is off. - -\endsection -\xitem[SIGNATURE command] -SIGNATURE command (page 271) - -\endsection -\xitem[Simplification] -Simplification (pages 44, 97) - -\endsection -\xitem[SIMPSYS] -SIMPSYS (pages 378, 380, 383) - -\endsection -\item[SIN] -SIN (pages 76, 78) - -The SIN operator returns the sine of its argument. - - SIN(expression) or SIN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sin aa; SIN(AA) -sin(pi/2); 1 -on rounded; -sin 3; 0.14112000806 -sin(pi/2); 1.0 - -SIN returns a numeric value only if ROUNDED is on. Then the sine is -calculated to the current degree of floating point precision. The -argument in this case is assumed to be in radians. - -\endsection -\item[SINH] -SINH (pages 76, 78) - -The SINH operator returns the hyperbolic sine of its argument. The -derivative of SINH and some simple transformations are known to the -system. - - SINH(expression) or SINH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -sinh b; SINH(B) -sinh(0); 0 - 2 -df(sinh(x**2),x); 2*COSH(X )*X - COSH(4*X) -int(sinh(4*x),x); ----------- - 4 -on rounded; -sinh 4; 27.2899171971 - - -You may attach further functionality by defining its inverse (see -ASINH). A numeric value is not returned by SINH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\xitem[SMACRO] -SMACRO (page 196) - -\endsection -\item[SOLVE] -SOLVE (pages 84, 85, 90, 181) - -The SOLVE operator solves a single algebraic EQUATION or a system of -simultaneous equations. - - SOLVE(expression [ , kernel]) or - - SOLVE({expression,...} [ ,{ kernel ,...}] ) - -If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. expression is either a -scalar expression or an EQUATION. When more than one expression is -given, the LIST of expressions is surrounded by curly braces. The -optional list of KERNELs follows, also in curly braces. - -Examples: -sss := solve(x^2 + 7); Unknown: X - SSS := {X= - SQRT(7)*I, - X=SQRT(7)*I} -rhs first sss; - SQRT(7)*I -solve(sin(x^2*y),y); - PI*(2*ARBINT(1) + 1) - {Y=----------------------, - 2 - X - - 2*ARBINT(1)*PI - Y=----------------} - 2 - X - -off allbranch; -solve(sin(x**2*y),y); {Y=0} -solve({3x + 5y = -4,2*x + y = -10},{x,y}); - 46 22 - {{x=-------,y=----}} - 7 7 -solve({x + a*y + z,2x + 5},{x,y}); - 5 - 2*z + 5 - {{x=------,y=------------}} - 2 2*a -ab := (x+2)^2*(x^6 + 17x + 1); - 8 7 6 3 2 - ab := x + 4*x + 4*x + 17*x + 69*x + 72*x + 4 - - 6 -www := solve(ab,x); {X=ROOT_OF(X_ + 17*X_ + 1),X=-2} -root_multiplicities; {1,2} - -Results of the SOLVE operator are returned as EQUATIONS in a LIST. -You can use the usual list access methods (FIRST, SECOND, THIRD, REST -and PART) to extract the desired equation, and then use the operators -RHS and LHS to access the right-hand or left-hand expression of the -equation. When SOLVE is unable to solve an equation, it returns the -unsolved part as the argument of ROOT_OF, with the variable renamed to -avoid confusion, as shown in the last example above. - -For one equation, SOLVE uses square-free factorisation, roots of -unity, and the known inverses of the LOG, SIN, COS, ACOS, ASIN, and -exponentiation operators. The quadratic, cubic and quartic formulas -are used if necessary, but these are applied only when the switch -FULLROOTS is set on; otherwise or when no closed form is available the -result is returned as ROOT_OF expression. The switch TRIGFORM -determines which type of cubic and quartic formula is used. The -multiplicity of each solution is given in a list as the system -variable ROOT_MULTIPLICITIES. For systems of simultaneous linear -equations, matrix inversion is used. For nonlinear systems, the -Groebner basis method is used. - -Linear equation system solving is influenced by the switch CRAMER. - -Singular systems can be solved when the switch SOLVESINGULAR is on, -which is the default setting. A message is given if the system of -equations is inconsistent. - -Related: ALLBRANCH switch, FULLROOTS switch, ROOTS operator, ROOT_OF -operator, TRIGFORM switch. - -\endsection -\item[SOLVESINGULAR] -SOLVESINGULAR (page 89) - -When SOLVESINGULAR is on, singular or under determined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is ON. - -Examples: - - ARBCOMPLEX(1) -solve({2x + y,4x + 2y},{x,y}); {{X=------------------,Y=ARBCOMPLEX(1)}} - 2 - - 8*arbcomplex(2) -solve({7x + 15y - z,x - y - z},{x,y,z});{{x=-----------------, - 11 - - - 3*ARBCOMPLEX(2) - Y=--------------------, - 11 - - Z=ARBCOMPLEX(2)}} - -off solvesingular; -solve({2x + y,4x + 2y},{x,y}); ***** SOLVE given singular equations -solve({7x + 15y - z,x - y - z},{x,y,z});***** SOLVE given singular equations - -The integer following the identifier ARBCOMPLEX above is assigned by -the system, and serves to identify the variable uniquely. It has no other -significance. - -\endsection -\xitem[SORTOUTODE] -SORTOUTODE (page 350) - -\endsection -\xitem[SPACEDIM command] -SPACEDIM command (pages 251, 271) - -\endsection -\item[SPDE] -SPDE (page 185) - -Author: Fritz Schwartz - -The package SPDE provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given system of -partial differential equations. In many cases the determining system is -solved completely automatically. In other cases the user has to provide -additional input information for the solution algorithm to terminate. - - -\endsection -\xitem[SPECFN] -SPECFN (page 185) - -\endsection -\xitem[SPECFN package] -SPECFN package (page 391) - -\endsection -\xitem[SPECFN2] -SPECFN2 (page 187) - -\endsection -\xitem[spherical coordinates] -spherical coordinates (pages 265, 355) - -\endsection -\item[SPLIT_FIELD] -SPLIT_FIELD function (page 227) - -SPLIT_FIELD is part of the ARNUM package for algebraic numbers. It -calculates a primitive element of minimal degree for which a given -polynomial splits into linear factors. The algorithm as described by -Trager. - -Example: - load arnum; - split!_field(x**3-3*x+7); - - *** Splitting field is generated by: - - 6 4 2 - A5 - 18*A5 + 81*A5 + 1215 - - - - 4 2 - {1/126*A5 - 5/42*A5 - 1/2*A5 + 2/7, - - - 4 2 - - (1/63*A5 - 5/21*A5 + 4/7), - - - 4 2 - 1/126*A5 - 5/42*A5 + 1/2*A5 + 2/7} - - - for each j in ws product (x-j); - - 3 - X - 3*X + 7 - - -\endsection -\item[SPUR] -SPUR (page 210) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\xitem[SQFRF] -SQFRF (page 373) - -\endsection -\item[SQRT] -SQRT (pages 76, 78) - -The SQRT operator returns the square root of its argument. - - SQRT(expression) - -expression can be any REDUCE scalar expression. - -Examples: -sqrt(16*a^3); 4*SQRT(A)*A -sqrt(17); SQRT(17) -on rounded; -sqrt(17); 4.12310562562 -off rounded; 2 -sqrt(a*b*c^5*d^3*27); 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D - -SQRT checks its argument for squared factors and removes them. - -Numeric values for square roots that are not exact integers are given -only when ROUNDED is on. - -Please note that SQRT(A**2) is given as A, which may be incorrect if A -eventually has a negative value. If you are programming a calculation -in which this is a concern, you can turn on the PRECISE switch, which -causes the absolute value of the square root to be returned. - -\endsection -\xitem[Standard form] -Standard form (page 198) - -\endsection -\xitem[Standard quotient] -Standard quotient (page 198) - -\endsection -\xitem[Statement] -Statement (page 53) - -\endsection -\xitem[Stirling Numbers] -Stirling Numbers (page 185, 394) - -\endsection -\item[STIRLING1] -STIRLING1 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -first kind, i.e. the number of permutations of n symbols which have -exactly m cycles (divided by (-1)**(n-m)). - - STIRLING1(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling1 (17,4); -87077748875904 - - GAMMA(N + 1) - Stirling1 (n,n-1); ----------------- - 2*GAMMA(N - 1) - -The operator STIRLING1 evaluates the Stirling numbers of the first -kind by rulesets for special cases or by a computing the closed form, -which is a series involving the operators BINOMIAL and STIRLING2. - -\endsection -\item[STIRLING2] -STIRLING2 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. - - STIRLING2(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling2 (17,4); 694337290 - GAMMA(N + 1) - Stirling2 (n,n-1); ---------------- - 2*GAMMA(N - 1) - -The operator STIRLING2 evaluates the Stirling numbers of the second -kind by rulesets for special cases or by a computing the closed form. - -\endsection -\item[String] -String (page 37)) -A STRING is any collection of characters enclosed in double quotation -marks ("). It may be used as an argument for a variety of commands -and operators, such as IN, REDERR and WRITE. -Examples: -write "this is a string"; this is a string -write a, " ", b, " ",c,"!"; A B C! - -\endsection -\item[STRUCTR] -STRUCTR (pages 112, 113) - -The STRUCTR operator breaks its argument expression into named -subexpressions. - - STRUCTR(expression [,identifier[,identifier ...]]) - -expression may be any valid REDUCE scalar expression. identifier may -be any valid REDUCE IDENTIFIER. The first identifier is the stem for -subexpression names, the second is the name to be assigned to the -structured expression. - -Examples: -structr(sqrt(x**2 + 2*x) + sin(x**2*z)); ANS1*ANS3 + ANS2 - - WHERE - - 1/2 - ANS3 := X - - 2 - ANS2 := SIN(X *Z) - - 1/2 - ANS1 := (X + 2) - -ans3; ANS3 -on fort; -structr((x+1)**5 + tan(x*y*z),var,aa); - VAR1=TAN(X*Y*Z) - AA=VAR1+X**5+5.*X**4+10.*X**3+10.*X**2+5.*X+1. - -The second argument to STRUCTR is optional. If it is not given, the -default stem ANS is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does -not store the names and their values unless the switch SAVESTRUCTR is -on. - -If a third argument is given, the structured expression as a whole is -named by this argument, when FORT is on. The expression is not stored -under this name. You can send these structured Fortran expressions to -a file with the OUT command. - -\endsection -\xitem[Structuring] -Structuring (page 97) - -\endsection -\xitem[Struve Functions] -Struve Functions (pages 185, 397) - -\endsection -\item[STRUVEH] -STRUVEH (pages 185, 397) - -The STRUVEH operator returns Struve's H function. - - STRUVEH(order,argument) - -Examples: -load_package specfn; (SPECFN) - - 3 - - BESSELJ(---,X) - 2 -struveh(-3/2,x); ------------------- - I - - -There is currently no numeric support for the operator STRUVEH. - -\endsection -\item[STRUVEL] -STRUVEL (pages 185, 397) - -The STRUVEL operator returns the modified Struve L function . - - STRUVEL(order,argument) - -Examples: - load_package specfn; (SPECFN); - 3 - struvel(-3/2,x); BESSELI(---,X) - 2 - -There is currently no numeric support for the operator STRUVEL. - -\endsection -\xitem[Sturm Sequences] -Sturm Sequences (page 369) - -\endsection -\item[SUB] -SUB (page 137) - -The SUB operator substitutes a new expression for a kernel in an -expression. - - SUB(kernel=expression {,kernel=expression} expression) - or - SUB({kernel=expression, kernel=EXPRESSION},expression}) - -kernel must be a KERNEL, expression can be any REDUCE scalar -expression. - -Examples: -sub(x=3,y=4,(x+y)**3); 343 -x; X -sub({cos=sin,sin=cos},cos a+sin b} COS(B) + SIN(A) - -Note in the second example that operators can be replaced using the -SUB operator. - -\endsection -\xitem[SUCH THAT] -SUCH THAT (page 142) - -\endsection -\item[SUM] -SUM (pages 57, 58, 187) - -The operator SUM returns -the indefinite or definite summation of a given expression. - - -SUM(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be added, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: - 2 2 -sum(4n**3,n); N *(N + 2*N + 1) - -sum(2a+2k*r,k,0,n-1); N*(2*A + N*R - R) - -\endsection -\xitem[SUM-SQ] -SUM-SQ (page 404) - -\endsection -\xitem[SVEC] -SVEC (page 355) - -\endsection -\xitem[Switch] -Switch (pages 68, 69) - -\endsection -\item[SYMBOLIC] -SYMBOLIC (page 191) - -The SYMBOLIC command changes REDUCE's mode of operation to symbolic. -When SYMBOLIC is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the LISP command. - -Examples: -symbolic; NIL -cdr '(a b c); (B C) -algebraic; -x + symbolic car '(y z); X + Y - -\endsection -\xitem[Symbolic mode] -Symbolic mode (pages 191, 193, 197, 198) - -\endsection -\xitem[Symbolic procedure] -Symbolic procedure (page 196) - -\endsection -\item[SYMMETRIC] -SYMMETRIC (page 93) - -When an operator is declared SYMMETRIC, its arguments are reordered -to conform to the internal ordering of the system. - - SYMMETRIC identifier{,identifier} - -identifier is an identifier that has been declared an operator. - -Examples: -operator m,n; -symmetric m,n; -m(y,a,sin(x)); M(SIN(X),A,Y) -n(z,m(b,a,q)); N(M(A,B,Q),Z) - -If identifier has not been declared to be an operator, the flag -SYMMETRIC is still attached to it. When identifier is subsequently -used as an operator, the message - DECLARE identifier OPERATOR ? (Y OR N) -is printed. If the user replies Y, the symmetric property of the -operator is used. - -\endsection -\xitem[system precision] -system precision (page 374) - -\endsection -\item[T] -T (page 37) - -The constant T stands for the truth value true. It cannot be used as -a scalar variable in a BLOCK, as a looping variable in a FOR statement -or as an OPERATOR name. - -\endsection -\item[TAN] -TAN (pages 76, 78, 81) - -The TAN operator returns the tangent of its argument. - - TAN(expression) or TAN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -tan a; TAN(A) -tan(pi/3); SQRT(3) -on rounded; -tan(pi/3); 1.73205080757 - -TAN returns a numeric value only if ROUNDED is on. Then the tangent -is calculated to the current degree of floating point accuracy. - -When ON ROUNDED is in force, no check is made to see if the argument -to TAN is a multiple of pi/2, for which the tangent goes to positive -or negative infinity. (Of course, since REDUCE uses a fixed-point -representation of pi/2, it produces a large but not infinite number). -You need to make a check for multiples of pi/ in any program you use -that might possibly ask for the tangent of such a quantity. - -\endsection -\xitem[tangent vector] -tangent vector (page 252) - -\endsection -\item[TANH] -TANH (pages 76, 78) - -The TANH operator returns the hyperbolic tangent of its argument. The -derivative of TANH and some simple transformations are known to the -system. - - TANH(expression) or TANH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -tanh b; TANH(B) -tanh(0); 0 - 2 -df(tanh(x*y),x); Y*( - TANH(X*Y) + 1) - 2*X -int(tanh(x),x); LOG(E + 1) - X -on rounded; -tanh 2; 0.964027580076 - -You may attach further functionality by defining its inverse (see -ATANH). A numeric value is not returned by TANH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\item[TAYLOR] -TAYLOR (page 188, 406) - -The TAYLOR operator is used for expanding an expression into a Taylor -series. - -TAYLOR(expression, var, expression, number) -TAYLOR(expression, var, expression, number {,var, expression, number}) - -expression can be any valid REDUCE algebraic expression. var must be -a KERNEL, and is the expansion variable. The expression following it -denotes the point about which the expansion is to take place. number -must be a non-negative integer and denotes the maximum expansion -order. If more than one triple is specified TAYLOR will expand its -first argument independently with respect to all the variables. Note -that once the expansion has been done it is not possible to calculate -higher orders. - -Instead of a KERNEL, var may also be a list of kernels. In this case -expansion will take place in a way so that the sum of the degrees of -the kernels does not exceed the maximum expansion order. If the -expansion point evaluates to the special identifier INFINITY, TAYLOR -tries to expand in a series in 1/var. - -The expansion is performed variable per variable, i.e. in the example -below by first expanding exp(x^2+y^2) with respect to x and then -expanding every coefficient with respect to y. - -Examples: - 2 2 2 2 3 3 -taylor(e^(x^2+y^2),x,0,2,y,0,2); 1 + Y + X + Y *X + O(X ,Y ) - - 2 2 3 -taylor(e^(x^2+y^2),{x,y},0,2); 1 + Y + X + O({X,Y} ) - -taylor(x*y/(x+y),x,0,2,y,0,2); ***** Not a unit in argument to quottaylor - -Note that it is not generally possible to apply the standard REDUCE -operators to a Taylor kernel. For example, PART, COEFF, or COEFFN -cannot be used. Instead, the expression at hand has to be converted -to standard form first using the TAYLORTOSTANDARD operator. - -Differentiation of a Taylor expression is possible. If you -differentiate with respect to one of the Taylor variables the order -will decrease by one. - -Substitution is a bit restricted: Taylor variables can only be -replaced by other kernels. There is one exception to this rule: you -can always substitute a Taylor variable by an expression that -evaluates to a constant. Note that REDUCE will not always be able to -determine that an expression is constant: an example is sin(acos(4)). - -Only simple taylor kernels can be integrated. More complicated -expressions that contain Taylor kernels as parts of themselves are -automatically converted into a standard representation by means of the -TAYLORTOSTANDARD operator. In this case a suitable warning is -printed. - -\endsection -\xitem[TAYLOR package] -TAYLOR package (page 405) - -\endsection -\xitem[Taylor series arithmetic] -Taylor series - arithmetic (page 407) - differentiation (page 408) - integration (page 408) - reversion (page 408) - substitution (page 408) - -\endsection -\item[TAYLORAUTOCOMBINE] -TAYLORAUTOCOMBINE switch (page 408) - -If you set TAYLORAUTOCOMBINE to ON, REDUCE automatically combines -Taylor expressions during the simplification process. This is -equivalent to applying TAYLORCOMBINE to every expression that contains -Taylor kernels. Default is ON. - -\endsection -\item[TAYLORAUTOEXPAND] -TAYLORAUTOEXPAND switch (pages 408, 409) - -TAYLORAUTOEXPAND makes Taylor expressions ``contagious'' in the sense -that TAYLORCOMBINE tries to Taylor expand all non-Taylor -subexpressions and to combine the result with the rest. Default is -OFF. - -\endsection -\item[TAYLORCOMBINE] -TAYLORCOMBINE (page 407) - -This operator tries to combine all Taylor kernels found in its -argument into one. Operations currently possible are: - -Addition, subtraction, multiplication, and division. -Roots, exponentials, and logarithms. -Trigonometric and hyperbolic functions and their inverses. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 3 -taylorcombine log hugo; X + O(X ) - - 1 2 3 -taylorcombine(hugo + x); (1 + X + ---*X + O(X )) + X - 2 -on taylorautoexpand; - 1 2 3 -taylorcombine(hugo + x); 1 + 2*X + ---*X + O(X ) - 2 - -Application of unary operators like LOG and ATAN will nearly always -succeed. For binary operations their arguments have to be Taylor -kernels with the same template. This means that the expansion -variable and the expansion point must match. Expansion order is not -so important, different order usually means that one of them is -truncated before doing the operation. - -If TAYLORKEEPORIGINAL is set to ON and if all Taylor kernels in its -argument have their original expressions kept TAYLORCOMBINE will also -combine these and store the result as the original expression of the -resulting Taylor kernel. There is also the switch TAYLORAUTOEXPAND. - -There are a few restrictions to avoid mathematically undefined -expressions: it is not possible to take the logarithm of a Taylor -kernel which has no terms (i.e. is zero), or to divide by such a -beast. There are some provisions made to detect singularities during -expansion: poles that arise because the denominator has zeros at the -expansion point are detected and properly treated, i.e. the Taylor -kernel will start with a negative power. (This is accomplished by -expanding numerator and denominator separately and combining the -results.) Essential singularities of the known functions (see above) -are handled correctly. - -\endsection -\item[TAYLORKEEPORIGINAL] -TAYLORKEEPORIGINAL (pages 406, 407, 409, 411) - -TAYLORKEEPORIGINAL, if set to ON, forces the TAYLOR and all Taylor -kernel manipulation operators to keep the original expression, -i.e. the expression that was Taylor expanded. All operations -performed on the Taylor kernels are also applied to this expression -which can be recovered using the operator TAYLORORIGINAL. Default is -OFF. - -\endsection -\item[TAYLORORIGINAL] -TAYLORORIGINAL (pages 411, 412) - -TAYLORORINAL can recover the original expression (the one that was -expanded) from the Taylor kernel that is given as its argument. - - TAYLORORIGINAL(expression) - TAYLORORIGINAL simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylororiginal hugo; - ***** Taylor kernel doesn't have an original part in taylororiginal - -on taylorkeeporiginal; - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - X -taylororiginal hugo; E - -An error is signalled if the argument is not a Taylor kernel or if the -original expression was not kept, i.e. if TAYLORKEEPORIGINAL was set -OFF during expansion. - -\endsection -\item[TAYLORPRINTORDER] -TAYLORPRINTORDER switch (page 409) - -TAYLORPRINTORDER, if set to ON, causes the remainder to be printed in -big-O notation. Otherwise, three dots are printed. Default is -ON. - -\endsection -\item[TAYLORPRINTTERMS] -TAYLORPRINTTERMS (pages 406, 412) - -Only a certain number of (non-zero) coefficients are printed. If there -are more, an expression of the form N TERMS is printed to indicate how -many non-zero terms have been suppressed. The number of terms printed -is given by the value of the shared algebraic variable -TAYLORPRINTTERMS. Allowed values are integers and the special -identifier ALL. The latter setting specifies that all terms are to be -printed. The default setting is 5. - -Examples: -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 5 5 - 1 + Y + ---*Y + X + Y *X + (4 TERMS) + O(X ,Y ) - 2 -taylorprintterms := all; - ALL -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 1 4 2 1 4 1 2 4 - 1 + y + ---*y + x + y *x + ---*y *x + ---*x + ---*y *x - 2 2 2 2 - - 1 4 4 5 5 - + ---*y *x + O(x ,y ) - 4 - -\endsection -\item[TAYLORREVERT] -TAYLORREVERT (page 411) - -TAYLORREVERT allows reversion of a Taylor series of a function f, -i.e., to compute the first terms of the expansion of the inverse of f -from the expansion of f. - - TAYLORREVERT(expression, var, var) - -The first argument must evaluate to a Taylor kernel with the second -argument being one of its expansion variables. - -Examples: - 2 6 -taylor(u - u**2,u,0,5); U - U + O(U ) - 2 3 4 5 6 -taylorrevert(ws,u,x); X + X + 2*X + 5*X + 14*X + O(X ) - -\endsection -\item[TAYLORSERIESP] -TAYLORSERIESP (page 407) - -The TAYLORSERIESP operator may be used to determine if its argument is -a Taylor kernel. - - TAYLORSERIESP(expression) - TAYLORSERIESP simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -if taylorseriesp hugo then OK; OK -if taylorseriesp(hugo + y) then OK else NO; NO - -Note that this operator is subject to the same restrictions as, e.g., -ORDP or NUMBERP, i.e. it may only be used in boolean expressions in IF -or LET statements. -\endsection -\item[TAYLORTEMPLATE] -TAYLORTEMPLATE (pages 407, 412) - -The template of a Taylor kernel, i.e. the list of all variables with -respect to which expansion took place together with expansion point -and order can be extracted using - - TAYLORTEMPLATE(expression) - TAYLORTEMPLATE simple_expression - -The operator returns a list of lists with the three elements -(VAR,VAR0,ORDER). An error is signalled if the argument is not a -Taylor kernel. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylortemplate hugo; {{X,0,2}} - -\endsection -\item[TAYLORTOSTANDARD] -TAYLORTOSTANDARD (page 407) - -The TAYLORTOSTANDARD operator converts all Taylor kernels in its -argument into standard form and resimplifies the result. - - TAYLORTOSTANDARD(expression) - TAYLORTOSTANDARD simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 2 - X + 2*X + 2 -taylortostandard hugo; -------------- - 2 -\endsection -\xitem[Terminator] -Terminator (page 53) - -\endsection -\item[THIRD] -THIRD (page 50) - -The THIRD operator returns the third item of a LIST. - THIRD(list) or THIRD list - - - -list must be a list containing at least three items to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -third alist; C -blist := {x,{aa,bb,cc},y,z}; BLIST := {X,{AA,BB,CC},Y,Z}; -third second blist; CC -third blist; Y - -\endsection -\item[TIME] -TIME (page 68) - -When TIME is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. - -Examples: -on time; Time: 4940 ms - 2 -df(sin(x**2 + y),y); COS(X + Y ) - Time: 180 ms -solve(x**2 - 6*y,x); {X= - SQRT(Y)*SQRT(6), - X=SQRT(Y)*SQRT(6)} - Time: 320 ms - -When TIME is first turned on, the time since the beginning of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed -after the results of each command. Idle time or time spent typing in -commands is not counted. If TIME is turned off, the first reading -after it is turned on again gives the time elapsed since it was turned -off. The time printed is CPU or wall clock time, depending on the -system. - -\endsection -\item[TORDER] -TORDER (pages 296, 315, 316) - -The operator TORDER sets the actual term order. - -1. simple term order: - TORDER m - -where m is the name of a term order mode LEX term order, GRADLEX term -order, REVGRADLEX term order or another implemented parameterless -mode. - -2. stepped term order: - TORDER m,n - TORDER {m,n} - -where m is the name of a two step term order, one of GRADLEXGRADLEX -term order, GRADLEXREVGRADLEX term order, LEXGRADLEX term order or -LEXREVGRADLEX term order, and n is a positive integer. - -3. weighted term order - TORDER WEIGHTED, n,n,... - TORDER WEIGHTED, {n,n,...} - -where the n are positive integers, see weighted term order. - -TORDER sets the term order mode. The default mode is LEX. The -previous order mode is returned. - -\endsection -\item[TP] -TP (page 165) - -The TP operator returns the transpose of its MATRIX - argument. - TP identifier or TP(identifier) - -identifier must be a matrix, which either has had its dimensions set -in its declaration, or has had values put into it by MAT. - -Examples: -matrix m,n; -m := mat((1,2,3),(4,5,6))$ -n := tp m; N(1,1) := 1 - N(1,2) := 4 - N(2,1) := 2 - N(2,2) := 5 - N(3,1) := 3 - N(3,2) := 6 - -In an assignment statement involving TP, the matrix identifier on the -left-hand side is redimensioned to the correct size for the transpose. - -\endsection -\item[TPS] -TPS (pages 188, 330) - -Authors: Alan Barnes and Julian Padget - -A Truncated Power Series Package. - -This package implements formal Laurent series expansions in one -variable using the domain mechanism of REDUCE. This means that power -series objects can be added, multiplied, differentiated etc., like -other first class objects in the system. A lazy evaluation scheme -is used and thus terms of the series are not evaluated until they -are required for printing or for use in calculating terms in other -power series. The series are extendible giving the user the -impression that the full infinite series is being manipulated. The -errors that can sometimes occur using series that are truncated at -some fixed depth (for example when a term in the required series -depends on terms of an intermediate series beyond the truncation -depth) are thus avoided. - -\endsection -\xitem[TRA] -TRA (page 178) - -\endsection -\item[TRACE] -TRACE (page 166) - -The TRACE operator finds the trace of its MATRIX argument. - TRACE(expression) or TRACE simple_expression - -expression or simple_expression must evaluate to a square -matrix. - -Examples: -matrix a; -a := mat((x1,y1),(x2,y2))$ -trace a; X1 + Y2 - -The trace is the sum of the entries along the diagonal of a square matrix. -Given a non-matrix expression, or a non-square matrix, TRACE returns -an error message. - -\endsection -\xitem[tracing EXCALC] -tracing - EXCALC (page 266) - ODESOLVE (page 351) - ROOTS package (page 373) - SPDE package (page 380) - SUM package (page 404) - -\endsection -\item[TRALLFAC] -TRALLFAC - -When TRALLFAC is on, a more detailed trace of factoriser calls is -generated. - - -The TRALLFAC switch takes precedence over TRFAC if they are -both on. TRFAC gives a factorisation trace with less detail in it. -When the FACTOR switch is on also, all input polynomials are sent to -the factoriser automatically and trace information is generated. The -OUT command saves the results of the factoring, but not the trace. - - -\endsection -\item[TRFAC] -TRFAC (page 122) - -When TRFAC is on, a narrative trace of any calls to the factoriser is -generated. Default is OFF. - - -When the switch FACTOR is on, and TRFAC is on, every input -polynomial is sent to the factoriser, and a trace generated. With -FACTOR off, only polynomials that are explicitly factored with the -command FACTORIZE generate trace information. - -The OUT command saves the results of the factoring, but not -the trace. The TRALLFAC switch gives trace information to a -greater level of detail. - -\endsection -\item[TRGROEB] -TRGROEB (pages 299, 303) - -If TRGROEB is on, intermediate H polynomials are printed during a -GROEBNER or GROEBNERF calculation. - -\endsection -\xitem[TRGROEB1] -TRGROEB1 (pages 299, 303) - -\endsection -\xitem[TRGROEBR] -TRGROEBR (page 304) - -\endsection -\item[TRGROEBS] -TRGROEBS (pages 299, 303) - -If TRGROEBS is on, intermediate H and S polynomials are printed during -a GROEBNER or GROEBNERF calculation. - -\endsection -\item[TRIGFORM] -TRIGFORM (page 87) - -When FULLROOTS is on, SOLVE will compute the -roots of a cubic or quartic polynomial is closed form. When -TRIGFORM is on, the roots will be expressed by trigonometric -forms. Otherwise nested surds are used. Default is ON. - -\endsection -\item[TRINT] -TRINT (page 178) - -When TRINT is on, a narrative tracing various steps in the -integration process is produced. - -The OUT command saves the results of the integration, but not the -trace. - -\endsection -\item[TRNONLNR] -TRNONLNR - -When TRNONLNR is on, a narrative tracing various steps in -the process for solving non-linear equations is produced. - - -TRNONLNR can only be used after the solve package has been loaded -(e.g., by an explicit call of LOAD_PACKAGE). The OUT -command saves the results of the equation solving, but not the trace. - -\endsection -\xitem[TRODE] -TRODE (page 351) - -\endsection -\xitem[TRROOT] -TRROOT (page 373) - -\endsection -\xitem[TRSUM] -TRSUM (page 404) - -\endsection -\xitem[truncated power series] -truncated power series (page 413) - -\endsection -\xitem[TVECTOR command] -TVECTOR command (pages 249, 271) - -\endsection -\xitem[U(ALFA)] -U(ALFA) (page 379) - -\endsection -\xitem[U(ALFA] -U(ALFA,I) (page 379) - -\endsection -\item[UNTIL] -UNTIL (page 57) - -See the FOR loop construction. -\endsection -\xitem[User packages] -User packages (page 177) - -\endsection -\xitem[VARDF] -VARDF (pages 257, 271) - -\endsection -\xitem[Variable] -Variable (page 36) - -\endsection -\xitem[Variable elimination] -Variable elimination (page 181) - -\endsection -\xitem[variational derivative] -variational derivative (page 257) - -\endsection -\item[VARNAME] -VARNAME (pages 111, 112) - -The declaration VARNAME instructs REDUCE to use its argument as the -default Fortran (when FORT is on) or STRUCTR identifier and identifier -stem, rather than using ANS. - - VARNAME identifier - -identifier can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. - -Examples: -varname ident; IDENT -on fort; -x**2 + 1; IDENT=X**2+1. - -off fort,exp; 3 -structr(((x+y)**2 + z)**3); IDENT2 - where - 2 - IDENT2 := IDENT1 + Z - IDENT1 := X + Y - -EXP was turned off so that STRUCTR could show the structure. If EXP -had been on, the expression would have been expanded into a -polynomial. - -\endsection -\xitem[VDF] -VDF (page 359) - -\endsection -\xitem[VEC command] -VEC command (page 232) - -\endsection -\item[VECDIM] -VECDIM (page 212) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\item[VECTOR] -VECTOR (High Energy Physics) (page 208) - -The VECTOR declaration declares that its arguments are of type VECTOR. - VECTOR identifier{,identifier} - -identifier must be a valid REDUCE identifier. It may have already -been used for a matrix, array, operator or scalar variable. After an -identifier has been declared to be a vector, it may not be used as a -scalar variable. - -Vectors are special entities for high-energy physics calculations. -You cannot put values into their coordinates; they do not have -coordinates. They are legal arguments for the high-energy physics -operators EPS, G and . (dot). Vector variables are used to represent -gamma matrices and gamma matrices contracted with Lorentz 4-vectors, -since there are no Dirac variables per se in the system. Vectors do -follow the usual vector rules for arithmetic operations: + and - -operate upon two or more vectors, producing a vector; * and / cannot -be used between vectors; the scalar product is represented by the -. operator; and the product of a scalar and vector expression is well -defined, and is a vector. - -You can represent components of vectors by including representations -of unit vectors in your system. For instance, letting E0 represent -the unit vector (1,0,0,0), the command - -V1.E0 := 0; - -would set up the substitution of zero for the first component of the -vector V1. - -Identifiers that are declared by the INDEX and MASS declarations are -automatically declared to be vectors. - -The following errors can occur in calculations using the high energy -physics package: - -A REPRESENTS ONLY GAMMA5 IN VECTOR EXPRESSIONS -You have tried to use A in some way other than gamma5 in a high-energy -physics expression. - -GAMMA5 NOT ALLOWED UNLESS VECDIM IS 4 -You have used gamma_5 in a high-energy physics computation involving a -vector dimension other than 4. - -ID HAS NO MASS -One of the arguments to MSHELL has had no mass assigned to it, in -high-energy physics calculations. - -MISSING ARGUMENTS FOR G OPERATOR -A line symbol is missing in a gamma matrix expression in high-energy physics -calculations. - -UNMATCHED INDEX list -The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. - -\endsection -\xitem[vector] -vector , integration 233 - addition (page 356) - cross product (page 357) - differentiation (page 233) - division (page 357) - dot product (page 357) - exponentiation (page 357) - inner product (page 357) - modulus (page 357) - multiplication (page 357) - subtraction (page 356) - -\endsection -\xitem[vector algebra] -vector algebra (page 231) - -\endsection -\xitem[VECTORADD] -VECTORADD (page 356) - -\endsection -\xitem[VECTORCROSS] -VECTORCROSS (page 357) - -\endsection -\xitem[VECTORDIFFERENCE] -VECTORDIFFERENCE (page 356) - -\endsection -\xitem[VECTOREXPT] -VECTOREXPT (page 357) - -\endsection -\xitem[VECTORMINUS] -VECTORMINUS (page 356) - -\endsection -\xitem[VECTORPLUS] -VECTORPLUS (page 356) - -\endsection -\xitem[VECTORQUOTIENT] -VECTORQUOTIENT (page 357) - -\endsection -\xitem[VECTORRECIP] -VECTORRECIP (page 357) - -\endsection -\xitem[VECTORTIMES] -VECTORTIMES (page 357) - -\endsection -\xitem[VERBOSELOAD switch] -VERBOSELOAD switch (page 409) - -\endsection -\xitem[VINT] -VINT (page 360) - -\endsection -\xitem[VMOD] -VMOD (page 357) - -\endsection -\xitem[VMOD operator] -VMOD operator (page 233) - -\endsection -\xitem[VOLINT] -VOLINT (page 360) - -\endsection -\xitem[VOLINTEGRAL function] -VOLINTEGRAL function (page 237) - -\endsection -\xitem[VOLINTORDER vector] -VOLINTORDER vector (page 237) - -\endsection -\xitem[VORDER] -VORDER (page 359) - -\endsection -\xitem[VOUT] -VOUT (page 355) - -\endsection -\xitem[VSTART] -VSTART (page 354) - -\endsection -\xitem[VTAYLOR] -VTAYLOR (page 359) - -\endsection -\xitem[wedge] -wedge (page 271) - -\endsection -\item[WEIGHT] -WEIGHT (page 152) - -The WEIGHT command is used to attach weights to kernels for asymptotic -constraints. - - WEIGHT kernel = number - -kernel must be a REDUCE KERNEL, number must be a positive integer, not -0. - -Examples: 4 3 2 2 3 4 -a := (x+y)**4; A := X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -a; X -wtlevel 10; - 2 2 2 -a; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -Weights and WTLEVEL are used for asymptotic constraints, where -higher-order terms are considered insignificant. - -Weights are originally equivalent to 0 until set by a WEIGHT command. -To remove a weight from a kernel, use the CLEAR command. Weights once -assigned cannot be changed without clearing the identifier. Once a -weight is assigned to a kernel, it is no longer a kernel and cannot be -used in any REDUCE commands or operators that require kernels, until -the weight is cleared. Note that terms are ordered by greatest -weight. - -The weight level of the system is set by WTLEVEL, initially at 2. -Since no kernels have weights, no effect from WTLEVEL can be seen. -Once you assign weights to kernels, you must set WTLEVEL correctly for -the desired operation. When weighted variables appear in a term, -their weights are summed for the total weight of the term (powers of -variables multiply their weights). When a term exceeds the weight -level of the system, it is discarded from the result expression. - -\endsection -\xitem[weighted ordering] -weighted ordering (page 316) - -\endsection -\item[WHEN] -WHEN (page 147) - -The WHEN operator is used inside a RULE to make the -execution of the rule depend on a boolean condition which is -evaluated at execution time. For the use see RULE. - -\endsection -\item[WHERE] -WHERE (page 148) - -The WHERE operator provides an infix notation for one-time -substitutions for kernels in expressions. - - expression WHERE kernel = expression{,kernel = expression} - -expression can be any REDUCE scalar expression, kernel must be a -KERNEL. Alternatively a RULE or a RULE LIST can be a member of the -right-hand part of a WHERE expression. - -Examples: -x**2 + 17*x*y + 4*y**2 where x=1,y=2; - 51 -for i := 1:5 collect x**i*q where q= for j := 1:i product j; - 2 3 4 5 - {X,2*X ,6*X ,24*X ,120*X } - 2 3 -x**2 + y + z where z=y**3,y=3; X + Y + 3 - -Substitution inside a WHERE expression has no effect upon the values -of the kernels outside the expression. The WHERE operator has the -lowest precedence of all the infix operators, which are lower than -prefix operators, so that the substitutions apply to the entire -expression preceding the WHERE operator. However, WHERE is applied -before command keywords such as THEN, REPEAT, or DO. - -A RULE or a RULE SET in the right-hand part of the WHERE expression -act as if the rules were activated by LET immediately before the -evaluation of the expression and deactivated by CLEARRULES immediately -afterwards. - -WHERE gives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression -can be a command to be evaluated. The substitute assignments are made -in parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. -WHERE can also be used to define auxiliary variables in PROCEDURE -definitions. - -\endsection -\item[WHILE] -WHILE (pages 59, 61, 63, 65) - -The WHILE command causes a statement to be repeatedly executed until a -given condition is true. If the condition is initially false, the -statement is not executed at all. - - WHILE condition DO statement - -condition is given by a logical operator, statement must be a single -REDUCE statement, or a GROUP (<<...>>) or BEGIN...END block. - -Examples: -a := 10; A := 10 -while a <= 12 do <>; 10 - 11 - 12 -while a < 5 do <>; .... nothing is printed - -\endsection -\xitem[WHITTAKERM] -WHITTAKERM (pages 185, 397) - -\endsection -\item[WHITTAKERW] -WHITTAKERW (pages 185, 397) - -The WHITTAKERW operator returns Whittaker's W function. - - WHITTAKERW(parameter,parameter,argument) - -Examples: -load_package specfn; (SPECFN) - 1 - 4*SQRT(2)*KUMMERU(---,5,2) - 2 -WhittakerW(2,2,2); ---------------------------- - E - -Whittaker's W function is one of the Confluent Hypergeometric functions. -For reference see the HYPERGEOMETRIC operator. - -\endsection -\xitem[Workspace] -Workspace (page 99) - -\endsection -\item[WRITE] -WRITE (page 105)) - -The WRITE command explicitly writes its arguments to the output device -(terminal or file). - - WRITE item{,item} - -item can be an expression, an assignment or a STRING enclosed in -double quotation marks ("). - -Examples: -write a, sin x, "this is a string"; ASIN(X)this is a string -write a," ",sin x," this is a string"; A SIN(X) this is a string -if not numberp(a) then write "the symbol ",a; the symbol A -array m(10); -for i := 1:5 do write m(i) := 2*i; - M(1) := 2 - M(2) := 4 - M(3) := 6 - M(4) := 8 - M(5) := 10 -m(4); 8 - -The items specified by a single WRITE statement print on a single line -unless they are too long. A printed line is always ended with a carriage -return, so the next item printed starts a new line. - -When an assignment statement is printed, the assignment is also made. -This allows you to get feedback on filling slots in an array with a -FOR statement, as shown in the last example above. - -\endsection -\item[WS] -WS (pages 29, 158) - -The WS operator alone returns the last result; WS with a number -argument returns the results of the REDUCE statement executed after -that numbered prompt. - - WS or WS(number) - -number must be an integer between 1 and the current REDUCE prompt number. - -Examples: -(In the following examples, unlike most others, the numbered -prompt is shown.) -1: df(sin y,y); COS(Y) - 2 -2: ws^2; COS(Y) - -3: df(ws 1,y); -SIN(Y) - -WS and WS(number) can be used anywhere the expression they stand for -can be used. Calling a number for which no result was produced, such -as a switch setting, will give an error message. - -The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you -do a differentiation, producing a result expression, then change -several switches, the operator WS; returns the results of the -differentiation. The current workspace (WS) can also be used inside -files, though the numbered workspace contains only the IN command that -input the file. - -There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second -stores parsed input, ready to execute and accessible by INPUT. The -third stores results, when they are produced by statements, which are -accessible by the WS n operator. If your session is very long, -storage space begins to fill up with these expressions, so it is a -good idea to end the session once in a while, saving needed -expressions to files with the SAVEAS and OUT commands. - -An error message is given if a reference number has not yet been used. - -\endsection -\item[WTLEVEL] -WTLEVEL (page 152) - -In conjunction with WEIGHT, WTLEVEL is used to implement asymptotic -constraints. Default value is 2. - - WTLEVEL integer - -integer is a positive integer that is the greatest weight term to be -retained in expressions involving kernels with weight assignments. - -Examples: 4 3 2 2 3 4 -(x+y)**4; X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -(x+y)**4; X -wtlevel 10; - 2 2 2 -(x+y)**4; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -WTLEVEL is used in conjunction with the command WEIGHT to enable -asymptotic constraints. Weight of a term is computed by multiplying -the weights of each variable in it by the power to which it has been -raised, and adding the resulting weights for each variable. If the -weight of the term is greater than WTLEVEL, the term is dropped from -the expression, and not used in any further computation involving the -expression. - -Once a weight has been attached to a KERNEL, it is no longer -recognised by the system as a kernel, though still a variable. It -cannot be used in REDUCE commands and operators that need kernels. -The weight attachment can be undone with a CLEAR command. WTLEVEL can -be changed as desired. - -\endsection -\xitem[X(I)] -X(I) (page 379) - -\endsection -\xitem[XI(I)] -XI(I) (page 379) - -\endsection -\item[XPND command] -XPND command (pages 253, 254, 271) - -(Part of the EXCALC package) - -There are two forms of the XPND command, which controls the use of the -product rule for the d operator and the expansion into partial -derivatives. The default for both these is ON. - - xpnd d; - xpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also NOXPND - -\endsection -\item[ZETA] -ZETA (pages 185, 395) - -The ZETA operator returns Riemann's Zeta function, - - Zeta (z) := sum(1/(k**z),k,1,infinity) - - ZETA(expression) - -Examples: - load_package specfn; (SPECFN) - 2 - PI - Zeta(2); ----- - 6 - on rounded; - Zeta 1.01; 100.577943338 - -Numerical computation for the Zeta function for arguments close to 1 -are tedious, because the series is converging very slowly. In this -case a formula (e.g. found in Bender/Orzag: Advanced Mathematical -Methods for Scientists and Engineers, McGraw-Hill) is used. - -No numerical approximation for complex arguments is done. - -\endsection -\xitem[ZETA(ALFA,I)] -ZETA(ALFA,I) (page 379) - -\endsection DELETED r36/announce.ps Index: r36/announce.ps ================================================================== --- r36/announce.ps +++ /dev/null @@ -1,365 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software -%%Title: announce.dvi -%%CreationDate: Sun Sep 17 10:21:20 1995 -%%Pages: 2 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%EndComments -%DVIPSCommandLine: F:\EMTEX\DVIPS32.EXE announce -%DVIPSParameters: dpi=300, compressed, comments removed -%DVIPSSource: TeX output 1995.09.17:1021 -%%BeginProcSet: texc.pro -/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N -/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id -gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp -add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add -/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ -dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 -adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 -idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage -userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for -65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 -0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V -{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 -getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} -ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false -RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 -false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform -round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg -rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail -{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} -B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ -4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ -p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p -a}B /bos{/SS save N}B /eos{SS restore}B end -%%EndProcSet -TeXDict begin 39158280 55380996 1000 300 300 (/R36/announce.dvi) -@start /Fa 1 66 df<13101338A3135CA3138EA3EA0107A200031380EA0203A23807FF -C0EA0401A2380800E0A21218003813F038FE03FE17177F961A>65 -D E /Fb 1 91 df<90387FFFF89038FC00F09038E001E09038C003C03901800780130048 -EB0F000002131E5C485BC712F85C495A495A495A49C7FCA2131E5B4913805B0001EB0100 -13E048485A38078002380F0006001E1304003E130C003C133C4813F8B5FC1D1F7D9E1F> -90 D E /Fc 1 16 df15 D E /Fd 18 117 df45 D<127012F8A212F012E005057B840E>I97 D<137EEA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA700113 -02EA3004EA1838EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB01C0A213F1 -EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C -38308C80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA -7BF0EA7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB -033CA2EB07181400A2130EA53801FFE038001C00A45BA55BA65BA45B1201A25B1231007B -C7FC12F31266123C1629829F0E>III<13C0EA01E0A213C0C7FCA7120E12331223EA43801300124712 -87120EA35AA3EA3840138012301270EA31001233121C0B1F7C9E0E>I107 -DI<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB0384 -0038138814081307EB031000701330383001C016147C931A>110 -D<137CEA01C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA -700F130EEA3018EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB70 -1EA2EA08E01200A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FC -A2120EA45AA2EAFFC0171D809317>I114 D<13FCEA0302EA0601EA0C031307130613 -00EA0F8013F0EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010 -147D9313>II E /Fe 74 128 df<90381F83E09038F06E3039 -01C07878380380F8903800F03048EB7000A7B612803907007000B2387FE3FF1D20809F1B ->11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2387FC3FE1720 -809F19>I34 D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D> -39 D<132013401380EA0100120212065AA25AA25AA312701260A312E0AC1260A3127012 -30A37EA27EA27E12027EEA0080134013200B2E7DA112>I<7E12407E7E7E120C7EA27EA2 -EA0180A313C01200A313E0AC13C0A312011380A3EA0300A21206A25A12085A5A5A5A0B2E -7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D9A23>43 D<127012F812FCA2127412 -04A31208A21210A212201240060E7C840D>II<127012F8A31270 -05057C840D>I<13011303A21306A3130CA31318A31330A31360A313C0A3EA0180A3EA03 -00A31206A35AA35AA35AA35AA35AA3102D7DA117>IIIII<1306 -A2130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512 -F038000E00A7EBFFE0141E7F9D17>II<137CEA0182EA0701380E0380EA0C07121C3838030090C7 -FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB07 -001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFC01480A238400100EA8002A25B -485AA25B5BA25BA213C0A212015B1203A41207A76CC7FC121F7D9D17>III<127012F8A312701200AA127012F8A3127005147C930D>I64 -D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA3497EA2EBFFFE3801000FA30002 -EB0780A348EB03C0120E001FEB07E039FFC03FFE1F207F9F22>II<90380FC04090387030C03801C0093803800538070003 -000E1301001E1300121C123C007C1440A2127800F81400A91278007C1440A2123C121C00 -1E1480120E6CEB0100380380026C6C5A38007038EB0FC01A217D9F21>IIII<90380FE02090387818609038E004E03803800238070001 -481300001E1460A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27E -A27E7E380380023900E00460903878182090380FE0001E217D9F24>I73 D76 DI<39FF803FF83907C007C0EC03 -803905E00100A2EA04F01378A2133CA2131E130FA2EB0781A2EB03C1EB01E1A2EB00F1A2 -1479143DA2141FA28080A2000E7F121F38FFE0011D1F7E9E22>III82 D<3807E080EA0C19EA1007EA3003EA6001A212E01300A3 -6C1300A21278127FEA3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C0 -1380130300E01300EAF006EACE0CEA81F812217D9F19>I<007FB512E038780F010060EB -006000401420A200C0143000801410A400001400B3497E3807FFFE1C1F7E9E21>I<39FF -FC3FF8390FC007C03907800380EC0100B3A300031302A2EA01C05C6C6C5AEB7018EB3820 -EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC712607F00071440A26C6C1380A339 -01E00100A213F000001302A2EBF806EB7804A26D5AA36D5AA2EB1F30EB0F20A2EB07C0A3 -6D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F800FC007C03B0F0007800380EE01 -0015C0D807801402A33A03C009E004A39039E010F00C00011508A29038F0207800005DA2 -EC403C01785CA2ECC03E90393C801E40A390391F000F80A3011E1307010E91C7FCA2010C -7F010413022C207F9E2F>I<397FF83FF8390FE00FC03907C00700000313026C6C5AEBF0 -0C00001308EB7810137CEB3C20EB3E40131E6D5AA213076D7E497E1305EB09F0EB18F8EB -1078EB207CEB603CEB401EEB801F00017F9038000780000214C000071303391F8007E039 -FFE01FFE1F1F7F9E22>I<39FFF003FF391F8000F8000F1460000714407F6C6C13801201 -9038F0010000005BEBF802EB7C04133CEB3E08131EEB1F10EB0FB0EB07A014C01303AB13 -07EB7FFE201F7F9E22>I<387FFFF8EA7C00007013F0386001E0124038C003C0A2388007 -80130F1400EA001EA25BA25B13F85B485AA23803C004A2EA0780120FEB000C121E140848 -1318A248133838F801F8B5FC161F7D9E1C>I92 D97 D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470A214E0 -120F380D01C0380CC300EA083E15207F9F19>IIII<137C13C6EA018F1203EA07061300A7EA -FFF0EA0700B2EA7FF01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5 -EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF806C13C0383001E0386000 -70481330A4006013606C13C0381C03803803FC00141F7F9417>I<120E12FE120EAA133E -1343EB8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C123EA3121CC7FCA6120E -127E120EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370 -B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB0FF0EB03C014 -0013025B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014E038FFCFF815 -207F9F18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE618618390E81 -C81C390F00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>III< -EA0E3E38FEC380380F01C0EB00E0120E14F014701478A6147014F014E0EA0F0114C0380E -C300133E90C7FCA8EAFFE0151D7F9319>I<3803E080EA0619EA1C05EA3C07EA38031278 -127012F0A61270127812381307EA1C0BEA0E13EA03E3EA0003A8EB3FF8151D7E9318>I< -EA0E78EAFE8CEA0F1EA2130CEA0E00AEEAFFE00F147F9312>II<1202A31206A2120EA2123EEAFFF8EA0E00AB1308A5EA06101203EA -01E00D1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC16147F9319> -I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A2 -1370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214 -C0D807071380130414E039038861001471EBC8733801D032143A3800F03CEBE01CA2EB60 -18EB40081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA01C2EA00E413 -EC13781338133C137C134E1387EA010738030380380201C0000613E0121E38FF07FE1714 -809318>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213EC -EA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>III127 D E /Ff 13 86 df<121C127FA2EAFF80A3EA7F00A2121C0909 -7B8813>46 D51 -D54 -D65 D<91387FE003903907FFFC07011F -EBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F48 -5A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C1478 -6CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831>67 -DII<91387FE003903907FFFC07011FEBFF0F90397F -F00F9F9039FF0001FFD801FC7F484880484880484880485A82485A82127FA290CAFC5AA8 -92B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E6CB45B90387FF007011FB512 -9F0107EBFE0F9039007FF0032D297CA835>71 D73 D78 DI82 -D85 D E -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin -%%PaperSize: a4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 514 5 939 2 v 514 125 2 120 v 528 89 a Ff(ANNOUNCING)20 -b(REDUCE)h(3.6)p 1452 125 V 514 127 939 2 v 1453 125 -13 119 v 508 138 969 13 v 60 254 a Fe(V)l(ersion)16 b(3.6)e(of)g -(REDUCE)h(is)g(no)o(w)g(a)o(v)m(ailable)h(for)e(distribution.)22 -b(This)15 b(is)h(the)e(\014rst)h(ma)s(jor)e(up)q(date)j(since)60 -311 y(the)i(release)h(of)e(REDUCE)h(3.5)f(in)i(Octob)q(er)f(1993.)28 -b(As)17 b(is)i(usual)g(for)e(a)h(new)g(release,)h(a)f(large)g(n)o(um)o -(b)q(er)60 367 y(of)h(bugs)h(and)h(a)o(wkw)o(ard)d(features)i -(\(including)i(those)e(do)q(cumen)o(ted)g(in)h(the)f -Fd(p)n(atches.r)n(e)n(d)f Fe(\014le)i(a)o(v)m(ailable)60 -424 y(from)e(the)h(REDUCE)g(Net)o(w)o(ork)f(Library\))h(ha)o(v)o(e)g(b) -q(een)h(corrected.)34 b(T)l(ak)o(en)20 b(together)f(with)h(the)g(man)o -(y)60 480 y(new)e(features)f(that)g(ha)o(v)o(e)g(b)q(een)i(added,)f -(REDUCE)g(3.6)e(represen)o(ts)i(a)f(signi\014can)o(t)h(enhancemen)o(t)h -(o)o(v)o(er)60 537 y(previous)d(v)o(ersions.)60 618 y(In)c(addition)g -(to)f(the)g(capabilities)j(of)d(the)g(original)h(release)g(of)f(REDUCE) -g(3.5,)g(this)g(new)h(v)o(ersion)f(supp)q(orts,)60 674 -y(among)j(other)h(things:)128 770 y Fc(\017)23 b Fe(de\014nite)16 -b(in)o(tegration)128 862 y Fc(\017)23 b Fe(noncomm)o(utativ)o(e)14 -b(Gr\177)-23 b(obner)15 b(bases)128 954 y Fc(\017)23 -b Fe(expanded)16 b(sp)q(ecial)h(function)f(handling)128 -1045 y Fc(\017)23 b Fe(impro)o(v)o(ed)15 b(solv)o(e)g(capabilities)128 -1137 y Fc(\017)23 b Fe(impro)o(v)o(ed)15 b(trigonometric)g -(simpli\014cation)128 1229 y Fc(\017)23 b Fe(linear)16 -b(algebra)f(and)h(linear)g(programming)128 1321 y Fc(\017)23 -b Fe(matrix)14 b(normal)i(forms)128 1413 y Fc(\017)23 -b Fe(op)q(erations)15 b(on)g(sets)128 1505 y Fc(\017)23 -b Fe(residue)16 b(computations.)60 1630 y(The)h(REDUCE)g(algebraic)h -(mo)q(de)f(has)g(b)q(een)h(impro)o(v)o(ed)f(substan)o(tially)h(since)g -(the)f(last)g(release,)h(and)f(in)60 1686 y(particular)i(o\013ers)e -(impro)o(v)o(ed)i(rule)g(list)g(capabilities,)i(including)g(free)d(op)q -(erators,)g(conditional)i(binding)60 1743 y(of)15 b(v)m(ariables)h(and) -g(b)q(etter)f(matc)o(hing)g(facilities)i(for)e(quotien)o(ts.)20 -b(The)15 b(REDUCE)g(graphics)h(in)o(terface)f(has)60 -1799 y(also)g(b)q(een)h(impro)o(v)o(ed.)21 b(F)l(or)14 -b(example,)i(a)f(user)g(is)h(no)o(w)e(able)i(to)f(plot)g(an)g -(implicitl)q(y)j(de\014ned)e(function.)60 1881 y(A)22 -b(large)g(n)o(um)o(b)q(er)g(of)f(di\013eren)o(t)h(p)q(eople)h(are)e -(resp)q(onsible)j(for)d(these)h(impro)o(v)o(emen)o(ts.)39 -b(Other)22 b(sp)q(ecial)60 1937 y(purp)q(ose)16 b(pac)o(k)m(ages)f(con) -o(tributed)h(b)o(y)f(users)g(include:)128 2062 y Fc(\017)23 -b Fe(APPL)l(YSYM:)15 b(In\014nitesimal)j(symmetries)d(of)g(di\013eren)o -(tial)h(equations)128 2154 y Fc(\017)23 b Fe(BOOLEAN:)16 -b(Bo)q(olean)g(algebra)128 2246 y Fc(\017)23 b Fe(DUMMY:)14 -b(Canonical)i(form)e(of)h(expressions)h(with)g(dumm)o(y)f(v)m(ariables) -128 2338 y Fc(\017)23 b Fe(FPS:)14 b(Calculation)j(of)d(formal)h(p)q(o) -o(w)o(er)g(series)128 2430 y Fc(\017)23 b Fe(INVBASE:)15 -b(Computation)g(of)g(in)o(v)o(olutiv)o(e)h(bases)128 -2522 y Fc(\017)23 b Fe(NCPOL)l(Y:)15 b(Non{comm)o(utativ)o(e)g(p)q -(olynomial)h(ideals)128 2614 y Fc(\017)23 b Fe(NORMF)o(ORM:)15 -b(Computation)g(of)f(matrix)h(normal)g(forms)p eop -%%Page: 2 2 -2 1 bop 128 49 a Fc(\017)23 b Fe(RANDPOL)l(Y:)16 b(A)f(random)g(p)q -(olynomial)i(generator)128 143 y Fc(\017)23 b Fe(X)o(COLOR:)16 -b(Color)f(factor)f(in)i(non-ab)q(elian)h(gauge)e(\014eld)h(theories)128 -237 y Fc(\017)23 b Fe(XIDEAL:)15 b(Gr\177)-23 b(obner)15 -b(Bases)g(for)g(exterior)g(algebra)128 331 y Fc(\017)23 -b Fe(ZEILBER)o(G:)15 b(Inde\014nite)i(and)f(de\014nite)g(summation)128 -425 y Fc(\017)23 b Fe(ZTRANS:)15 b(Calculations)h(with)g(the)f -Fb(Z)k Fe(and)c(in)o(v)o(erse)h Fb(Z)i Fe(transform.)60 -556 y(Up)q(dated)c(do)q(cumen)o(tation)f(includes)i(an)e(impro)o(v)o -(ed)g(User's)g(Man)o(ual)g(in)g(L)1340 547 y Fa(A)1359 -556 y Fe(T)1384 565 y(E)1411 556 y(X)g(format,)e(a)i(more)f(detailed)60 -612 y(online)20 b(help)f(system)f(for)f(MS/Windo)o(ws)h(and)g(Unix/X11) -h(Systems)f(and)g(a)g(bibliograph)o(y)h(listing)h(o)o(v)o(er)60 -669 y(800)14 b(references)i(to)f(REDUCE-related)g(publications.)60 -750 y(A)g(complete)h(information)f(pac)o(k)m(age)h(is)f(obtainable)i -(from:)174 869 y(REDUCE)e(Secretary)174 925 y(RAND)174 -982 y(1700)f(Main)h(Street)174 1038 y(P)l(.O.)g(Bo)o(x)f(2138)174 -1095 y(San)o(ta)g(Monica)i(CA)f(90407-2138)d(U.S.A.)174 -1151 y(T)l(elephone:)21 b(+1-310-393-0411)13 b(Ext.)20 -b(7681)174 1207 y(F)l(acsimile:)h(+1-310-393-4818)174 -1264 y(Electronic)16 b(Mail:)21 b(reduce@rand.org)60 -1353 y(If)e(y)o(ou)g(ha)o(v)o(e)g(e-mail)h(access)f(to)g(the)g(In)o -(ternet,)h(y)o(ou)e(can)i(also)f(obtain)g(curren)o(t)g(information)g(b) -o(y)g(send-)60 1409 y(ing)c(the)g(message)g Fd(send)g(info-p)n(ackage)g -Fe(to)f(reduce-netlib@rand.org,)j(reduce-netlib@can.nl)i(or)14 -b(reduce-)60 1465 y(netlib@pi.cc.u-toky)o(o.ac.jp.)20 -b(The)14 b(single)h(line)h(message)d(can)g(either)i(b)q(e)f(the)g(sub)s -(ject)f(of)h(the)f(message)g(or)60 1522 y(the)g(b)q(o)q(dy)l(.)20 -b(This)14 b(message)f(is)g(answ)o(ered)g(b)o(y)g(an)h(automated)e(serv) -o(er)h(for)f(the)h(REDUCE)g(net)o(w)o(ork)f(library)l(.)60 -1578 y(The)i(library)g(will)i(in)e(time)g(con)o(tain)g(an)o(y)f(pac)o -(k)m(ages)h(made)f(a)o(v)m(ailable)i(since)g(the)f(release)g(of)f -(REDUCE)h(3.6)60 1635 y(and)i(patc)o(hes)g(to)f(correct)g(an)o(y)g -(bugs)h(that)f(ma)o(y)g(b)q(e)i(disco)o(v)o(ered.)22 -b(F)l(urther)16 b(information)f(on)h(this)g(library)l(,)60 -1691 y(as)k(w)o(ell)i(as)e(instructions)i(on)f(ho)o(w)f(to)g(join)h -(the)g(REDUCE)g(electronic)h(forum,)f(can)g(b)q(e)h(obtained)f(b)o(y)60 -1748 y(including)d(the)d(w)o(ord)g Fd(help)g Fe(on)g(a)g(separate)g -(line)h(in)g(the)g(message.)60 1829 y(The)11 b(same)f(information)g(is) -h(a)o(v)m(ailable)h(from)e(an)g(In)o(ternet)h(gopher)f(serv)o(er)g -(with)g(the)h(address)f(info.rand.org.)60 1886 y(The)k(net)o(w)o(ork)f -(library)i(\014les)g(are)f(in)h(a)f(\\REDUCE)g(Library")g(directory)g -(under)h(the)f(directory)h(\\Publicly)60 1942 y(Av)m(ailable)i(Soft)o -(w)o(are".)i(The)c(relev)m(an)o(t)h(URL)g(is)g -(gopher://info.rand.org/11/so)o(ft)o(w)n(are/reduce)d(.)60 -2023 y(A)20 b(W)l(orld)g(Wide)g(W)l(eb)g(REDUCE)g(serv)o(er)f(with)h -(URL)h(h)o(ttp://www.rrz.uni-k)o(o)q(eln.de/REDUCE/)d(is)60 -2080 y(also)f(supp)q(orted.)26 b(In)18 b(addition)g(to)f(general)g -(information)h(ab)q(out)f(REDUCE,)f(this)i(serv)o(er)f(has)g(p)q(oin)o -(ters)60 2136 y(to)c(the)h(net)o(w)o(ork)f(library)l(,)i(the)f -(demonstration)f(v)o(ersions,)h(examples)h(of)f(REDUCE)f(programming,)h -(a)f(set)60 2193 y(of)i(man)o(uals,)g(and)g(the)g(REDUCE)g(online)i -(help)g(system.)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF DELETED r36/cslbase/cwin.ps Index: r36/cslbase/cwin.ps ================================================================== --- r36/cslbase/cwin.ps +++ /dev/null @@ -1,874 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software -%%Title: cwin.dvi -%%CreationDate: Thu Oct 19 11:31:49 1995 -%%Pages: 8 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%EndComments -%DVIPSCommandLine: F:\EMTEX\DVIPS32.EXE cwin -%DVIPSParameters: dpi=300, compressed, comments removed -%DVIPSSource: TeX output 1995.10.19:1131 -%%BeginProcSet: texc.pro -/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N -/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id -gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp -add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add -/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ -dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 -adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 -idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage -userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for -65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 -0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V -{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 -getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} -ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false -RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 -false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform -round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg -rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail -{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} -B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ -4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ -p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p -a}B /bos{/SS save N}B /eos{SS restore}B end -%%EndProcSet -TeXDict begin 39158280 55380996 1000 300 300 (/CSLBASE/cwin.dvi) -@start /Fa 13 111 df34 -D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E121C123C127812F0 -1260071A789318>59 D<1303EB0780131FEB3F00137E485AEA03F0485AEA1FC048C7FC12 -7E5AA2127E7EEA1FC0EA07E06C7EEA01FCEA007E7FEB1F801307EB030011187D9918>I< -126012F012FC127E7EEA1FC0EA07E06C7EEA01FCEA007E7FEB1F80A2EB3F00137E485AEA -03F0485AEA1FC048C7FC127E5A12F0126011187D9918>62 D73 D<387E07F038FF0FF8387F07F0381D81C0 -A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03 -151C7F9B18>78 D97 D101 DI105 D108 D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C -1CAB387F1F1F39FFBFBF80397F1F1F001914819318>II -E /Fb 76 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000 -A7B612803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA07 -01A290C7FCA6B512E0EA0700B2387FC3FE1720809F19>II<127012F8A71270AA1220A51200A51270 -12F8A3127005217CA00D>33 DI<000F1430EA1880D83060136039703001C038602C06 -903813F98039E0100300A214065CA25C00605B132000705B383040C0EA1880380F018039 -000300E0EC031090380606081504EB0C0C1318EC1C0213301360A213C0EA0180A2390300 -0C041206140648140848EB03100008EB00E01F257DA126>37 D<137813841201EA030212 -07A45BA25BA26C5A9038A00FFC9038C003E090388001C03901C00080EC0100EA03E00004 -1302EA08F03818700438307808EA70386D5AEAF01EEB0E206D5A903803C0081270D87801 -13103938067030391C1838603907E00F801E227EA023>I<127012F812FCA212741204A3 -1208A21210A212201240060E7C9F0D>I<132013401380EA0100120212065AA25AA25AA3 -12701260A312E0AC1260A312701230A37EA27EA27E12027EEA0080134013200B2E7DA112 ->I<7E12407E7E7E120C7EA27EA2EA0180A313C01200A313E0AC13C0A312011380A3EA03 -00A21206A25A12085A5A5A5A0B2E7DA112>I<127012F812FCA212741204A31208A21210 -A212201240060E7C840D>44 DI<127012F8A3127005057C840D> -I<13011303A21306A3130CA31318A31330A31360A313C0A3EA0180A3EA0300A31206A35A -A35AA35AA35AA35AA3102D7DA117>IIIII<1306A2130EA213 -1E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00 -A7EBFFE0141E7F9D17>II<137CEA0182EA0701380E0380EA0C07121C3838030090C7FC12781270 -A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C -0E6C5AEA01F0121F7E9D17>I<1240387FFFC01480A238400100EA8002A25B485AA25B5B -A25BA213C0A212015B1203A41207A76CC7FC121F7D9D17>II<127012F8A312701200AA127012F8A3127005147C930D>58 -D<127012F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C930D ->I63 D<5B497EA3497EA3EB09E0A3EB10 -F0A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07 -E039FFC03FFE1F207F9F22>65 D -I<90380FC04090387030C03801C0093803800538070003000E1301001E1300121C123C00 -7C1440A2127800F81400A91278007C1440A2123C121C001E1480120E6CEB010038038002 -6C6C5A38007038EB0FC01A217D9F21>IIII< -90380FE02090387818609038E004E03803800238070001481300001E1460A25A1520127C -127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E380380023900E0046090 -3878182090380FE0001E217D9F24>I<39FFF8FFF8390F800F8000071400AC90B5FCEB80 -0FAE000F148039FFF8FFF81D1F7E9E22>II<39FFFC0FFC390FC003E03907800180150014025C5C5C5C5C5C0181C7FC13 -83EB8780138FEB93C0EB91E013A1EBC0F01380147880A280A280EC0780A215C0D80FC013 -E039FFFC3FFC1E1F7E9E23>75 DII<39FF803FF83907C007C0EC03803905E001 -00A2EA04F01378A2133CA2131E130FA2EB0781A2EB03C1EB01E1A2EB00F1A21479143DA2 -141FA28080A2000E7F121F38FFE0011D1F7E9E22>III82 D<3807E080EA0C19EA1007EA3003EA6001A212E01300A36C1300A212 -78127FEA3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C01380130300 -E01300EAF006EACE0CEA81F812217D9F19>I<007FB512E038780F010060EB0060004014 -20A200C0143000801410A400001400B3497E3807FFFE1C1F7E9E21>I<39FFFC3FF8390F -C007C03907800380EC0100B3A300031302A2EA01C05C6C6C5AEB7018EB3820EB0FC01D20 -7E9E22>I<3BFFF07FF81FF03B1F800FC007C03B0F0007800380EE010015C0D807801402 -A33A03C009E004A39039E010F00C00011508A29038F0207800005DA2EC403C01785CA2EC -C03E90393C801E40A390391F000F80A3011E1307010E91C7FCA2010C7F010413022C207F -9E2F>87 D<39FFF003FF391F8000F8000F1460000714407F6C6C138012019038F0010000 -005BEBF802EB7C04133CEB3E08131EEB1F10EB0FB0EB07A014C01303AB1307EB7FFE201F -7F9E22>89 D<12FEA212C0B3B3A512FEA2072D7CA10D>91 DI<12FEA21206B3B3A512 -FEA2072D7FA10D>I97 D<120E12FE120EAA133E -EBC380380F01C0EB00E0120E1470A21478A61470A214E0120F380D01C0380CC300EA083E -15207F9F19>IIII<137C13C6EA018F1203EA07061300A7EAFFF0EA0700B2EA7FF01020809F -0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020 -C7FCA21230A2EA3FFE381FFF806C13C0383001E038600070481330A4006013606C13C038 -1C03803803FC00141F7F9417>I<120E12FE120EAA133E1343EB8180380F01C0A2120EAE -38FFE7FC16207F9F19>I<121C123EA3121CC7FCA6120E127E120EB1EAFFC00A1F809E0C> -I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F -000C28829E0E>I<120E12FE120EAAEB0FF0EB03C0140013025B5B5B1330137013F8EA0F -38EA0E1C131E130E7F1480130314C014E038FFCFF815207F9F18>I<120E12FE120EB3AB -EAFFE00B20809F0C>I<390E1F01F039FE618618390E81C81C390F00F00EA2000E13E0AE -3AFFE7FE7FE023147F9326>IIII<3803E080EA0619EA1C05EA3C07EA38031278127012F0A61270127812381307 -EA1C0BEA0E13EA03E3EA0003A8EB3FF8151D7E9318>III<1202A312 -06A2120EA2123EEAFFF8EA0E00AB1308A5EA06101203EA01E00D1C7F9B12>I<380E01C0 -EAFE1FEA0E01AE13031206EA030D3801F1FC16147F9319>I<38FF83F8381E01E0381C00 -C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A3132015147F9318>I< -39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807071380130414E03903 -8861001471EBC8733801D032143A3800F03CEBE01CA2EB6018EB40081E147F9321>I<38 -7FC3FC380F01E0000713C0148038038100EA01C2EA00E413EC13781338133C137C134E13 -87EA010738030380380201C0000613E0121E38FF07FE1714809318>I<38FF83F8381E01 -E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A31320A25BA3 -EAF080A200F1C7FC1262123C151D7F9318>II E /Fc 42 125 df45 D<130E131E137EEA07FE12FFA212F8 -1200B3AB387FFFFEA317277BA622>49 DII<140E141E143E147E14FEA213011303EB077E130EA2131C1338137013E0A2EA -01C0EA0380EA0700120EA25A5A5A5AB612F8A3C7EAFE00A890387FFFF8A31D277EA622> -I<00181303381F801FEBFFFE5C5C5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80FC -381E003F1208C7EA1F8015C0A215E0A21218127C12FEA315C05A0078EB3F80A26CEB7F00 -381F01FE6CB45A000313F0C613801B277DA622>II<1238123E003FB512F0A34814E015C015 -8015003870000EA25C485B5C5CEA00015C495A130791C7FC5B5B131E133EA2137E137CA2 -13FCA41201A76C5A13701C297CA822>III65 D68 DI73 D75 D78 DII<01FF13C0000313E1000F13F9381F80FF383F003F003E130F481307 -A200FC1303A214017EA26C90C7FC13C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0 -C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EB -E01F00E3B5120000E113FC38C01FF01C297CA825>83 D<007FB71280A39039807F807FD8 -7C00140F00781507A20070150300F016C0A2481501A5C791C7FCB3A490B612C0A32A287E -A72F>II<3803FF80000F13F0 -381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F0012 -7E5AA4145F007E13DF393F839FFC381FFE0F3803F8031E1B7E9A21>97 -DIIIII<90387F80F03901FFE3F839 -07C0FE1C390F807C7C381F003E151048EB3F00A66C133EA26C6C5A6C6C5A3805FFE0380C -7F8048C8FC121CA2121E381FFFF814FF6C14C06C14E06C14F0120F383E000748EB01F848 -1300A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>II<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EA -FFE0A3120FB3A3EAFFFEA30F2B7EAA12>I -108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039C803 -F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E90 -38C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D -9A25>II<38FFE1FE9038E7FF809038FE0FE0390FF803F09038F001F801E0 -13FC140015FEA2157FA8157E15FEA215FC140101F013F89038F803F09038FC0FE09038EF -FF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC3E0EBC7F8EBCC7C380FD8 -FE13D0A213F0EBE07C1400B0B5FCA3171B7E9A1B>114 D<3803FE30380FFFF0EA3E03EA -7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07 -FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B>I<13 -70A413F0A312011203A21207381FFFE0B5FCA23807F000AD1470A7000313E03801F8C0EA -00FFEB3F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067FF38 -01FFC738007F87201B7D9A25>I<39FFFC1FFEA33907F00780D803F813006C6C5AEBFE1E -00005BEB7F78EB3FF85C6D5A130F6D7E80130F497EEB3DFEEB38FFEB787F9038F03F80D8 -01E013C03903C01FE0EB800F39FFF03FFFA3201B7F9A23>120 D<39FFFE07FFA33907F0 -00E0A2EBF801000314C0A23901FC0380A2EBFE07000014006D5AEB7F0EA2EB3F9CA214FC -6D5AA26D5AA213075CA26D5AA25CA21307003890C7FC127CEAFE0EA25B5BEA7C70EA3FE0 -EA0F8020277F9A23>I124 D E /Fd 17 -117 df<127012F812FCA212741204A41208A21210A212201240060F7C840E>44 -D<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49 D<00101380381E0700EA -1FFF5B13F8EA13E00010C7FCA613F8EA130EEA1407381803801210380001C0A214E0A412 -7012F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>53 -D57 D<497EA3497EA3EB05E0A2EB0DF01308A2497E1478A2497EA3497EA3 -497EA290B5FC3901000780A24814C000021303A24814E01401A2000CEB00F0A2003EEB01 -F839FF800FFF20237EA225>65 D<903807E0109038381830EBE0063901C0017039038000 -F048C7FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C12 -3CA2001C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247DA2 -23>67 D<39FF8007FF3907C000F81570D805E01320EA04F0A21378137C133C7F131F7FEB -0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E140FA2EC07A0EC03E0A21401A2 -1400000E1460121FD8FFE0132020227EA125>78 DI97 D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA714 -1C143C1438000F1370380C8060EB41C038083F0017237FA21B>II101 -D<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE -27157F942A>109 D<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7FF18157F -941B>II114 D<1202A41206A3120E121E -123EEAFFF8EA0E00AB1304A6EA07081203EA01F00E1F7F9E13>116 -D E /Fe 20 120 df45 D50 D<91383FE001903901FFF8039038 -07F01E90391F800307013EC712870178144F49142F4848141F4848140F485A000F150790 -C8FC481503121E123E003C1501127CA30078150012F8AB1278127C1601A2123C123E121E -001F15027E6D1406000715046C6C14086C7E6C6C141001781420013E14C090391F800380 -903907F00F00903801FFFC9038003FE028337CB130>67 D73 D78 D<007FB712E0A23A7E000F80070078 -1501007015000060166000401620A200C01630A2481610A6C71500B3AC4A7E010FB57EA2 -2C317EB030>84 D87 D<13FE380303C0380C00E00010137080003C133C003E13 -1C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143E -A21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97 -D99 -DIII104 D<120FEA1F80A4EA0F00C7FCABEA078012FFA212 -0F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<380780FE39FF83078090388C03C0390F90 -01E0EA07A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>110 -DI<380783E038FF8C18EB907C120FEA07A0EBC0381400 -A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E0330381800F0481370481330 -12E01410A37E6C1300127EEA3FF06CB4FC6C13C0000313E038003FF0EB01F813006C133C -A2141C7EA27E14186C1338143000CC136038C301C03880FE00161F7E9E1A>I<1340A513 -C0A31201A212031207120F381FFFE0B5FC3803C000B01410A80001132013E000001340EB -78C0EB1F00142C7FAB19>I<3BFFF07FF80FFCA23B0FC007C003F0D98003EB01C00007ED -0080A2D803C09038E00100A214073A01E004F002A2EC0870D800F0EB7804A2EC10380178 -EB3C08A2EC201C013CEB1E10A2EC400E011EEB0F20A2EC8007010F14C0A2EC00036D5CA2 -01061301010291C7FC2E1F7F9E30>119 D E end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin -%%PaperSize: a4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 385 456 a Fe(The)21 b(CWIN-2)h(Windo)n(ws)f(In)n(terface)i(Co)r -(de)800 583 y Fd(A)16 b(C)g(Norman)756 684 y(Octob)q(er)g(19,)h(1995) -191 877 y Fc(1)67 b(In)n(tro)r(duction)191 979 y Fb(This)17 -b(do)q(cumen)o(t)f(is)h(not)f(to)q(o)g(concerned)h(ab)q(out)f(in)o -(ternal)h(data)f(structures)g(or)f(pro-)191 1035 y(gramming)g(issues,)h -(but)f(will)i(attempt)d(to)h(do)q(cumen)o(t)h(the)f(b)q(eha)o(viour)h -(I)g(will)h(imple-)191 1092 y(men)o(t)c(and)h(in)h(some)e(cases)g -(explain)j(wh)o(y)d(I)h(did)h(things)f(that)f(w)o(a)o(y)l(.)18 -b(The)c(explanation)191 1148 y(is)19 b(needed)g(b)q(ecause)g(while)h -(writing)e(the)h(co)q(de)f(\(and)g(its)h(predecessors\))f(I)h(found)f -(it)191 1205 y(hard)c(to)f(mak)o(e)h(scrolling,)h(selection,)g(cut)f(&) -g(paste)g(op)q(erations,)g(fon)o(t)f(c)o(hanges,)h(user)191 -1261 y(input)i(and)g(program)e(output)h(all)h(in)o(teract)f(prop)q -(erly)l(.)262 1318 y(First)i(the)g(fundamen)o(tals.)28 -b(I)17 b(will)j(supp)q(ort)d(a)g(windo)o(w)h(that)f(alw)o(a)o(ys)g(has) -g(b)q(oth)191 1374 y(horizon)o(tal)e(and)h(v)o(ertical)g(scroll)g(bars) -f(visible.)262 1431 y(T)l(o)e(start)g(with)h(it)h(will)g(con)o(tain)f -(just)g(text,)f(but)h(parts)g(of)f(that)h(will)h(b)q(e)g(sho)o(wn)e(in) -191 1487 y(di\013ering)k(colours)g(to)f(mark)g(out)g(where)h(there)f -(are)g(prompts.)24 b(I)16 b(will)j(allo)o(w)d(for)g(the)191 -1543 y(p)q(ossibilit)o(y)i(that)e(in)g(a)g(later)g(v)o(ersion)g(the)h -(text)e(in)i(the)f(bu\013er)g(can)g(b)q(e)h(displa)o(y)o(ed)g(in)191 -1600 y(v)m(arious)h(fon)o(ts,)g(sizes)h(and)f(with)g(v)m(arious)g -(e\013ects.)28 b(The)18 b(unit)h(of)e(displa)o(y)i(will)h(b)q(e)f(a)191 -1656 y(\\line")f(whic)o(h)h(is)e(represen)o(ted)h(as)f(a)g(blo)q(c)o(k) -h(of)f(c)o(haracters)g(and)g(all)h(e\013ects)f(withing)191 -1713 y(the)e(blo)q(c)o(k)h(will)g(b)q(e)g(indicated)g(b)o(y)f(em)o(b)q -(edding)i(con)o(trol)d(sequences)i(within)g(it.)k(Eac)o(h)191 -1769 y(line)d(will)g(start)d(o\013)g(in)i(a)f(standard)g(fon)o(t)f -(con\014guration.)262 1826 y(The)d(user)g(t)o(yp)q(es)h(in)g(c)o -(haracters,)f(uses)g(the)h(DELETE)f(k)o(ey)l(,)g(activ)m(ates)h(scroll) -g(bars,)191 1882 y(uses)k(the)h(mouse)f(to)f(re-p)q(osition)j(the)e -(caret)g(and/or)g(establish)h(a)f(selection)h(region,)191 -1939 y(and)e(in)o(v)o(ok)o(ed)h(CUT)f(and)g(P)l(ASTE)g(op)q(erations.) -262 1995 y(There)e(is)h(a)f(program)f(running)i(that)e(will,)j(from)e -(time)g(to)g(time,)g(request)h(c)o(harac-)191 2052 y(ters)h(from)f(the) -i(user.)k(Before)15 b(doing)h(so)f(it)h(can)f(select)h(the)g(prompt)f -(that)f(should)j(b)q(e)191 2108 y(used.)j(It)14 b(can)g(also)g -(generate)g(output.)19 b(There)c(is)f(no)g(automatic)g(supp)q(osition)h -(ab)q(out)191 2164 y(ho)o(w)i(long)h(the)g(program)e(dela)o(ys)i(b)q -(et)o(w)o(een)g(I/O)g(requests)g(and)g(ho)o(w)f(it)h(in)o(terlea)o(v)o -(es)191 2221 y(reads)d(and)g(writes.)262 2277 y(The)10 -b(stored)g(text)f(liv)o(es)j(in)f(a)e(bu\013er)i(that)e(has)h(\014nite) -h(size,)h(and)e(so)g(after)g(a)f(program)191 2334 y(has)17 -b(done)g(enough)g(the)g(bu\013er)g(will)h(\014ll)h(up)e(and)g(parts)f -(of)h(it)g(will)h(need)g(to)e(need)i(to)191 2390 y(b)q(e)e(recycled.) -191 2534 y Fc(2)67 b(Scrolling)25 b(under)e(user)g(con)n(trol)191 -2635 y Fb(If)13 b(the)f(whole)h(of)f(the)g(text)g(bu\013er)h(can)f -(\014t)g(on)h(within)g(the)g(windo)o(w)f(v)o(ertically)i(the)e(the)191 -2691 y(v)o(ertical)j(scroll)g(bar)f(has)h(no)f(e\013ect,)g(and)h(an)o -(y)f(attempt)f(to)h(p)q(osition)i(it)f(to)e(an)o(ywhere)927 -2826 y(1)p eop -%%Page: 2 2 -2 1 bop 191 274 a Fb(other)16 b(than)h(the)g(\\top")e(p)q(osition)j -(has)e(no)h(e\013ect.)24 b(If)17 b(there)g(are)f(more)g(lines)j(of)d -(text)191 330 y(than)f(will)h(\014t)e(on)h(the)g(screen)g(at)f(once)h -(the)g(v)o(ertical)g(scroll)h(bar)e(\(and)h(related)g(short-)191 -387 y(cut)d(k)o(eys,)f(viz)i(page-up,)f(page-do)o(wn,)g(home)f(and)h -(end\))g(cause)g(the)f(windo)o(w)h(to)f(scroll.)191 443 -y(Scrolling)i(is)f(limited)i(so)d(that)g(at)f(one)i(extreme)g(the)f -(\014rst)g(line)i(of)f(input)g(text)f(is)h(visible)191 -500 y(at)k(the)h(top)g(of)f(the)h(windo)o(w)h(and)f(at)f(the)h(other)g -(extreme)f(the)h(\014nal)h(line)h(of)d(text)h(is)191 -556 y(just)e(fully)h(visible)i(at)c(the)i(b)q(ottom)e(of)h(the)g(windo) -o(w.)262 613 y(If)k(the)h(collection)h(of)e(lines)i(displa)o(y)o(ed)f -(in)h(the)e(windo)o(w)h(are)f(all)h(short)f(enough)191 -669 y(to)c(\014t)g(completely)h(across)f(it)g(then)h(the)f(horizon)o -(tal)g(scroll)h(p)q(osition)h(is)e(forced)h(to)e(its)191 -726 y(home)g(\(leftmost\))e(p)q(osition)j(and)f(attempts)f(to)g(mo)o(v) -o(e)f(it)i(ha)o(v)o(e)g(no)f(e\013ect.)19 b(Otherwise)191 -782 y(the)12 b(user)h(ma)o(y)e(scroll)i(horizon)o(tally)g(up)g(to)f(an) -g(extreme)g(where)g(the)h(longest)f(line)i(that)191 839 -y(lies)i(within)h(the)e(windo)o(w)h(comes)f(just)g(half)g(w)o(a)o(y)f -(across)h(the)g(windo)o(w.)262 895 y(If)h(the)h(windo)o(w)g(size)g(of)f -(fon)o(t)g(is)h(c)o(hanged)g(scrolling)h(can)f(b)q(e)g(activ)m(ated)g -(to)f(k)o(eep)191 951 y(the)d(conditions)i(describ)q(ed)g(ab)q(o)o(v)o -(e)e(true.)19 b(In)14 b(particular)g(this)g(means)f(that)f(when)i(the) -191 1008 y(windo)o(w)k(is)g(enlarged)g(it)g(will)h(scroll)g(to)e(k)o -(eep)h(the)f(last)h(line)h(of)e(the)h(text)f(visible)j(as)191 -1064 y(the)f(last)g(line)h(in)g(the)f(windo)o(w,)h(and)f(to)f(k)o(eep)h -(horizon)o(tally)h(scrolled)g(information)191 1121 y(visible)14 -b(at)e(least)h(half)f(w)o(a)o(y)g(across)f(the)h(windo)o(w.)20 -b(Resizing)14 b(the)e(windo)o(w)h(will)h(up)q(date)191 -1177 y(the)h(p)q(osition)h(the)f(the)g(scroll-bar)h(th)o(um)o(bs)f(to)f -(re\015ect)h(what)g(has)g(happ)q(ened.)21 b(There)191 -1234 y(can)f(also)h(b)q(e)g(scrolling)h(caused)f(b)o(y)f(input)h(and)g -(output)f(op)q(erations,)i(but)e(that)g(is)191 1290 y(discussed)d(in)f -(a)f(momen)o(t)f(under)i(the)f(heading)h(A)o(UTO-)g(SCR)o(OLLING.)262 -1347 y(The)g(END)f(op)q(eration)h(mo)o(v)o(es)f(the)h(caret)g(to)f(an)h -(extreme)g(end)g(of)g(the)g(text)f(and)191 1403 y(scroll)g(the)f(windo) -o(w)g(to)f(mak)o(e)h(it)g(visible.)22 b(HOME)14 b(scrolls)g(the)g -(windo)o(w)h(to)e(sho)o(w)g(the)191 1460 y(v)o(ery)i(top)g(of)f(the)i -(text,)e(but)h(do)q(es)h(not)f(re-p)q(osition)h(the)f(caret.)191 -1603 y Fc(3)67 b(Use)21 b(of)h(the)g(mouse)g(to)g(select)g(regions)h -(of)e(text)191 1704 y Fb(The)c(caret)g(is)g(considered)i(to)d(lie)j(b)q -(et)o(w)o(een)e(a)g(pair)g(of)g(c)o(haracters)f(\(or)g(righ)o(t)h(at)f -(the)191 1761 y(v)o(ery)k(start)f(or)h(v)o(ery)g(end)h(of)f(the)g -(text\).)35 b(T)l(ext)20 b(forming)h(a)f(\\prompt")f(is)i(treated)191 -1817 y(as)e(represen)o(ting)h(a)f(single)i(item,)f(and)g(so)f(the)g -(mouse)g(can)h(not)f(select)h(a)f(p)q(osition)191 1874 -y(within)e(the)e(prompt)g(text.)20 b(Pressing)15 b(the)h(left)g(mouse)f -(button)g(causes)h(the)f(caret)g(to)191 1930 y(b)q(e)k(mo)o(v)o(ed)f -(to)f(the)h(gap)g(nearest)g(to)g(the)g(mouse)g(p)q(osition.)30 -b(The)19 b(place)g(where)f(the)191 1986 y(mouse)13 b(button)g(w)o(as)f -(depressed)j(b)q(ecomes)e(the)h(ro)q(ot)e(of)h(a)g(p)q(ossible)i -(selection)f(region.)191 2043 y(F)l(rom)d(when)i(the)f(mouse)f(button)h -(w)o(as)f(depressed)i(to)e(when)i(it)f(is)h(released)f(the)g(mouse)191 -2099 y(is)g(captured)g(b)o(y)g(the)g(windo)o(w,)g(in)h(the)f(sense)g -(that)g(ev)o(en)g(if)g(the)g(mouse)g(mo)o(v)o(es)f(outside)191 -2156 y(the)i(windo)o(w's)g(b)q(orders)h(its)f(activit)o(y)h(is)f(still) -i(trac)o(k)o(ed.)j(If)c(the)f(mouse)g(is)h(mo)o(v)o(ed)f(with)191 -2212 y(the)i(button)g(do)o(wn)g(a)f(region)h(of)g(text)g(b)q(ecomes)g -(selected.)21 b(The)15 b(text)g(in)h(that)e(region)191 -2269 y(is)g(displa)o(y)o(ed)h(in)g(a)e(form)g(of)g(in)o(v)o(erse)h -(video)h(\(exact)e(details)h(dep)q(end)i(on)d(the)h(windo)o(ws)191 -2325 y(colour)g(sc)o(heme)g(in)h(force\).)j(If)c(the)g(mouse)g(is)g -(dragged)f(ab)q(o)o(v)o(e)h(or)f(b)q(elo)o(w)h(the)g(windo)o(w)191 -2382 y(while)f(making)f(a)g(selection)h(the)f(windo)o(w)g(is)g -(scrolled)i(in)e(the)g(relev)m(an)o(t)h(direction,)g(and)191 -2438 y(the)h(sp)q(eed)h(of)f(scrolling)h(increases)g(if)g(the)f(mouse)g -(remains)g(outside)h(the)f(windo)o(w)g(for)191 2495 y(a)i(while.)24 -b(If)16 b(the)g(mouse)g(mo)o(v)o(es)g(to)f(the)h(left)h(of)e(the)h -(windo)o(w)h(and)f(the)g(windo)o(w)g(has)191 2551 y(already)d(b)q(een)h -(scrolled)h(horizon)o(tally)f(it)f(will)i(b)q(e)e(gradually)h -(restored.)19 b(If)13 b(the)g(mouse)191 2607 y(go)q(es)g(to)f(the)h -(righ)o(t)f(of)h(the)g(windo)o(w)g(scrolling)h(will)h(b)q(e)e(activ)m -(ated)g(if)h(the)f(line)h(that)e(the)191 2664 y(mouse)j(is)h(on)f -(extends)h(b)q(ey)o(ond)f(the)h(righ)o(t)f(hand)g(b)q(order)h(of)f(the) -g(curren)o(t)g(windo)o(w.)927 2826 y(2)p eop -%%Page: 3 3 -3 2 bop 262 274 a Fb(Pressing)10 b(the)h(\(left\))f(mouse)h(button)f -(with)h(SHIFT)g(held)h(do)o(wn)e(results)h(in)h(a)e(selec-)191 -330 y(tion)15 b(b)q(eing)h(extended)g(from)e(its)h(original)h(ro)q(ot)e -(to)g(the)h(new)g(mouse)g(p)q(osition.)20 b(Th)o(us)191 -387 y(clic)o(king)g(in)f(one)g(place)g(and)g(then)f(shift-clic)o(king)j -(in)e(another)f(sets)g(up)h(a)f(selection)191 443 y(from)c(the)i -(\014rst)e(to)h(second)h(place.)262 500 y(The)i(shift-clic)o(k)i(op)q -(eration)e(relies)h(up)q(on)g(a)e(previously)j(set)d(selection)j(ro)q -(ot.)27 b(If)191 556 y(none)10 b(has)h(b)q(een)g(established)h(b)q -(efore)e(then)h(shift-clic)o(k)h(b)q(eha)o(v)o(es)e(just)g(lik)o(e)h -(an)f(ordinary)191 613 y(clic)o(k.)20 b(Once)14 b(set)e(b)o(y)g(an)h -(initial)h(clic)o(k)g(a)e(selection)i(ro)q(ot)e(remains)h(v)m(alid)h -(un)o(til)g(another)191 669 y(mouse)21 b(clic)o(k)h(\(whic)o(h)f(re-p)q -(ositions)h(it\))f(or)f(un)o(til)i(bu\013er)f(wrapping)g(deletes)h -(some)191 726 y(c)o(haracters)12 b(from)h(the)g(bu\013er)g(\(ev)o(en)o -(tually)h(almost)f(an)o(y)g(input)h(or)f(output)g(op)q(eration)191 -782 y(will)j(cause)g(this\))f(or)f(un)o(til)i(the)f(user)g(deletes)h(a) -e(c)o(haracter)g(from)g(the)h(text)g(using)g(the)191 -839 y(DELETE)j(k)o(ey)l(.)27 b(CUT)18 b(op)q(erations)g(can)g(lea)o(v)o -(e)g(a)f(selection)j(ro)q(ot)d(set)g(at)g(the)h(place)191 -895 y(where)d(the)h(remo)o(v)o(ed)e(material)i(used)g(to)e(b)q(e.)262 -951 y(The)23 b(COPY)g(op)q(eration)g(copies)g(all)h(c)o(haracters)e -(from)g(the)h(selection)h(to)e(the)191 1008 y(clipb)q(oard.)29 -b(If)19 b(con)o(trol)e(c)o(haracters)g(are)h(presen)o(t)f(they)h(are)g -(sen)o(t)f(to)h(the)g(clipb)q(oard)191 1064 y(without)f(adjustmen)o(t.) -23 b(Lines)18 b(sen)o(t)f(to)f(the)g(clipb)q(oard)j(ha)o(v)o(e)d(CR/LF) -h(at)e(their)j(end)191 1121 y(as)c(termination.)20 b(CUT)14 -b(acts)g(as)g(COPY)g(but)g(then)h(the)f(selected)i(region)f(is)f -(deleted.)191 1177 y(RE-INPUT)f(p)q(erforms)f(a)f(COPY)i(and)f(then)g -(P)l(ASTEs)h(the)f(material)g(in)o(to)g(the)g(input)191 -1234 y(bu\013er\(but)e(b)q(ecause)h(it)g(uses)g(COPY)f(it)h(places)g -(the)f(selected)i(text)e(in)o(to)g(the)h(clipb)q(oard)191 -1290 y(on)g(the)g(w)o(a)o(y\).)18 b(SELECT-ALL)12 b(do)q(es)g(what)e -(it)i(sa)o(ys)e(\(and)h(do)q(es)h(not)f(mo)o(v)o(e)f(the)h(caret\).)191 -1347 y(CLEAR)h(thro)o(ws)f(a)o(w)o(a)o(y)f(all)i(text)f(in)i(the)e -(displa)o(y)i(bu\013er.)19 b(Immediately)13 b(after)d(a)i(CUT)191 -1403 y(op)q(eration)19 b(the)g(UNDO)g(button)f(will)j(re-p)q(osition)f -(the)f(caret)f(to)g(the)h(place)h(where)191 1460 y(material)13 -b(w)o(as)g(deleted)i(and)e(will)i(p)q(erform)e(a)g(P)l(ASTE.)g(Only)h -(one)g(lev)o(el)g(of)f(CUT)g(can)191 1516 y(b)q(e)k(UNDOne.)24 -b(A)16 b(DELETE)g(when)h(a)f(selection)h(has)g(b)q(een)g(set)f(up)h -(will)h(delete)f(the)191 1572 y(selection)g(\(but)f(not)g(do)g(the)g -(COPY)g(op)q(eration)h(that)e(a)h(CUT)f(w)o(ould\).)23 -b(P)o(art)15 b(of)g(an)191 1629 y(e\013ect)g(will)i(b)q(e)f(that)e(a)h -(DELETE)g(ma)o(y)g(not)g(k)o(eep)h(quite)g(so)e(m)o(uc)o(h)i(stu\013)e -(for)h(UNDO)191 1685 y(as)g(w)o(ould)g(a)g(CUT.)262 1742 -y(COPY)20 b(op)q(erations)g(can)g(fail)h(if)g(the)f(clipb)q(oard)i(can) -e(not)g(b)q(e)h(op)q(ened)g(or)e(if)i(it)191 1798 y(pro)o(v)o(es)15 -b(imp)q(ossible)i(to)e(allo)q(cate)h(windo)o(ws)g(global)g(memory)f -(for)g(the)g(text)g(that)g(w)o(as)191 1855 y(to)22 b(b)q(e)h(copied.)43 -b(In)23 b(suc)o(h)f(cases)h(the)f(fact)g(that)g(the)g(COPY)h(failed)h -(will)g(not)e(b)q(e)191 1911 y(indicated)e(to)d(the)i(user,)f(and)h(in) -g(the)f(case)g(of)g(a)g(CUT)g(it)g(will)i(not)e(b)q(e)h(p)q(ossible)h -(to)191 1968 y(UNDO)15 b(the)h(CUT.)191 2111 y Fc(4)67 -b(Program-generated)22 b(output)191 2212 y Fb(This)15 -b(is)g(alw)o(a)o(ys)f(inserted)i(at)e(the)g(end)i(of)e(the)g(bu\013er.) -20 b(If)15 b(the)g(caret)f(is)h(at)f(the)g(end)i(of)191 -2269 y(the)11 b(text)g(it)g(mo)o(v)o(es)f(as)h(new)g(text)g(is)g -(inserted,)i(and)e(in)h(this)f(case)g(if)h(the)f(caret)f(starts)g -(o\013)191 2325 y(visible)16 b(the)d(screen)h(is)g(scrolled)g -(automatically)g(to)f(k)o(eep)h(the)f(caret)g(p)q(osition)h(visible.) -191 2382 y(This)g(ma)o(y)e(in)o(v)o(olv)o(e)i(horizon)o(tal)g(as)e(w)o -(ell)j(as)d(v)o(ertical)i(scrolling,)h(but)e(an)g(attempt)g(will)191 -2438 y(b)q(e)j(made)f(to)g(dela)o(y)g(auto-scrolling)h(so)f(that)g(it)g -(do)q(es)h(not)f(happ)q(en)h(to)q(o)e(often.)262 2495 -y(Action)h(has)g(to)f(b)q(e)h(tak)o(en)f(when)i(the)f(bu\013er)f(b)q -(ecomes)i(full.)21 b(The)15 b(bu\013er)g(can)g(b)q(e)191 -2551 y(\\full")i(either)h(b)q(ecause)f(the)g(maxim)o(um)g(n)o(um)o(b)q -(er)g(of)f(c)o(haracters)g(ha)o(v)o(e)g(b)q(een)i(stored)191 -2607 y(in)e(it)g(or)f(b)q(ecause)h(it)f(holds)h(the)g(maxim)o(um)f(n)o -(um)o(b)q(er)h(of)f(lines)i(that)d(it)i(is)g(con\014gured)191 -2664 y(for)k(\(at)f(presen)o(t)i(I)g(will)h(allo)o(w)f(for)f(64K)g(c)o -(haracters)g(and)g(2K)h(lines\).)37 b(In)21 b(normal)927 -2826 y(3)p eop -%%Page: 4 4 -4 3 bop 191 274 a Fb(circumstances)15 b(when)g(the)f(bu\013er)g(o)o(v)o -(er\015o)o(ws)f(the)h(oldest)h(whole)f(line)i(of)e(text)g(stored)191 -330 y(in)i(it)f(is)h(discarded.)21 b(This)16 b(p)q(olicy)h(is)f(mo)q -(di\014ed)g(in)g(v)m(arious)g(circumstances:)247 406 -y(1.)22 b(If)16 b(the)g(bu\013er)g(con)o(tains)h(only)f(one)g -(\(incomplete\))i(line)f(of)f(text)g(then)g(the)g(sys-)305 -462 y(tem)f(thro)o(ws)g(the)h(en)o(tire)g(bu\013er)g(con)o(ten)o(ts)f -(a)o(w)o(a)o(y)l(.)21 b(If)16 b(there)g(w)o(ere)g(un)o(balanced)305 -519 y(con)o(trol)i(sequences)h(in)h(the)e(bu\013er)h(the)g(subsequen)o -(t)g(displa)o(y)g(ma)o(y)f(b)q(e)h(man-)305 575 y(gled,)c(for)g -(instance)h(b)o(y)f(b)q(eing)i(in)f(the)f(wrong)g(colour)g(or)g(fon)o -(t.)k(This)d(case)f(can)305 632 y(only)k(arise)g(if)h(the)f(program)e -(b)q(eing)j(run)g(k)o(eeps)f(prin)o(ting)h(large)f(n)o(um)o(b)q(ers)g -(of)305 688 y(c)o(haracters)c(without)h(an)g(in)o(terv)o(ening)h -(newline.)25 b(I)16 b(really)h(hop)q(e)g(this)f(circum-)305 -744 y(stance)h(do)q(es)i(not)e(arise!)28 b(I)19 b(sp)q(ecify)g(this)f -(extreme)g(b)q(eha)o(viour)h(b)q(ecause)g(it)f(is)305 -801 y(hard)13 b(to)f(indicate)j(a)e(safe)g(w)o(a)o(y)f(of)g(abandoning) -i(a)f(part-line)h(if)g(I)g(in)o(tend)g(in)g(due)305 857 -y(course)k(to)g(put)h(elab)q(orately)h(in)o(terpreted)f(in)h(the)e -(bu\013er.)31 b(A)18 b(p)q(ossible)j(safer)305 914 y(re\014nemen)o(t)f -(here)g(w)o(ould)g(b)q(e)g(to)f(discard)h(an)o(y)f(further)h(c)o -(haracters)e(inserted)305 970 y(in)o(to)c(the)h(bu\013er)g(un)o(til)h -(a)e(newline.)22 b(But)14 b(at)g(presen)o(t)h(it)g(do)q(es)g(not)f -(seem)h(w)o(orth)305 1027 y(while)h(legislating)h(for)e(suc)o(h)g(a)g -(desparate)g(and)g(\(I)h(hop)q(e\))f(un)o(usual)h(situation.)247 -1113 y(2.)22 b(If)11 b(the)h(line)h(that)d(is)i(to)f(b)q(e)h(discarded) -h(o)o(v)o(erlaps)e(with)g(a)g(region)h(of)f(text)g(that)f(has)305 -1170 y(b)q(een)15 b(selected)h(the)e(system)g(pauses,)h(c)o(hanging)g -(the)f(title)h(bar)g(of)f(the)g(windo)o(w)305 1226 y(to)20 -b(alert)h(the)g(user)g(to)f(what)g(has)h(happ)q(ened.)38 -b(This)22 b(dela)o(y)f(is)h(so)e(that)g(the)305 1282 -y(user)f(can)g(complete)h(a)e(COPY)h(op)q(eration)h(to)e(preserv)o(e)h -(line)i(that)d(is)h(ab)q(out)305 1339 y(to)d(b)q(e)h(lost,)g(or)g(a)f -(PRINT)i(\(for)e(the)h(same)f(reason\).)24 b(When)18 -b(the)f(selection)h(is)305 1395 y(cancelled)i(for)e(an)o(y)g(reason)g -(the)h(line)h(will)g(b)q(ecome)f(vulnerable)i(and)e(output)305 -1452 y(can)c(con)o(tin)o(ue.)247 1538 y(3.)22 b(If)14 -b(the)h(line)h(for)e(that)g(is)h(to)f(b)q(e)h(deleted)h(is)f(not)f(in)o -(v)o(olv)o(ed)i(in)f(a)f(selection)i(but)f(it)305 1595 -y(is)f(visible)j(on)d(the)g(screen)h(and)g(the)f(end)h(of)f(the)g(text) -g(\(ie)g(the)h(insertion)g(p)q(oin)o(t\))305 1651 y(is)i(not)f -(visible,)i(then)f(again)f(the)h(system)f(pauses.)23 -b(This)17 b(allo)o(ws)g(for)f(the)g(case)305 1708 y(where)g(a)g(user)g -(has)g(scrolled)h(up)f(the)g(displa)o(y)i(to)d(insp)q(ect)i(an)f(early) -h(part)e(of)h(a)305 1764 y(transaction,)c(and)i(w)o(ould)f(not)g(lik)o -(e)h(it)g(to)e(v)m(anish)i(un)o(till)h(the)f(scroll)g(bac)o(k)f(do)o -(wn)305 1821 y(to)i(the)i(end.)24 b(I)16 b(allo)o(w)h(the)f(line)i(to)e -(b)q(e)h(deleted)h(an)o(yw)o(a)o(y)d(in)i(the)f(case)h(that)e(all)305 -1877 y(the)k(lines)h(of)f(input)h(are)f(visible)i(on)e(the)g(screen:)29 -b(this)19 b(case)g(can)g(only)h(arise)305 1933 y(when)g(at)f(least)h -(one)g(of)g(the)g(lines)h(of)e(output)h(is)h(amazingly)f(long.)34 -b(This)21 b(is)305 1990 y(b)q(ecause)16 b(the)g(user)g(could)h(not)e -(then)h(scroll)h(the)f(windo)o(w)g(to)f(giv)o(e)h(the)g(system)305 -2046 y(a)e(hin)o(t)i(that)f(it)g(should)h(pro)q(ceed.)262 -2122 y(If)c(output)g(is)g(generated)h(and)f(after)f(it)i(has)f(b)q(een) -h(put)f(on)g(the)g(screen)h(the)f(windo)o(w)191 2178 -y(is)21 b(not)e(scrolled)j(do)o(wn)d(as)h(far)f(as)h(it)g(will)i(go)d -(then)i(output)f(will)h(need)g(to)f(up)q(date)191 2235 -y(the)e(v)o(ertical)g(scroll)h(th)o(um)o(b's)e(p)q(osition.)29 -b(F)l(or)17 b(instance)h(if)h(b)q(efore)f(the)g(output)f(w)o(as)191 -2291 y(generated)h(the)h(scrollbar)g(th)o(um)o(b)f(w)o(as)f(at)h(the)h -(50\045)e(p)q(osition,)j(afterw)o(ards)d(it)i(will)191 -2347 y(t)o(ypically)g(b)q(e)f(higher)g(up.)26 b(Discarding)18 -b(old)g(text)f(can)g(also)g(in\015uence)j(the)d(p)q(osition)191 -2404 y(where)e(the)h(th)o(um)o(b)f(should)h(b)q(e)g(sho)o(wn.)191 -2544 y Fc(5)67 b(Keyb)r(oard)22 b(and)h(P)-6 b(ASTE)23 -b(input)191 2645 y Fb(DELETE)18 b(deletes)h(the)f(c)o(haracter)g(b)q -(efore)g(the)h(caret,)f(or)g(if)g(that)g(is)h(the)f(end)h(of)f(a)191 -2702 y(prompt)c(it)h(deletes)g(the)g(whole)g(prompt.)k(After)14 -b(a)g(consecutiv)o(e)h(series)h(of)e(DELETE)927 2826 -y(4)p eop -%%Page: 5 5 -5 4 bop 191 274 a Fb(op)q(erations)16 b(an)h(UNDO)f(will)i(re-insert)f -(the)g(deleted)g(c)o(haracter,)f(but)g(there)h(will)h(b)q(e)191 -330 y(a)e(limit)h(to)e(the)h(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f -(that)g(will)j(b)q(e)e(stored,)f(so)h(this)g(can)g(only)h(b)q(e)191 -387 y(relied)g(up)q(on)f(for)e(small)i(op)q(erations.)262 -443 y(The)e(e\013ect)g(of)f(k)o(eyb)q(oard)h(input)h(dep)q(ends)h(on)e -(whether)g(the)g(caret)g(is)g(at)g(the)g(end)191 500 -y(of)k(the)i(text)e(or)g(within)j(the)e(bu\013er.)31 -b(T)l(o)19 b(a)f(more)h(minor)g(exten)o(t)g(it)g(also)g(dep)q(ends)191 -556 y(on)14 b(whether)g(the)h(caret)f(\(while)h(within)g(the)g(text)e -(as)h(a)g(whole\))g(iden)o(ti\014es)i(a)e(p)q(osition)191 -613 y(within)i(a)f(curren)o(tly)h(activ)o(e)f(input)h(line.)262 -669 y(When)21 b(the)h(caret)f(is)h(not)f(at)g(the)h(end)g(of)f(the)h -(text,)g(normal)g(c)o(haracters)f(are)191 726 y(inserted)f(b)q(efore)g -(the)g(caret.)32 b(The)19 b(region)h(co)o(v)o(ered)f(b)o(y)h(an)f -(insert)h(is)g(recorded)g(so)191 782 y(that)14 b(after)g(a)h(P)l(ASTE)g -(op)q(eration)g(UNDO)g(will)h(discard)g(what)e(w)o(as)g(inserted,)i -(while)191 839 y(after)j(individuall)q(y)k(t)o(yp)q(ed)d(c)o(haracters) -g(eac)o(h)g(UNDO)g(will)i(delete)f(either)g(a)f(blo)q(c)o(k)191 -895 y(of)15 b(c)o(haracters)f(t)o(yp)q(ed)h(without)h(rep)q(ositioning) -g(the)f(caret)g(or)g(a)g(blo)q(c)o(k)g(of)g(c)o(haracters)191 -951 y(that)g(end)h(at)f(a)h(newline.)23 b(As)15 b(usual)i(there)e(will) -j(b)q(e)e(a)f(limit)i(to)e(ho)o(w)h(m)o(uc)o(h)f(undoing)191 -1008 y(can)i(b)q(e)h(done,)g(and)g(the)f(exact)g(rule)h(for)f(where)h -(that)e(limit)j(is)f(is)g(not)e(do)q(cumen)o(ted)191 -1064 y(and)f(nob)q(o)q(dy)h(should)g(ev)o(er)f(rely)h(on)f(it.)262 -1121 y(Inserting)k(c)o(haracters)f(in)o(to)g(the)h(middle)h(of)f(the)f -(text)g(lik)o(e)i(this)f(migh)o(t)g(o)o(v)o(er\014ll)191 -1177 y(the)13 b(bu\013er,)g(and)g(in)g(that)f(case)h(the)g(\014rst)f -(line)j(of)d(the)h(bu\013er)f(gets)h(discarded)h(to)e(mak)o(e)191 -1234 y(space.)29 b(There)18 b(will)i(b)q(e)e(no)g(dela)o(y)h(in)g(this) -f(ev)o(en)g(if)h(the)f(\014rst)g(line)h(forms)f(part)f(of)h(a)191 -1290 y(selection)13 b(\(the)e(starting)g(p)q(oin)o(t)h(of)f(the)g -(selection)i(will)g(mo)o(v)o(e)e(to)g(the)g(start)g(of)g(the)g(next)191 -1347 y(line,)20 b(and)f(ma)o(yb)q(e)f(the)g(selection)i(will)g(v)m -(anish)f(totally\).)28 b(There)19 b(will)h(b)q(e)f(a)f(sp)q(ecial)191 -1403 y(case)g(if)h(the)f(caret)f(is)i(in)g(the)f(\014rst)g(line)h(when) -g(the)f(user)g(tries)h(to)e(insert)i(more)e(-)h(in)191 -1460 y(this)e(case)f(the)h(insertion)h(will)g(fail.)k(If)16 -b(it)g(is)g(from)f(the)g(k)o(eyb)q(oard)h(the)f(system)g(b)q(eeps)191 -1516 y(and)j(discards)g(the)g(single)h(o\013ending)f(c)o(haracter.)26 -b(If)18 b(it)g(is)g(part)f(of)g(a)g(P)l(ASTE)h(then)191 -1572 y(c)o(haracters)f(are)g(ignored)h(up)g(to)f(the)h(next)f(newline)j -(in)e(the)g(pasted)f(text,)g(whic)o(h)i(is)191 1629 y(notionally)f -(inserted)g(and)f(then)g(the)g(resulting)h(\014rst)e(line)j(is)e(then)g -(thro)o(wn)f(a)o(w)o(a)o(y)l(.)24 b(I)191 1685 y(guess)14 -b(in)g(this)h(case)f(it)g(means)f(that)h(if)g(the)g(caret)f(is)i(righ)o -(t)e(at)g(the)h(start)f(of)g(the)h(bu\013er)191 1742 -y(all)i(the)f(inserted)h(stu\013)f(gets)g(abandoned.)262 -1798 y(Characters)i(inserted)h(at)g(\(or)f(in)i(some)e(cases)h(near\))g -(the)g(end)g(of)g(the)g(text)f(can)191 1855 y(b)q(e)i(used)h(as)e -(program)f(input.)32 b(If)19 b(the)f(caret)h(is)g(at)f(the)g(end)i(of)e -(the)h(text)f(t)o(yp)q(ed-in)191 1911 y(c)o(haarcters)g(are)g(placed)i -(in)g(a)f(t)o(yp)q(e-ahead)g(bu\013er)f(un)o(til)i(the)f(program)f -(requests)h(a)191 1968 y(line)h(of)e(input.)30 b(When)19 -b(that)f(happ)q(ens)h(c)o(haracters)f(are)g(accepted)h(from)f(the)g(t)o -(yp)q(e-)191 2024 y(ahead)f(bu\013er)h(\(and/or)e(the)h(P)l(ASTE)h -(source\))f(and)g(ec)o(ho)q(ed)h(to)f(the)g(screen)h(un)o(til)h(a)191 -2081 y(newline)j(is)f(seen.)35 b(If)20 b(the)h(user)f(t)o(yp)q(es)g(a)g -(newline)i(at)d(the)i(end)g(of)e(the)h(input)i(line)191 -2137 y(the)14 b(c)o(haracters)f(in)i(it)f(are)g(mo)o(v)o(ed)f(to)h(a)f -(program-input-bu\013er)i(whic)o(h)f(is)h(where)f(the)191 -2193 y(program)j(reads)h(them)g(from.)27 b(If)19 b(the)f(user)g(re-p)q -(ositions)h(the)f(caret)g(and)g(inserts)h(a)191 2250 -y(newline)h(in)o(to)e(the)f(middle)j(of)d(the)h(input)h(line)h(then)e -(pre-t)o(yp)q(ed)g(c)o(haracters)g(in)g(the)191 2306 -y(line)h(but)f(after)f(where)i(the)e(newline)j(w)o(as)d(get)h(pushed)h -(bac)o(k)e(in)o(to)h(the)g(t)o(yp)q(e-ahead)191 2363 -y(bu\013er)f(\(and)g(if)h(that)e(o)o(v)o(er\015o)o(ws)g(they)i(are)e -(lost)i(with)f(a)g(b)q(eep\).)27 b(The)17 b(e\013ect)g(is)h(that)191 -2419 y(the)e(program)f(gets)g(one)h(line)i(at)d(once)h(and)h(when)f -(that)f(line)j(is)e(placed)h(in)g(its)f(input)191 2476 -y(bu\013er)d(it)h(will)h(just)e(ha)o(v)o(e)g(b)q(een)i(ec)o(ho)q(ed)f -(to)f(the)h(screen.)19 b(The)14 b(program-input-bu\013er)191 -2532 y(will)22 b(ha)o(v)o(e)e(limited)i(length)f(and)g(truly)f -(ridiculously)k(long)c(input)i(will)g(b)q(e)f(silen)o(tly)191 -2589 y(truncated)e(when)g(mo)o(v)o(ed)g(in)o(to)g(it.)32 -b(I)19 b(will)i(feel)f(en)o(titled)g(to)e(reject)h(input)h(activit)o(y) -191 2645 y(that)14 b(I)i(notice)g(creating)f(an)g(input)i(line)f(that)f -(is)h(longer)f(then)h(that)e(limit.)262 2702 y(An)d(elab)q(oration)g -(on)g(this)h(explanation)g(is)g(that)e(part)g(of)h(the)g(\014nal)h -(line)h(in)f(the)f(text)927 2826 y(5)p eop -%%Page: 6 6 -6 5 bop 191 274 a Fb(bu\013er)17 b(can)g(b)q(e)h(an)f(incomplete)i -(input)g(line.)27 b(This)18 b(can)f(start)f(part)h(w)o(a)o(y)f(along)h -(the)191 330 y(line)e(\(eg)e(it)h(will)h(tend)e(to)g(start)f(after)h -(the)h(displa)o(y)o(ed)g(prompt\).)19 b(After)13 b(v)m(arious)h(CUT)191 -387 y(and)g(DELETE)f(op)q(erations)h(or)f(when)h(the)f(program)g -(requests)g(input)i(after)d(prin)o(ting)191 443 y(a)20 -b(line)h(that)f(w)o(as)f(not)h(terminated)g(it)g(can)h(start)e(w)o(ell) -i(along)f(the)g(\014nal)h(line.)36 b(An)191 500 y(incomplete)16 -b(line)f(is)g(created)f(when)g(the)h(program)d(requests)i(a)g(line)i -(of)d(input.)21 b(When)191 556 y(the)16 b(user)g(inserts)g(a)g(newline) -h(in)o(to)f(the)g(incomplete)i(line)f(it)f(b)q(ecomes)h(complete,)f -(its)191 613 y(con)o(ten)o(ts)e(are)h(mo)o(v)o(ed)g(elsewhere)h(and)g -(there)f(is)h(no)f(longer)g(an)h(incomplete)g(line.)262 -669 y(When)c(a)g(P)l(ASTE)h(op)q(eration)f(copies)h(material)g(in)o(to) -f(the)g(middle)i(of)e(a)g(do)q(cumen)o(t)191 726 y(an)o(y)i(prompts)g -(are)g(inserted.)21 b(But)14 b(if)h(then)g(some)f(of)g(that)g(line)i -(is)f(mo)o(v)o(ed)f(out)g(to)g(the)191 782 y(program-input-bu\013er)20 -b(prompts)g(are)g(discarded)h(during)g(the)g(mo)o(v)o(e.)34 -b(If)20 b(P)l(ASTE)191 839 y(puts)c(stu\013)e(righ)o(t)i(at)f(the)g -(end)i(of)e(the)g(bu\013er)h(it)g(omits)f(an)o(y)g(prompts)g(in)i(the)e -(pasted)191 895 y(stu\013.)36 b(But)21 b(the)g(start)f(of)g(eac)o(h)h -(line)h(of)f(input)h(that)e(is)h(ec)o(ho)q(ed)h(will)g(get)f(a)f(fresh) -191 951 y(prompt)15 b(displa)o(y)o(ed)h(on)f(it.)262 -1008 y(When)g(the)f(program)g(that)g(is)h(b)q(eing)h(run)f(is)g(halted) -h(w)o(aiting)f(for)f(input)h(and)g(the)191 1064 y(screen)h(has)g(b)q -(een)h(scrolled)g(suc)o(h)f(that)g(the)f(end)i(of)e(the)h(bu\013er)g -(the)g(windo)o(w)g(title)h(is)191 1121 y(c)o(hanged)e(to)g(\\w)o -(aiting)g(for)g(input".)262 1177 y(Pressing)k(an)o(y)f(k)o(ey)g(or)h(p) -q(erforming)g(a)f(P)l(ASTE)h(op)q(eration)g(alw)o(a)o(ys)f(scrolls)h -(the)191 1234 y(windo)o(w)14 b(to)f(mak)o(e)h(the)g(caret)f(visible.)22 -b(The)14 b(caret)f(can)h(only)g(ha)o(v)o(e)g(b)q(ecome)g(in)o(visible) -191 1290 y(as)j(a)g(result)g(of)g(a)g(user-initiated)i(scroll)f -(request)f(\(or)f(HOME\))h(since)h(except)g(when)191 -1347 y(suc)o(h)j(a)f(request)g(has)h(hidden)h(it)f(the)f(windo)o(w)h -(scrolls)g(automatically)g(to)f(k)o(eep)h(it)191 1403 -y(visible.)262 1460 y(Note)14 b(that)f(the)i(rules)g(giv)o(en)g(here)g -(indicate)h(that)e(c)o(haracters)f(are)h(only)h(inserted)191 -1516 y(in)o(to)i(the)f(bu\013er)h(at)f(t)o(w)o(o)f(distinct)j(places:) -23 b(where)17 b(the)g(caret)f(is)h(and)g(at)f(the)g(end)i(of)191 -1572 y(the)e(bu\013er.)24 b(So)16 b(the)g(implemen)o(tation)i(can)e -(surviv)o(e)h(if)g(it)g(just)f(cac)o(hes)g(information)191 -1629 y(ab)q(out)f(those)g(t)o(w)o(o)f(p)q(ositions.)191 -1772 y Fc(6)67 b(UNDO)21 b(|)h(a)g(summary)191 1874 y -Fb(There)14 b(is)g(an)g(undo)g(bu\013er)g(that)f(can)h(store)f(a)h -(limited)h(n)o(um)o(b)q(er)f(of)g(c)o(haracters)f(and)h(a)191 -1930 y(limited)k(n)o(um)o(b)q(er)e(of)f(transactions.)21 -b(A)16 b(transaction)f(iden)o(ti\014es)i(a)f(caret)f(p)q(osition)i(or) -191 1986 y(a)e(range)g(within)h(the)f(text,)g(an)g(p)q(ossibly)i(a)d -(sequence)j(of)e(asso)q(ciated)g(c)o(haracters:)247 2080 -y(1.)22 b(After)c(a)h(P)l(ASTE)g(that)f(happ)q(ened)i(within)g(the)f(b) -q(o)q(dy)h(of)e(the)h(text)f(and)h(did)305 2137 y(not)14 -b(terminate)i(an)f(input)h(line)h(an)e(UNDO)g(discards)h(the)f -(inserted)i(material;)247 2231 y(2.)22 b(After)15 b(a)g(P)l(ASTE)h -(that)e(put)i(one)g(or)f(more)g(newlines)i(in)o(to)e(the)h(input)g -(area)f(no)305 2287 y(UNDO)k(will)h(b)q(e)f(p)q(ossible)i(\(b)q(ecause) -e(some)g(of)f(the)h(inserted)g(text)g(has)f(b)q(een)305 -2343 y(passed)d(on)g(to)g(the)g(appication)h(co)q(de)g(to)f(pro)q -(cess\);)247 2437 y(3.)22 b(After)h(a)g(CUT)g(follo)o(w)o(ed)g(p)q -(ossibly)i(b)o(y)f(op)q(erations)f(that)g(mo)o(v)o(e)f(the)i(caret)305 -2494 y(an)d(UNDO)h(re-p)q(ositions)h(the)f(caret)f(and)h(do)q(es)g -(inserts)h(c)o(haracters)e(as)g(for)305 2550 y(a)14 b(P)l(ASTE)i(\(but) -f(that)f(paste)h(is)h(not)f(itself)h(undoable\);)247 -2644 y(4.)22 b(After)16 b(a)h(sequence)h(of)f(DELETE)g(k)o(eys)g(ha)o -(v)o(e)f(b)q(een)j(pressed)e(an)g(UNDO)h(will)305 2700 -y(re-insert)d(the)h(deleted)g(c)o(haracters.)j(It)d(can)f(re-instate)g -(deleted)i(prompts.)927 2826 y(6)p eop -%%Page: 7 7 -7 6 bop 247 274 a Fb(5.)22 b(Sequences)c(of)f(non-delete)i(c)o -(haracters)e(are)g(collected)i(up)f(to)e(the)i(p)q(oin)o(t)g(of)f(a)305 -330 y(newline.)32 b(If)19 b(the)g(newline)i(causes)e(transmission)g(of) -f(the)h(c)o(haracters)f(to)g(the)305 387 y(program)c(no)h(UNDO)h(is)g -(p)q(ossible.)22 b(Otherwise)16 b(eac)o(h)g(blo)q(c)o(k)g(up)g(to)e(a)h -(newline)305 443 y(is)g(an)g(UNDO)h(unit.)247 537 y(6.)22 -b(Previously)12 b(stored)f(UNDO)h(op)q(erations)f(can)h(b)q(ecome)g(in) -o(v)m(alid)i(if)e(they)g(o)o(v)o(erlap)305 594 y(with)k(a)f -(non-undo-able)j(op)q(eration)e(or)f(if)h(the)g(text)f(that)g(they)h -(relate)g(to)f(gets)305 650 y(abandoned)g(as)f(the)h(main)h(text)e -(bu\013er)h(rolls,)g(or)f(if)h(the)g(undo)h(stac)o(k)e(b)q(ecomes)305 -707 y(o)o(v)o(er-full.)20 b([Is)15 b(this)h(hard)f(to)g(implemen)o(t)h -(reliably?])191 850 y Fc(7)67 b(Auto-scrolling)24 b(|)f(a)f(summary)191 -951 y Fb(If)16 b(the)f(user)h(nev)o(er)g(re-p)q(ositions)g(the)g(caret) -f(it)h(will)h(remain)f(at)f(the)g(extreme)h(end)g(of)191 -1008 y(the)f(text)g(bu\013er.)20 b(And)c(scrolling)g(will)h(o)q(ccus)f -(to)e(k)o(eep)i(it)f(visible)j(b)q(ecause)247 1101 y(1.)k(Program)13 -b(output)i(will)i(o)q(ccurs)f(with)f(the)h(caret)e(at)h(the)g(end)h -(and)f(visible;)247 1195 y(2.)22 b(Input)15 b(requests)f(will)i(b)q(e)f -(handled)g(with)g(the)f(caret)g(at)f(the)i(end)g(of)e(the)i(bu\013er.) -262 1289 y(If)k(the)g(user)g(scrolls)h(the)f(windo)o(w)g(bac)o(k)g -(\(using)g(the)g(scroll)h(bars\))e(so)h(that)f(the)191 -1346 y(caret)f(b)q(ecomes)i(in)o(visible)h(then)f(scrolling)g(on)f -(output)f(will)j(cease,)e(but)g(the)g(screen)191 1402 -y(will)k(jump)f(to)f(mak)o(e)g(the)g(insertion)i(p)q(oin)o(t)f(visible) -h(if)f(a)f(k)o(ey)h(is)g(pressed)g(and)f(the)191 1458 -y(program)11 b(is)i(requesting)g(input)g(\(if)f(the)h(program)e(is)i -(NOT)f(requesting)h(input)g(y)o(et)f(the)191 1515 y(k)o(ey-strok)o(e)i -(just)h(go)q(es)g(in)h(a)f(t)o(yp)q(e-ahead)h(bu\013er)f(and)g(nothing) -h(sp)q(ecial)h(happ)q(ens\).)262 1571 y(If)h(the)g(user)g(has)g(mo)o(v) -o(ed)g(the)g(caret)f(to)h(other)f(than)h(at)g(the)g(end)h(of)e(the)h -(bu\013er)191 1628 y(then)g(the)h(windo)o(w)f(is)h(nev)o(er)f(scrolled) -i(b)o(y)e(cwin,)h(but)f(in)h(cases)g(when)f(it)h(migh)o(t)f(b)q(e)191 -1684 y(in)o(teresting)h(to)g(scroll)g(it)g(the)g(title)h(text)e(of)g -(the)h(windo)o(w)g(is)g(up)q(dated)h(to)e(giv)o(e)h(the)191 -1741 y(user)c(a)g(clue)i(to)d(that)h(fact.)191 1884 y -Fc(8)67 b(Prin)n(t)24 b(and)f(other)f(op)r(erations)191 -1985 y Fb(The)d(regular)g(PRINT)h(item)f(on)g(the)g(men)o(u)g(should)h -(just)e(prin)o(t)h(the)g(whole)h(of)e(the)191 2042 y(con)o(ten)o(ts)h -(of)g(the)h(text)f(bu\013er.)33 b(It)20 b(will)h(apply)g(a)e(\014xed)i -(with)f(limit)h(and)f(truncate)191 2098 y(an)o(y)d(material)h(that)f -(spills)j(o\013)d(to)g(the)h(righ)o(t.)27 b(It)18 b(will)i(pac)o(k)d -(lines)j(on)o(to)c(pages)i(in)h(a)191 2155 y(simple-minded)k(manner.)34 -b(PRINT-SELECTION)22 b(b)q(eha)o(v)o(es)e(the)g(same)f(w)o(a)o(y)g(but) -191 2211 y(only)i(pro)q(cesses)f(text)g(within)h(the)f(selected)i -(region)e(of)g(text.)34 b(The)21 b(READ)f(men)o(u)191 -2268 y(op)q(eration)15 b(will)i(insert)f(text)f(of)f(the)i(form)286 -2362 y Fa(IN)24 b("";)191 2455 y Fb(in)o(to)15 -b(the)g(t)o(yp)q(e-ahead)h(bu\013er.)191 2599 y Fc(9)67 -b(Implemen)n(tation)24 b(status)214 2700 y Fb(User-con)o(trolled)16 -b(scrolling:)21 b(OK)927 2826 y(7)p eop -%%Page: 8 8 -8 7 bop 214 274 a Fb(Selection)17 b(using)f(the)f(mouse:)20 -b(OK)214 368 y(CUT:)15 b(OK,)i(although)f(to)q(o)f(m)o(uc)o(h)i(ma)o(y) -e(b)q(e)i(re-pain)o(ted)g(after)e(a)h(CUT)g(that)f(spans)305 -424 y(sev)o(eral)g(lines)i(of)e(text)214 518 y(Program)k(output:)31 -b(OK,)21 b(but)g(optimisation)g(and)g(\014nd)h(con)o(trol)e(o)o(v)o(er) -g(when)h(the)305 575 y(screen)15 b(gets)g(re-pain)o(ted)h(will)h(need)f -(further)f(w)o(ork,)f(I)h(exp)q(ect.)214 668 y(Keyb)q(oard)k(input:)29 -b(Only)20 b(handled)g(when)g(the)f(caret)g(is)g(at)f(the)h(end)h(of)f -(the)g(text)305 725 y(bu\013er.)29 b(Ev)o(en)18 b(in)h(that)f(case)g -(DELETE)h(stops)e(deleting)j(at)e(the)g(end)h(of)f(the)305 -781 y(\014nal)f(line)h(rather)d(than)h(deleteing)j(bac)o(k)d(further,)g -(and)g(deletion)i(of)e(prompts)305 838 y(as)h(single)h(items)g(is)g -(not)f(implemen)o(ted.)29 b(INsertion)18 b(in)o(to)f(the)h(middle)h(of) -e(the)305 894 y(bu\013er)e(is)g(not)g(\014nished.)214 -988 y(P)o(aste:)21 b(Not)16 b(implemen)o(ted)i(at)d(all,)i(but)g(exp)q -(ected)g(to)f(b)q(e)h(a)f(fairly)h(easy)f(follo)o(w-on)305 -1044 y(from)e(k)o(eyb)q(oard)h(input.)214 1138 y(UNDO:)22 -b(Nothing)g(done)g(at)g(all)h(y)o(et,)g(and)f(will)i(need)f(re-w)o(ork) -e(of)h(other)f(bu\013er)305 1195 y(up)q(date)15 b(op)q(erations)h(to)e -(preserv)o(e)i(information.)214 1289 y(Prin)o(t:)30 b(Nothing)21 -b(done)g(y)o(et,)g(and)f(the)h(issue)g(of)f(line)i(width)f(of)f(the)h -(pap)q(er)g(used)305 1345 y(relativ)o(e)15 b(to)g(the)g(curren)o(t)g -(windo)o(w)h(size)g(is)f(unclear.)214 1439 y(Other)g(op)q(erations:)20 -b(READ)15 b(is)h(not)f(done)h(y)o(et,)e(but)h(is)h(probably)g(easy)l(.) -927 2826 y(8)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF DELETED r36/cslbase/toacn.car Index: r36/cslbase/toacn.car ================================================================== --- r36/cslbase/toacn.car +++ /dev/null cannot compute difference between binary files DELETED r36/cslsrc/helpdata Index: r36/cslsrc/helpdata ================================================================== --- r36/cslsrc/helpdata +++ /dev/null @@ -1,11555 +0,0 @@ -\item[Contents] -Help is available on the following - -Algebra Arithmetic Booleans -Commands Declarations Functions -InputOutput Library Matrix -Operators Specfns Switches -Syntax Variables - -There are help windows for each of these topics - -To select a help page double click on the word in the help window or -use the Help Selection option on the menu. A backspace/delete will -return to this Index window. - -An alphabetical list of all topics follows - -. -# -ABS ACOS ACOSH -ACOT ACOTH ACSC -ACSCH ADJPREC ALGEBRAIC -Algebraic mode ALGINT ALGINT(Package) -ALLBRANCH ALLFAC ANTISYMMETRIC -APPEND ARBCONST ARGLENGTH -ARNUM ARRAY ASEC -ASECH ASIN ASINH -ATAN ATAN2 ATANH -AVECTOR -BALANCED_MOD BEGIN...END BERNOULLI -BESSELI BESSELJ BESSELK -BESSELY BETA BFSPACE -BINOMIAL BOUNDS BYE -CARD_NO CEILING CENTERED_MOD -CHEBYSHEV_FIT CHEBYSHEVT CHEBYSHEVU -CLEAR CLEARRULES COEFF -COEFFICIENT COEFFN COFACTOR -COLLECT COMBINEEXPT COMBINELOGS -COMMENT COMP COMPACT -Compiler COMPLEX CONJ -CONT COS COSH -COT COTH CRAMER -CREF CSC CSCH -DECOMPOSE DEFINE DEFN -DEFPOLY DEG DEMO -DEN DEPEND DET -DF DFPRINT DILOG -DISPLAY DIV DOT -E ECHO ED -EDITDEF END EPS -Equation ERF ERRCONT -EULER EULERP Euler Numbers -EVAL_MODE EVALLHSEQP EVEN -EVENP EXCALC EXP -EXPAND_CASES EXPANDLOGS EXPINT -exterior calc exterior df EZGCD -FACTOR FACTORIAL Factorization -FACTORIZE FAILHARD FIRST -FIRSTROOT FIX FIXP -FLOOR FOR FORALL -FOREACH FORT FORT_WIDTH -FORTRAN FREEOF FULLPREC -FULLROOTS -G GAMMA Gamma Function -GC GCD GEGENBAUERP -GENTRAN GosperAlg -Hankel Functions HANKEL1 HANKEL2 -HERMITEP HIGH_POW HORNER -HYPOT -I Identifier IF -IFACTOR IMPART IN -Indefinite integration INDEX INFINITY -INFIX INPUT INT -INTEGER INTERPOL INTSTR -ISOLATER -JACOBIP -KERNEL KORDER Kummer Functions -KUMMERM KUMMERU -LAGUERREP LCM LCOF -LEGENDREP LENGTH LESSSPACE -LET LHS LIMIT -LIMITEDFACTORS LINEAR LINELENGTH -LISP LIST List(operation) -LISTARGP LISTARGS LN -LOAD_PACKAGE LOG LOGB -Lommel Functions LOMMEL1 LOMMEL2 -LOW_POW LTERM -MAINVAR MASS MAT -MATCH MATEIGEN MATRIX -MAX MCD MIN -MKID MODULAR MSG -MSHELL MULTIPLICITIES -NAT NERO NEXTPRIME -NOARG NODEPEND NOLNR -NONCOM NONZERO NOSPLIT -NOSPUR NOXPND NULLSPACE -NUM NUMVAL NUMBERP -NUM_INT NUM_MIN NUM_ODESOLVE -NUM_SOLVE -ODD ODESOLVE OFF -ON ONE_OF OPERATOR -ORDER ORDP ORTHOVEC -OUT OUTPUT OVERVIEW -PART PAUSE PERIOD -PF PI POCHHAMMER -POLYGAMMA PRECEDENCE PRECISE -PRECISION PRET PRI -PRIMEP PRINT_PRECISION PROCEDURE -PROD PRODUCT PSI -QUIT -RANK RAT RATARG -RATIONAL RATIONALIZE RATPRI -REAL REDUCT REMAINDER -REMFAC REMIND REPART -REPEAT REST RESULTANT -RETRY RETURN REVERSE -REVPRI RHS RLISP88 -RLROOTNO ROOT_OF ROOT_MULTIPLICITES -ROUND ROUNDALL ROUNDBF -ROUNDED Rule_lists -SAVEAS SAVESTRUCTR SCALAR -SCIENTIFIC_NOTATION SCOPE SEC -SECH SECOND SET -SETMOD SHARE SHOWRULES -SHOWTIME SHUT SIGN -SIN SINH SOLVE -SOLVESINGULAR SPDE SPLIT_FIELD -SPUR SQRT STIRLING1 -STIRLING2 String STRUCTR -STRUVEH STRUVEL SUB -SUM SYMBOLIC SYMMETRIC -T TAN TANH -TAYLOR TAYLORAUTOCOMBINE TAYLORAUTOEXPAND -TAYLORCOMBINE TAYLORKEEPORIGINAL TAYLORORIGINAL -TAYLORPRINTORDER TAYLORPRINTTERMS TAYLORREVERT -TAYLORSERIESP TAYLORTEMPLATE TAYLORTOSTANDARD -THIRD TIME TP -TPS TRACE TRALLFAC -TRFAC TRIGFORM TRINT -TRNONLNR -VARNAME VECDIM VECTOR -WEIGHT WHEN WHERE -WHILE WHITTAKERW WRITE -WS WTLEVEL -XPND -ZETA - -\endsection -\item[Algebra] -Algebra Index - -Algebraic operators about which there is help are: - -APPEND ARBINT ARBCOMPLEX -ARGLENGTH COEFF COEFFN -CONJ DECOMPOSE DEG -DEN DF EXPAND_CASES -EXPREAD FACTORIZE HYPOT -IMPART INT INTERPOL -LCOF LENGTH LHS -LTERM MAINVAR NPRIMITIVE -NUM PART PF -REDUCT REPART RESULTANT -RHS ROOT_OF SHOWRULES -SOLVE STRUCTR SUB -WS - -\endsection -\item[Arithmetic] -Arithmetic Index - -This section considers operations defined in REDUCE that concern numbers, -or operators that can operate on numbers in addition, in most cases, to -more general expressions. - -Arithmetic operations about which there is help are: - -ABS ADJPREC CEILING -DILOG FACTORIAL FIX -FIXP FLOOR GCD -LN LOG LOGB -MAX MIN NEXTPRIME -REMAINDER ROUND SIGN -SQRT - -\endsection -\item[Booleans] -Booleans Index - -Boolean operations about which there is help are: - -EVENP FREEOF NUMBERP -ORDP PRIMEP - -\endsection -\item[Commands] -Commands Index - -Commands about which there is help are: - -BYE CONT DISPLAY -LOAD_PACKAGE PAUSE QUIT -RETRY SAVEAS SHOWTIME -WRITE - -\endsection -\item[Concepts] -Concepts Index - -There is help on the following basic concepts: - -Identifier Kernel String - -Also there is a simple editor, described by - -ED EDITDEF - -\endsection -\item[Declarations] -Declarations Index - -Declarations about which there is help are: - -ALGEBRAIC ANTISYMMETRIC ARRAY -CLEAR CLEARRULES DEFINE -DEPEND EVEN FACTOR -FORALL INFIX INTEGER -KORDER LET LINEAR -LINELENGTH LISP LISTARGP -MATCH NODEPEND NONCOM -NONZERO ODD OFF -ON OPERATOR ORDER -PRECEDENCE PRECISION PRINT_PRECISION -REAL REMFAC SCALAR -SCIENTIFIC_NOTATION SHARE SYMBOLIC -SYMMETRIC VARNAME WEIGHT -WHILE WTLEVEL - -\endsection -\item[Functions] -Functions Index - -Elementary functions about which there is help are: - -ACOS ACOSH ACOT -ACOTH ACSC ACSCH -ASEC ASECH ASIN -ASINH ATAN ATANH -ATAN2 COS COSH -COT COTH CSC -CSCH ERF EXP -EXPINT SEC SECH -SIN SINH TAN -TANH - -\endsection -\item[HighEnergy] -High Energy Physics Index - -The High-energy Physics package is historic for REDUCE, since REDUCE -originated as a program to aid in computations with Dirac expressions. -The commutation algebra of the gamma matrices is independent of their -representation, and is a natural subject for symbolic mathematics. -Dirac theory is applied to beta decay and the computation of -cross-sections and scattering. The high-energy physics operators are -available in the REDUCE main program, rather than as a module which -must be loaded. - -Arithmetic operations about which there is help are: - -DOT EPS G -INDEX MASS MSHELL -NOSPUR REMIND SPUR -VECDIM VECTOR - -\endsection -\item[InputOutput] -Input and Output Index - -Input and Output actions about which there is help are: - -IN INPUT OUT -SHUT - -\endsection -\item[Library] -Library Index - -The external modules that are included in your REDUCE system are the -first members of the REDUCE User's Library. They have been -contributed by REDUCE users from various fields for the convenience -and pleasure of the REDUCE user community. Future releases of REDUCE -will include other packages as they are developed. The packages in -the User's Library are unsupported; any questions or problems should -be directed to their authors. - -Each package comes with its own documentation, which you can find, -along with the source code, in the subdirectories lib of you REDUCE -directory (with suffix .txt, .tex and .red). The LOAD_PACKAGE command -is used to load the files you wish into your system. There will be a -short delay while the module is loaded. A module cannot be unloaded. -Once it is in your system, it stays there until you end the session. -Each package also has a test file, which you will find under its name -in the lib directory with suffix .tst. - -The following paragraphs, provided by the authors of each module, -briefly introduce packages which have not yet been described in more -detail in other sections of this document. Please refer to the -documentation for each module for detailed information on its use. -Each of them have their own switches, commands, and operators, and -some redefine special characters to aid in their notation. - -Libraries about which there is help are: - -ALGINT ARNUM AVECTOR -COMPACT EXCALC GENTRAN -NUMERIC ODESOLVE ORTHOVEC -SCOPE SPDE TPS - -\endsection -\item[Matrix] -Matrix Index - -Matrix operations about which there is help are: - -COFACTOR DET MAT -MATEIGEN MATRIX NULLSPACE -RANK TP TRACE - -\endsection -\item[Operators] -Operators Index - -Operations about which there is help are: - -LIMIT SUM PROD - -\endsection -\item[Specfns] -Special Functions - -The REDUCE Special Function Package supplies extended algebraic and -numeric support for a wide class of objects. This package is released -together with REDUCE 3.5 (October 1993) for the first time, therefore -it is far from being complete. - -The functions included in this package are in most cases (unless -otherwise stated) defined and named like in the book by Abramowitz and -Stegun: Handbook of Mathematical Functions, Dover Publications. - -The aim is to collect as much information on the special functions and -simplification capabilities as possible, i.e. algebraic -simplifications and numeric (rounded mode) code, limits of the -functions together with the definitions of the functions, which are in -most cases a power series, a (definite) integral and/or a differential -equation. - -What can be found: - A variety of Bessel functions, special polynomials, the Gamma -function, the Zeta function and integral functions. - -What is missing: - Airy functions, Mathieu functions, LerchPhi, etc.. The information -about the special functions which solve certain differential equation -is very limited. In several cases numerical approximation is -restricted to real arguments or is missing completely. - -The implementation of this package uses REDUCE rule sets to a large -extent, which guarantees a high 'readability' of the functions -definitions in the source file directory. It makes extensions to the -special functions code easy in most cases too. To look at these rules -it may be convenient to use the showrules operator e.g. - - showrules Besseli; - -Note: The special function package has to be loaded explicitly by calling - load_package specfn; - -Help is available on: - -BERNOUILLI BESSELI BESSELJ -BESSELK BESSELY BETA -CHEBYSHEVT CHEBYSHEVU EULER -EULERP GAMMA GEGENBAUERP -HANKEL1 HANKEL2 HERMITEP -JACOBIP KUMMERM KUMMERU -LAGUERREP LEGENDREP LOMMEL1 -LOMMEL2 POCHHAMMER POLYGAMMA -PSI STIRLING1 STIRLING2 -STRUVEH STRUVEL WHITTAKERW -ZETA - -\endsection -\item[Switches] -Switches Index - -Switches are set on or off using the commands ON or OFF, respectively. -The default setting of the switches described in this section is -OFF unless stated otherwise. - -Switches about which there is help are: - -ALGINT ALLBRANCH ALLFAC -BALANCED_MOD BFSPACE COMBINEEXPT -COMBINELOGS COMP COMPLEX -CREF CRAMER DEFN -DEMO DFPRINT DIV -ECHO ERRCONT EVALLHSEQP -EXP EXPANDLOGS EZGCD -FACTOR FAILHARD FORT -FULLPREC FULLROOTS GC -GCD HORNER IFACTOR -INT INTSTR LCM -LESSSPACE LIMITEDFACTORS LIST -LISTARGS MCD MODULAR -MSG MULTIPLICITIES NAT -NERO NOARG NOLNR -NOSPLIT NUMVAL OUTPUT -OVERVIEW PERIOD PRECISE -PRET PRI RAT -RATARG RATIONAL RATIONALIZE -RATPRI REVPRI RLISP88 -ROUNDALL ROUNDBF ROUNDED -SAVESTRUCTR SOLVESINGULAR TIME -TRALLFAC TRFAC TRIGFORM -TRINT TRNONLNR - -\endsection -\item[Syntax] -Syntax Index - -Syntax about which there is help are: - -BEGIN...END COMMENT CONS -END EQUATION FIRST -FOR FOREACH GOTO -IF List PROCEDURE -REPEAT REST RETURN -REVERSE RuleSet SECOND -SET THIRD WHEN - -\endsection -\item[Variables] -Variables Index - -Variables about which there is help are: - -CARD_NO E EVAL_MODE -FORT_WIDTH HIGH_POW I -INFINITY LOW_POW NIL -PI ROOT_MULTIPLICITIES T - -\endsection -\xitem[><] ->< 3-D vector and diphthong (page 356) - -\endsection -\xitem[*] -* - 3-D vector, 356 - algebraic numbers, 224 - power series, 422 - vector, 232 - -\endsection -\xitem[**] -** - power series, 422 - -\endsection -\xitem[+] -+ - 3-D vector, 356 - algebraic numbers, 223 - power series, 422 - vector, 232 - -\endsection -\xitem[-] -- - 3-D vector, 356 - power series, 422 - vector, 232 - -\endsection -\item[.] -. (CONS) (page 50) - -The CONS operator adds a new element to the beginning of a LIST. Its -operation is identical to the symbol DOT (dot). It can be used -infix or prefix. - - CONS(item,list) or item CONS list - -item can be any REDUCE scalar expression, including a list; list -must be a list. - -Examples: - -liss := cons(a,{b}); {A,B} - -liss := c cons liss; {C,A,B} - -newliss := for each y in liss collect cons(y,list x); - NEWLISS := {{C,X},{A,X},{B,X}} - -for each y in newliss sum (first y)*(second y); - X*(A + B + C) - -If you want to use CONS to put together two elements into a new list, -you must make the second one into a list with curly brackets or the -LIST command. You can also start with an empty list created by {}. - -The CONS operator is right associative: A CONS B CONS C is valid if C -is a list; B need not be a list. The list produced is {A,B,C}. - -\endsection -\xitem[/] -/ - 3-D vector, 356 - algebraic numbers, 224 - power series, 422 - vector, 232 - -\endsection -\xitem[@] -@ - partial differentiation, 271 - tangent vector, 271 - -\endsection -\xitem[@ operator] -@ operator, 251 - -\endsection -\item[#] -# (pages 256, 271) - -# is the syntax for the Hodge-* operator in the EXCALC package. - -\endsection -\xitem[^] -^ - 3-D vector, 356 - exterior multiplication, 250, 271 - -\endsection -\item[ABS] -ABS (page 72) -The ABS operator returns the absolute value of its argument. - -ABS(expression) - -expression can be any REDUCE scalar expression. - -Examples: -abs(-a); ABS(A) -abs(-5); 5 -a := -10; A := -10 -abs(a); 10 -abs(-a); 10 - -If the argument has had no numeric value assigned to it, such as an -identifier or polynomial, ABS returns an expression involving -ABS of its argument, doing as much simplification of the argument -as it can, such as dropping any preceding minus sign. - -\endsection -\item[ACOS] -ACOS (pages 76, 78) - -The ACOS operator returns the arccosine of its argument. - - ACOS(expression) or ACOS simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acos(ab); ACOS(AB) -acos 15; ACOS(15) - 2 2 - SQRT( - X *Y + 1)*Y -df(acos(x*y),x); ---------------------- - 2 2 - X *Y - 1 -on rounded; -res := acos(sqrt(2)/2); RES := 0.785398163397 -res-pi/4; 0 - -An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value less than or equal to 1. - -\endsection -\item[ACOSH] -ACOSH (pages 76, 78) - -ACOSH represents the hyperbolic arccosine of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -ACOSH is known to the system. Numerical values may also be found by -turning on the switch ROUNDED. - - ACOSH(expression) or ACOSH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix or -vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -acosh a; ACOSH(A) -acosh(0); ACOSH(0) - 4 - 2*SQRT(A - 1)*A -df(acosh(a**2),a); ------------------ - 4 - A - 1 - -int(acosh(x),x); INT(ACOSH(X),X) - -You may attach functionality by defining ACOSH to be the inverse of -COSH. This is done by the commands - put('cosh,'inverse,'acosh); - put('acosh,'inverse,'cosh); -You can write a procedure to attach integrals or other functions to -ACOSH. You may wish to add a check to see that its argument is -properly restricted. - -\endsection -\item[ACOT] -ACOT (pages 76, 78) - -ACOT represents the arccotangent of its argument. It takes an -arbitrary scalar expression as its argument. The derivative of ACOT is -known to the system. Numerical values may also be found by turning on -the switch ROUNDED. - - ACOT(expression) or ACOT simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. You can add functionality -yourself with LET and procedures. - -Examples: -acot a; ACOT(A) - PI -acot(0); ---- - 2 - - - 2*A -df(acot(a**2),a); -------- - 4 - A + 1 - - 2 - 2*ACOT(X)*X + LOG(X + 1) -int(acot(x),x); --------------------------- - 2 -on rounded; -acot(1); 0.785398163397 - -\endsection -\item[ACOTH] -ACOTH (pages 76, 78) - -ACOTH represents the inverse hyperbolic cotangent of its argument. It -takes an arbitrary scalar expression as its argument. The derivative -of ACOTH is known to the system. Numerical values may also be found -by turning on the switch ROUNDED. - - ACOTH(expression) or ACOTH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. You can add functionality yourself -with LET and procedures. - -Examples: -acoth(0); 0 - - - 2*X -df(acoth(x^2),x); -------- - 4 - X - 1 - -int(acoth(x),x); ACOTH(X)*X + ACOTH(X) + LOG(X - 1) - -\endsection -\item[ACSC] -ACSC (pages 76, 78) - -The ACSC operator returns the arccosecant of its argument. - - ACSC(expression) or ACSC simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acsc(ab); ACSC(AB) -acsc 15; ACSC(15) - 2 2 - - SQRT(X *Y - 1) -df(acsc(x*y),x); -------------------- - 2 2 - X*(X *Y - 1) -on rounded; -res := acsc(2/sqrt(3)); RES := 1.0471975512 -res-pi/3; 0 - -An explicit numeric value is not given unless the switch ROUNDED is on -and the argument has an absolute numeric value less than or equal to -1. - -\endsection -\item[ACSCH] -ACSCH (pages 76, 78) - -The ACSCH operator returns the hyperbolic arccosecant of its argument. - - ACSCH(expression) or ACSCH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -acsch(ab); ACSCH(AB) -acsch 15; ACSCH(15) - 2 2 - - SQRT(X *Y + 1) -df(acsch(x*y),x); -------------------- - 2 2 - X*(X *Y + 1) -on rounded; -res := acsch(3); RES := 0.327450150237 - -An explicit numeric value is not given unless the switch ROUNDED is on -and the argument has an absolute numeric value less than or equal to -1. - -\endsection -\item[ADJPREC] -ADJPREC (page 133) - -When a real number is input, it is normally truncated to the PRECISION -in effect at the time the number is read. If it is desired to keep -the full precision of all numbers input, the switch ADJPREC (for -adjust precision) can be turned on. While on, ADJPREC will -automatically increase the precision, when necessary, to match that of -any integer or real input, and a message printed to inform the user of -the precision increase. - -Examples: -on rounded; -1.23456789012345; 1.23456789012 -on adjprec; -1.23456789012345; *** precision increased to 15 - 1.23456789012345 - -\endsection -\item[ALGEBRAIC] -ALGEBRAIC (page 191) - -The ALGEBRAIC command changes REDUCE's mode of operation to -algebraic. When ALGEBRAIC is used as an operator (with an argument -inside parentheses) that argument is evaluated in algebraic mode, but -REDUCE's mode is not changed. - -Examples: -algebraic; -symbolic; NIL - 2 -algebraic(x**2); X -x**2; ***** The symbol X has no value. - -REDUCE's symbolic mode does not know about most algebraic commands. -Error messages in this mode may also depend on the particular Lisp -used for the REDUCE implementation. - -\endsection -\item[Algebraic mode] -Algebraic mode (pages 191, 197, 198) - -Most REDUCE calculatuons take place in Algebraic mode. The -alternative is Symbolic mode, which is a syntactic form of LISP. See -the commands ALGEBRAIC and SYMBOLIC for mor details. - -\endsection -\item[ALGINT] -ALGINT - -When the ALGINT switch is on, the algebraic integration module (which -must be loaded from the REDUCE library) is used for integration. - -Loading ALGINT from the library automatically turns on the -ALGINT switch. An error message will be given if ALGINT is -turned on when the ALGINT has not been loaded from the library. - -\endsection -\item[ALGINT(Package)] -ALGINT(Package) (page 178) - -Author: James H. Davenport - -The ALGINT package provides indefinite integration of square roots. -This package, which is an extension of the basic integration package -distributed with REDUCE, will analytically integrate a wide range of -expressions involving square roots. The ALGINT switch provides for -the use of the facilities given by the module, and is automatically -turned on when the package is loaded. If you want to return to the -standard integration algorithms, turn ALGINT off. An error message is -given if you try to turn the ALGINT switch on when its module is not -loaded. - -\endsection -\item[ALLBRANCH] -ALLBRANCH (page 89) - -When ALLBRANCH is on, the operator SOLVE selects all branches of -solutions. When ALLBRANCH is off, it selects only the principal -branches. Default is ON. - -Examples: - -solve(log(sin(x+3)),x); {X=2*ARBINT(1)*PI - ASIN(1) - 3, - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3} -off allbranch; -solve(log(sin(x+3)),x); {X=ASIN(1) - 3} - -ARBINT(1) indicates an arbitrary integer, which is given a unique -identifier by REDUCE, showing that there are infinitely many solutions -of this type. When ALLBRANCH is off, the single canonical solution is -given. - -\endsection -\item[ALLFAC] -ALLFAC (pages 102, 104) - -The ALLFAC switch, when on, causes REDUCE to factor out automatically -common products in the output of expressions. Default is ON. - -Examples: 3 -x + x*y**3 + x**2*cos(z); X*(COS(Z)*X + Y + 1) -off allfac; - 2 3 -x + x*y**3 + x**2*cos(z); COS(Z)*X + X*Y + X - -The ALLFAC switch has no effect when PRI is off. Although the switch -setting stays as it was, printing behaviour is as if it were off. - -\endsection -\xitem[ansatz of symmetry generator] -ansatz of symmetry generator, 386 - -\endsection -\item[ANTISYMMETRIC] -ANTISYMMETRIC (page 93) - -When an operator is declared ANTISYMMETRIC, its arguments are -reordered to conform to the internal ordering of the system. If an -odd number of argument interchanges are required to do this ordering, -the sign of the expression is changed. - - ANTISYMMETRIC identifier {,identifier} - -identifier is an identifier that has been declared as an operator. - -Examples: -operator m,n; -antisymmetric m,n; -m(x,n(1,2)); - M( - N(2,1),X) -operator p; -antisymmetric p; -p(a,b,c); P(A,B,C) -p(b,a,c); - P(A,B,C) - -If identifier has not been declared an operator, the flag -ANTISYMMETRIC is still attached to it. When identifier is -subsequently used as an operator, the message - Declare identifier operator? (Y or N) -is printed. If the user replies Y, the antisymmetric property of the -operator is used. - -Note in the first example, identifiers are customarily ordered -alphabetically, while numbers are ordered from largest to smallest. -The operators may have any desired number of arguments (less than 128). - -\endsection -\item[APPEND] -APPEND (page 50) - -The APPEND operator constructs a new list from the elements of its two -arguments (which must be lists). - - APPEND(lst,lst) - -lst must be a list, though it may be the empty list ({}). Any -arguments beyond the first two are ignored. - -Examples: -alist := {1,2,{a,b}}; ALIST := {1,2,{A,B}} -blist := {3,4,5,sin(y)}; BLIST := {3,4,5,SIN(Y)} -append(alist,blist); {1,2,{A,B},3,4,5,SIN(Y)} -append(alist,{}); {1,2,{A,B}} -append(list z,blist); {Z,3,4,5,SIN(Y)} - -Comment The new list consists of the elements of the second list -appended to the elements of the first list. You can append new -elements to the beginning or end of an existing list by putting the -new element in a list (use curly braces or the operator list). This -is particularly helpful in an iterative loop. - -\endsection -\item[ARBCONST] -ARBCONST operator (page 350) - -See the ODESOLVE package - -\endsection -\xitem[arbitrary ordering] -arbitrary ordering, 316 - -\endsection -\item[ARGLENGTH] -ARGLENGTH (page 117) -The operator ARGLENGTH returns the number of arguments of the top-level -operator in its argument. - - ARGLENGTH(expression) - -expression can be any valid REDUCE algebraic expression. - -Examples: -arglength(a + b + c + d); 4 -arglength(a/b/c); 2 -arglength(log(sin(df(r**3*x,x)))); 1 - -In the first example, + is an n-ary operator, so the number of terms -is returned. In the second example, since / is a binary operator, the -argument is actually (a/b)/c, so there are two terms at the top level. -In the last example, no matter how deeply the operators are nested, -there is still only one argument at the top level. - -\endsection -\item[ARNUM] -ARNUM (pages 179, 223) -Author: Eberhard Schruefer - -This package provides facilities for handling algebraic numbers as polynomial -coefficients in REDUCE calculations. It includes facilities for introducing -indeterminates to represent algebraic numbers, for calculating splitting -fields, and for factoring and finding greatest common divisors in such -domains. - -\endsection -\item[ARRAY] -ARRAY (page 67) - -The ARRAY declaration declares a list of identifiers to be of type -ARRAY, and sets all their entries to 0. - - ARRAY identifier(dimensions){,identifier(dimensions)} - -identifier may be any valid REDUCE identifier. If the identifier -was already an array, a warning message is given that the array has been -redefined. dimensions are of form - integer{,integer}. - -array a(2,5),b(3,3,3),c(200); -array a(3,5); *** ARRAY A REDEFINED -a(3,4); 0 -length a; {4,6} - -Arrays are always global, even if defined inside a procedure or block -statement. Their status as an array remains until the variable is -reset by CLEAR. Arrays may not have the same names as operators, -procedures or scalar variables. - -Array elements are referred to by the usual notation: A(I,J) returns -the jth element of the ith row. The ASSIGNment operator := is used to -put values into the array. Arrays as a whole cannot be subject to -assignment by LET or := ; the assignment operator := is only valid for -individual elements. - -When you use LET on an array element, the contents of that element -become the argument to LET. Thus, if the element contains a number or -some other expression that is not a valid argument for this command, -you get an error message. If the element contains an identifier, the -identifier has the substitution rule attached to it globally. The -same behaviour occurs with CLEAR. If the array element contains an -identifier or simple_expression, it is cleared. Do NOT use CLEAR to -try to set an array element to 0. Because of the side effects of -either LET or CLEAR, it is unwise to apply either of these to array -elements. - -Array indices always start with 0, so that the declaration ARRAY A(5) -sets aside 6 units of space, indexed from 0 through 5, and initialises -them to 0. The LENGTH command returns a list of the true number of -elements in each dimension. - -\endsection -\item[ASEC] -ASEC (pages 76, 78) - -The ASEC operator returns the arccosecant of its argument. - - ASEC(expression) or ASEC simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asec(ab); ASEC(AB) -asec 15; ASEC(15) - 2 2 - SQRT(X *Y - 1) -df(asec(x*y),x); ----------------- - 2 2 - X*(X *Y - 1) -on rounded; -res := asec sqrt(2); RES := 0.785398163397 -res-pi/4; 0 - -An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value greater or equal to 1. - -\endsection -\item[ASECH] -ASECH (pages 76, 78) - -ASECH represents the hyperbolic arccosecant of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -ASECH is known to the system. Numerical values may also be found by -turning on the switch ROUNDED. - - ASECH(expression) or ASECH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asech a; ASECH(A) -asech(1); 0 - 4 - 2*SQRT(A - 1)*A -df(acosh(a**2),a); ------------------ - 4 - A - 1 -int(asech(x),x); INT(ASECH(X),X) - -You may attach functionality by defining ASECH to be the inverse of -SECH. This is done by the commands - put('sech,'inverse,'asech); - put('asech,'inverse,'sech); -You can write a procedure to attach integrals or other functions to -ASECH. You may wish to add a check to see that its argument is -properly restricted. - -\endsection -\item[ASIN] -ASIN (pages 76, 78) - -The ASIN operator returns the arcsine of its argument. - - ASIN(expression) or ASIN simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asin(givenangle); ASIN(GIVENANGLE) -asin(5); ASIN(5) - 2 - - 2*SQRT( - 4*X + 1) -df(asin(2*x),x); ------------------------ - 2 - 4*X - 1 -on rounded; -asin .5; 0.523598775598 -asin(sqrt(3)); ASIN(1.73205080757) -asin(sqrt(3)/2); 1.04719755120 - -A numeric value is not returned by ASIN unless the switch -ROUNDED is on and its argument has an absolute value less than or -equal to 1. - -\endsection -\item[ASINH] -ASINH (pages 76, 78) - -The ASINH operator returns the hyperbolic arcsine of its argument. -The derivative of ASINH and some simple transformations are known -to the system. - - ASINH(expression) or ASINH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -asinh d; ASINH(D) -asinh(1); ASINH(1) - 2 - 2*SQRT(4*X + 1) -df(asinh(2*x),x); ------------------ - 2 - 4*X + 1 - -You may attach further functionality by defining ASINH to be the -inverse of SINH. This is done by the commands - put('sinh,'inverse,'asinh); - put('asinh,'inverse,'sinh); - -A numeric value is not returned by ASINH unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\xitem[Assignment] -Assignment, 54, 55, 57, 63, 195, 198 - -\endsection -\item[Asymptotic command] -Asymptotic command (pages 139, 151) - -See WEIGHT and WTLEVEL - -\endsection -\item[ATAN] -ATAN (pages 76, 78, 81) - -The ATAN operator returns the arctangent of its argument. - - ATAN(expression) or ATAN simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -atan(middle); ATAN(MIDDLE) -on rounded; -atan 45; 1.54857776147 -off rounded; - 2 - 2*ATAN(X)*X - LOG(X + 1) -int(atan(x),x); --------------------------- - 2 - 2*Y -df(atan(y**2),y); -------- - 4 - Y + 1 - -A numeric value is not returned by ATAN unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\item[ATAN2] -ATAN2 (pages 76, 78) - - ATAN2(expression,expression) - -expression is any valid scalar REDUCE expression. In ROUNDED mode, if -a numerical value exists, ATAN2 returns the principal value of the arc -tangent of the second argument divided by the first in the range -[-pi,+pi] radians, using the signs of both arguments to determine the -quadrant of the return value. An expression in terms of ATAN2 is -returned in other cases. - -Examples: -atan2(3,2); ATAN2(3,2); -on rounded; -atan2(3,2); 0.982793723247 -atan2(a,b); ATAN2(a,b); -atan2(1,0); 1.57079632679 - -ATAN2 returns a numeric value only if ROUNDED is on. Then the -arctangent is calculated to the current degree of floating point precision. - -\endsection -\item[ATANH] -ATANH (pages 76, 78) - -The ATANH operator returns the hyperbolic arctangent of its argument. -The derivative of ASINH and some simple transformations are known -to the system. - - ATANH(expression) or ATANH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier -or begin with a prefix operator name. - -Examples: -atanh aa; ATANH(AA) -atanh(1); ATANH(1) - - X -df(atanh(x*y),y); ----------- - 2 2 - X *Y - 1 - -A numeric value is not returned by ASINH unless the switch ROUNDED is -on and its argument evaluates to a number. You may attach additional -functionality by defining ATANH to be the inverse of TANH. This is -done by the commands - put('tanh,'inverse,'atanh); - put('atanh,'inverse,'tanh); - -\endsection -\xitem[AVEC function] -AVEC function, 232 - -\endsection -\item[AVECTOR] -AVECTOR (pages 179, 231) - -Author: David Harper - -A Vector Algebra and Calculus Package. - -This package provides REDUCE with the ability to perform vector -algebra using the same notation as scalar algebra. The basic -algebraic operations are supported, as are differentiation and -integration of vectors with respect to scalar variables, cross -product and dot product, component manipulation and application of -scalar functions (e.g. cosine) to a vector to yield a vector -result. - -\endsection -\item[BALANCED_MOD] -BALANCED_MOD - -MODULAR numbers are normally produced in the range [0,...n), where -n is the current modulus. With BALANCED_MOD on, the range -[-n/2,n/2] is used instead. - -Examples: - setmod 7; 1 - on modular; - 4; 4 - on balanced_mod; - 4; -3 - -\endsection -\item[BEGIN...END] -BEGIN ... END (pages 61, 62, 64) - -BEGIN is used to start a BLOCK statement, which is closed with END. - - BEGIN statement{; statement} END - -statement is any valid REDUCE statement. - -Examples: - begin for i := 1:3 do write i end; 1 - 2 - -begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end; - 1 - 4 3 2 -b; X - 10*X + 35*X - 50*X + 24 - -A BEGIN...END block can do actions (such as WRITE), but does not -return a value unless instructed to by a RETURN statement, which must -be the last statement executed in the block. It is unnecessary to -insert a semicolon before the END. - -Local variables, if any, are declared in the first statement -immediately after BEGIN, and may be defined as SCALAR, INTEGER, or -REAL. ARRAY variables declared within a BEGIN...END block are global -in every case, and LET statements have global effects. A LET -statement involving a formal parameter affects the calling parameter -that corresponds to it. LET statements involving local variables make -global assignments, overwriting outside variables by the same name or -creating them if they do not exist. You can use this feature to -affect global variables from procedures, but be careful that you do -not do it inadvertently. - -\endsection -\item[BERNOULLI] -BERNOULLI (pages 185, 393) -[Part of SPECFN package] - -The BERNOULLI operator returns the nth Bernoulli number. - - BERNOULLI(integer) - -Examples: -load_package specfn; (SPECFN) - - - 174611 -bernoulli 20; ----------- - 330 - -bernoulli 17; 0 - -All Bernoulli numbers with odd indices except for 1 are zero. - -The BERNOULLIP operator returns the nth Bernoulli Polynomial evaluated -at x. - - BERNOULLIP(integer,expression) - -Examples: -load_package specfn; (SPECFN) - - 2 - Z*(2*Z - 3*Z + 1) -BernoulliP(3,z); -------------------- - 2 - - 338585 -BernoulliP(10,3); -------- - 66 - -The value of the nth Bernoulli Polynomial at 0 is the nth Bernoulli number. - -\endsection -\item[BESSELI] -BESSELI (pages 185, 396) -[Part of SPECFN package] - -The BESSELI operator returns the modified Bessel function I. - - BESSELI(order,argument) - -Examples: -load_package specfn; (SPECFN) -on rounded; -Besseli (1,1); 0.565159103992 - -The knowledge about the operator BESSELI is currently fairly limited. - -\endsection -\item[BESSELJ] -BESSELJ (pages 185, 396) -[Part of SPECFN package] - -The BESSELJ operator returns the Bessel function of the first kind. - - BESSELJ(order,argument) - -Examples: -load_package specfn; (SPECFN) -BesselJ(1/2,pi); 0 -on rounded; -BesselJ(0,1); 0.765197686558 - -\endsection -\item[BESSELK] -BESSELK (pages 185, 396) -[Part of SPECFN package] - -The BESSELK operator returns the modified Bessel function K. - - BESSELK(order,argument) - -Examples: -load_package specfn; (SPECFN) -df(besselk(0,x),x); - BESSELK(1,X) - -There is currently no numeric support for the operator BesselK. - -\endsection -\item[BESSELY] -BESSELY (pages 185, 396) -[Part of SPECFN package] - -The BESSELY operator returns the Bessel function of the second kind. - BESSELY(order,argument) - -Examples: -load_package specfn; (SPECFN) -Bessely (1/2,pi); - SQRT(2) / PI -on rounded; -Bessely (1,3); 0.324674424792 - -The operator BESSELY is also called Weber's function. - -\endsection -\item[BETA] -BETA (pages 185, 397) -[Part of SPECFN package] - -The BETA operator returns the Beta function defined by - - Beta (z,w) := defint(t**(z-1)* (1 - t)**(w-1),t,0,1) . - - - BETA(expression,expression) - - -Examples: -load_package specfn; (SPECFN) -Beta(2,2); 1 / 6 -Beta(x,y); GAMMA(X)*GAMMA(Y) / GAMMA(X + Y) - -The operator BETA is simplified towards the GAMMA operator. - -\endsection -\item[BFSPACE] -BFSPACE (page 133) - -Floating point numbers are normally printed in a compact notation -(either fixed point or in scientific notation if SCIENTIFIC_NOTATION -has been used). In some (but not all) cases, it helps -comprehensibility if spaces are inserted in the number at regular -intervals. The switch BFSPACE, if on, will cause a blank to be -inserted in the number after every five characters. - -Examples: - on rounded; - 1.2345678; 1.2345678 - on bfspace; - 1.2345678; 1.234 5678 - -BFSPACE is normally off. - -\endsection -\item[BINOMIAL] -BINOMIAL (page 185) - -The BINOMIAL operator returns the Binomial coefficient if both -parameter are integer and expressions involving the Gamma function otherwise. - - BINOMIAL(integer,integer) - -Examples: -Binomial(49,6); 13983816 - - GAMMA(N + 1) -Binomial(n,3); ---------------- - 6*GAMMA(N - 2) - -The operator BINOMIAL evaluates the Binomial coefficients from the -explicit form and therefore it is not the best algorithm if you want -to compute many binomial coefficients with big indices in which case a -recursive algorithm is preferable. - -\endsection -\xitem[Block] -Block, 61, 64 - -\endsection -\xitem[BNDEQ!*] -BNDEQ!*, 257 - -\endsection -\xitem[Boolean] -Boolean, 45 - -\endsection -\item[BOUNDS] -BOUNDS (page 182) - -Upper and lower bounds of a real valued function over an INTERVAL or a -rectangular multivariate domain are computed by the operator -BOUNDS. The algorithmic basis is the computation with inequalities: -starting from the interval(s) of the variables, the bounds are -propagated in the expression using the rules for inequality -computation. Some knowledge about the behavior of special functions -like ABS, SIN, COS, EXP, LOG, fractional exponentials etc. is -integrated and can be evaluated if the operator bounds is called with -rounded mode on (otherwise only algebraic evaluation rules are -available). - -If BOUNDS finds a singularity within an interval, the evaluation is -stopped with an error message indicating the problem part of the -expression. - - BOUNDS(exp,var=(l .. u) [,var=(l .. u) ...]) - BOUNDS(exp,{var=(l .. u) [,var=(l .. u) ...]}) - -where exp is the function to be investigated, var are the variables of -exp, l and u specify the area as set of INTERVAL s. - -BOUNDS computes upper and lower bounds for the expression in the given -area. An INTERVAL is returned. - -Examples: - bounds(sin x,x=(1 .. 2)); - 1 .. 1 - on rounded; - bounds(sin x,x=(1 .. 2)); 0.84147098481 .. 1 - bounds(x**2+x,x=(-0.5 .. 0.5)); - 0.25 .. 0.75 - -\endsection -\xitem[BROEBFULLREDUCTION] -BROEBFULLREDUCTION, 303 - -\endsection -\xitem[Buchberger's Algorithm] -Buchberger's Algorithm, 292, 295 - -\endsection -\item[BYE] -BYE (page 70) - -The BYE command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are -at the top level, the BYE command exits REDUCE. QUIT is a synonym for -BYE. - -\endsection -\xitem[C(I)] -C(I), 379 - -\endsection -\xitem[Call by value] -Call by value, 171, 173 - -\endsection -\xitem[Canonical form] -Canonical form, 97 - -\endsection -\item[CARD_NO] -CARD_NO (page 108) - -CARD_NO sets the total number of cards allowed in a Fortran -output statement when FORT is on. Default is 20. - -Examples: -on fort; -card_no := 4; CARD_NO=4. -z := (x + y)**15; - ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y** - . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15 - Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ - . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+ - . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1 - -Twenty total cards means 19 continuation cards. You may set it for -more if your Fortran system allows more. Expressions are broken apart -in a Fortran-compatible way if they extend for more than CARD_NO -continuation cards. - -\endsection -\xitem[cartesian coordinates] -cartesian coordinates, 354 - -\endsection -\item[CEILING] -CEILING (page 72) - - CEILING(expression) - -This operator returns the ceiling (i.e., the least integer greater -than or equal to its argument) if its argument has a numerical value. -For negative numbers, this is equivalent to FIX. For non-numeric -arguments, the value is an expression in the original operator. - -Examples: -ceiling 3.4; 4 -fix 3.4; 3 -ceiling(-5.2); -5 -fix(-5.2); -5 -ceiling a; CEILING(A) - -\endsection -\item[CENTERED_MOD] -CENTERED_MOD (page 134) - -This is an error in the Reduce manual. It should be BALANCED_MOD. -For more information select that entry. - -\endsection -\xitem[chain rule] -chain rule, 254 - -\endsection -\xitem[Character set] -Character set, 33 - -\endsection -\item[Chebyshev_fit] -Chebyshev fit (page 182) - -The operator family CHEBYSHEV_... implements approximation and -evaluation of functions by the Chebyshev method. Let T(n,a,b,x) be -the Chebyshev polynomial of order n transformed to the interval (a,b). -Then a function f(x) can be approximated in (a,b) by a series - - for i := 0:n sum c(i)*T(i,a,b,x) - -The operator CHEBYSHEV_FIT computes this approximation and returns a -list, which has as first element the sum expressed as a polynomial and -as second element the sequence of Chebyshev coefficients. - -CHEBYSHEV_DF and CHEBYSHEV_INT transform a Chebyshev coefficient list -into the coefficients of the corresponding derivative or integral -respectively. For evaluating a Chebyshev approximation at a given -point in the basic interval the operator CHEBYSHEV_EVAL can be used. - -CHEBYSHEV_EVAL is based on a recurrence relation which is in general -more stable than a direct evaluation of the complete polynomial. - - CHEBYSHEV_FIT(fcn,var=(lo .. hi),n) - - CHEBYSHEV_EVAL(coeffs,var=(lo .. hi), var=pt) - - CHEBYSHEV_DF(coeffs,var=(lo .. hi)) - - CHEBYSHEV_INT(coeffs,var=(lo .. hi)) - - -where fcn is an algebraic expression (the target function), var is the -variable of fcn, lo and hi are numerical real values which describe an -INTERVAL lo < hi, the integer n is the approximation order (set to 20 -if missing), pt is a number in the interval and coeffs is a series of -Chebyshev coefficients. - -Examples: - -on rounded; -w:=chebyshev_fit(sin x/x,x=(1 .. 3),5); - 3 2 - W := {0.0382345446975*X - 0.239802588672*X + 0.0651206939005*X - - + 0.977836217464, - - {0.899091895826,-0.406599215895,-0.00519766024352,0.00946374143 - - 079,-0.0000948947435875}} - -chebyshev_eval(second w, x=(1 .. 3), x=2.1); - 0.411091086819 - -\xitem[Chebyshev Polynomials] -Chebyshev Polynomials, 185 - -\endsection -\item[CHEBYSHEVT] -CHEBYSHEVT (page 185) - -The CHEBYSHEVT operator computes the nth Chebyshev T Polynomial (of the -first kind). - -CHEBYSHEVT(integer,expression) - -Examples: -load_package specfn; (SPECFN) - 2 -ChebyshevT(3,xx); XX*(4*XX - 3) - -ChebyshevT(3,4); 244 - -Chebyshev's T polynomials are computed using the recurrence relation: - -ChebyshevT(n,x) := 2x*ChebyshevT(n-1,x) - ChebyshevT(n-2,x) with -ChebyshevT(0,x) := 0 and ChebyshevT(1,x) := x - -\endsection -\item[CHEBYSHEVU] -CHEBYSHEVU (page 185) - -The CHEBYSHEVU operator returns the nth Chebyshev U Polynomial (of the -second kind). - -CHEBYSHEVU(integer,expression) - -Examples: -load_package specfn; (SPECFN) - 2 -ChebyshevU(3,xx); 4*X*(2*X - 1) - -ChebyshevU(3,4); 496 - -Chebyshev's U polynomials are computed using the recurrence relation: - -ChebyshevU(n,x) := 2x*ChebyshevU(n-1,x) - ChebyshevU(n-2,x) with -ChebyshevU(0,x) := 0 and ChebyshevU(1,x) := 2x - -\endsection -\item[CLEAR] -CLEAR (pages 142, 146) - -The CLEAR command is used to remove assignments or remove substitution -rules from any expression. - -CLEAR identifier{,identifier} or - let-type statement CLEAR identifier - -identifier can be any SCALAR, MATRIX, or ARRAY variable or PROCEDURE -name. let-type statement can be any general or specific LET statement -(see below). - -Examples: -array a(2,3); -a(2,2) := 15; A(2,2) := 15 -clear a; -a(2,2); Declare A operator? (Y or N) -let x = y + z; -sin(x); SIN(Y + Z) -clear x; -sin(x); SIN(X) -let x**5 = 7; -clear x; -x**5; 7 -clear x**5; - 5 -x**5; X - -Although it is not a good idea, operators of the same name but taking -different numbers of arguments can be defined. Using a CLEAR -statement on any of these operators clears every one with the same -name, even if the number of arguments is different. - -The CLEAR command is used to ``forget'' matrices, arrays, operators -and scalar variables, returning their identifiers to the pristine -state to be used for other purposes. When CLEAR is applied to array -elements, the contents of the array element becomes the argument for -CLEAR. Thus, you get an error message if the element contains a -number, or some other expression that is not a legal argument to -CLEAR. If the element contains an identifier, it is cleared. When -clear is applied to matrix elements, an error message is returned if -the element evaluates to a number, otherwise there is no effect. Do -NOT try to use CLEAR to set array or matrix elements to 0. You will -not be pleased with the results. - -If you are trying to clear power or product substitution rules made -with either LET or FORALL...LET, you must reproduce the rule, exactly -as you typed it with the same arguments, up to but not including the -equal sign, using the word CLEAR instead of the word LET. This is -shown in the last example. Any other type of LET or FORALL...LET -substitution can be cleared with just the variable or operator name. -MATCH behaves the same as LET in this situation. There is a more -complicated example under FORALL. - -\endsection -\item[CLEARRULES] -CLEARRULES (page 148) - - CLEARRULES list{,list} - -The operator CLEARRULES is used to remove previously defined -RULE lists from the system. list can be an explicit rule -list, or evaluate to a rule list. - -Examples: -trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ -let trig1; - COS(A - B) + COS(A + B) -cos(a)*cos(b); ------------------------- - 2 -clearrules trig1; -cos(a)*cos(b); COS(A)*COS(B) - -\endsection -\item[COEFF] -COEFF (page 115) - -The COEFF operator returns the coefficients of the powers of the -specified variable in the given expression, in a list. - - COEFF(expression,variable) - -expression is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch RATARG -is on. variable must be a kernel. The results are returned in a -list. - -Examples: - 3 2 -coeff((x+y)**3,x); {Y ,3*Y ,3*Y,1} -coeff((x+2)**4 + sin(x),x); {SIN(X) + 16,32,24,8,1} -high_pow; 4 -low_pow; 0 - 7 9 -ab := x**9 + sin(x)*x**7 + sqrt(y); AB := SQRT(Y) + SIN(X)*X + X -coeff(ab,x); {SQRT(Y),0,0,0,0,0,0,SIN(X),0,1} - -The variables HIGH_POW and LOW_POW are set to the highest and lowest -powers of the variable, respectively, appearing in the expression. - -The coefficients are put into a list, with the coefficient of the -lowest (constant) term first. You can use the usual list access -methods (first, second, third, rest, length, and part) to extract -them. If a power does not appear in the expression, the corresponding -element of the list is zero. Terms involving functions of the -specified variable but not including powers of it (for example in the -expression x**4 + 3*x**2 + tan(x)) are placed in the constant term. - -Since the COEFF command deals with the expanded form of the -expression, you may get unexpected results when EXP is off, or when -FACTOR or IFACTOR are on. - -If you want only a specific coefficient rather than all of them, use the -COEFFN operator. - -\endsection -\item[Coefficient] -Coefficient (pages 132, 134) - -REDUCE allows for a variety of numerical domains for the numerical -coefficients of polynomials used in calculations. The default mode is -integer arithmetic, although the possibility of using real -coefficients has been discussed elsewhere. Rational coefficients have -also been available by using integer coefficients in both the -numerator and denominator of an expression, using the ON DIV option to -print the coefficients as rationals. However, REDUCE includes several -other coefficient options in its basic version. - -See ADJPREC, BFSPACE, COMPLEX, MODULAR, PRECISION, PRINT_PRECISION, -RATIONAL, RATIONALIZE, ROUNDALL, ROUNDBF, ROUNDED and SETMOD. - -\endsection -\item[COEFFN] -COEFFN (page 116) - -The COEFFN operator takes three arguments: an expression, a kernel, -and a non-negative integer. It returns the coefficient of the kernel -to that integer power, appearing in the expression. - - COEFFN(expression,kernel,integer) - -expression must be a polynomial, unless RATARG is on which allows -rational expressions. kernel must be a Kernel, and integer must be a -non-negative integer. - -Examples: - -ff := x**7 + sin(y)*x**5 + y**4 + x + 7$ -coeffn(ff,x,5); SIN(Y) -coeffn(ff,z,3); 0 - 5 7 -coeffn(ff,y,0); SIN(Y)*X + X + X + 7 - -rr := 1/y**2+y**3+sin(y); -on ratarg; - -coeffn(rr,y,-2); ***** -2 invalid as COEFFN index - -coeffn(rr,y,5); 1 - ---- - 2 - y - -If the given power of the kernel does not appear in the expression, -COEFFN returns 0. Negative powers are never detected, even if they -appear in the expression and RATARG are on. COEFFN with an integer -argument of 0 returns any terms in the expression that do not contain -the given kernel. - -\endsection -\item[COFACTOR] -COFACTOR (page 166) - -The operator COFACTOR returns the cofactor of the element in row -row and column column of a MATRIX. Errors occur -if row or column do not evaluate to integer expressions or if -the matrix is not square. - - COFACTOR(matrix_expression,row,column) - -Examples: -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); A*R - C*P -cofactor(mat((a,b,c),(d,e,f)),1,1); ***** non-square matrix - -\endsection -\xitem[COFRAME] -COFRAME (pages 257, 262, 271) - WITH METRIC (page 263 - WITH SIGNATURE (page 263 - -\endsection -\item[COLLECT] -COLLECT (page 57) - -COLLECT is a key word of the FOR construction. Details are given there. - -\endsection -\item[COMBINEEXPT] -COMBINEEXPT (page 77) - -REDUCE is in general poor at surd simplification. However, when the -switch COMBINEEXPT is on, the system attempts to combine -exponentials whenever possible. - -Example: 1/3 1/6 -3^(1/2)*3^(1/3)*3^(1/6); SQRT(3)*3 *3 -on combineexpt; -ws; 1 - -\endsection -\item[COMBINELOGS] -COMBINELOGS (page 77) - -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches EXPANDLOGS and -COMBINELOGS to carry out these operations. -Examples: - on expandlogs; - log(x*y); LOG(X) + LOG(Y) - on combinelogs; - ws; LOG(X*Y) - -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not -rely on this behaviour, since it may change in the next release. - -\endsection -\xitem[COMM] -COMM (page 378 - -\endsection -\xitem[Command] -Command (page 67 - -\endsection -\xitem[Command terminator] -Command terminator (page 153 - -\endsection -\item[COMMENT] -COMMENT (page 38) - -Beginning with the word COMMENT, all text until the next statement -terminator (; or $) is ignored. - -Examples: - 2 -x := a**2 comment--a is the velocity of the particle;; X := A - -Note that the first semicolon ends the comment and the second one -terminates the original REDUCE statement. - -Multiple-line comments are often needed in interactive files. The -COMMENT command allows a normal-looking text to accompany the REDUCE -statements in the file. - -\endsection -\item[COMP] -COMP (page 213) - -(Not available in Personal REDUCE} - -When COMP is on, any succeeding function definitions are compiled -into a faster-running form. Default is OFF. - -Examples: -The following procedure finds Fibonacci numbers recursively. -Create a new file ``refib'' in your current directory with the following -lines in it: - -procedure refib(n); - if fixp n and n >= 0 then - if n <= 1 then 1 - else refib(n-1) + refib(n-2) - else rederr "nonnegative integer only"; - -end; - -{Now load REDUCE and run the following:} - -on time; Time: 100 ms - -in "refib"$ Time: 0 ms - - REFIB - - Time: 260 ms - - Time: 20 ms - -refib(80); 37889062373143906 - - Time: 14840 ms - -on comp; Time: 80 ms - -in "refib"$ Time: 20 ms - - REFIB - - Time: 640 ms - -refib(80); 37889062373143906 - - Time: 10940 ms - -Note that the compiled procedure runs faster. Your time messages will -differ depending upon which system you have. Compiled functions -remain so for the duration of the REDUCE session, and are then lost. -They must be recompiled if wanted in another session. With the switch -TIME on as shown above, the CPU time used in executing the command is -returned in milliseconds. Be careful not to leave COMP on unless you -want it, as it makes the processing of procedures much slower. - -\endsection -\item[COMPACT] -COMPACT (pages 179, 241) - -Author: Anthony C. Hearn - -COMPACT is a package of functions for the reduction of a polynomial in -the presence of side relations. COMPACT applies the side relations to -the polynomial so that an equivalent expression results with as few -terms as possible. For example, the evaluation of - - compact(s*(1-sin x^2)+c*(1-cos x^2)+sin x^2+cos x^2, - {cos x^2+sin x^2=1}); - -yields the result - - 2 2 - SIN(X) *C + COS(X) *S + 1 - -\endsection -\item[Compiler] -Compiler (page 213) - -A compiler is available in the Professional REDUCE to convert -functions into a compiled form for faster execution. See the switch -COMP for more details. - -\endsection -\item[COMPLEX] -COMPLEX (pages 135, 372) - -When the COMPLEX switch is on, full complex arithmetic is used in -simplification, function evaluation, and factorisation. Default is OFF. - -Examples: - 2 2 -factorize(a**2 + b**2); {A + B } -on complex; -factorize(a**2 + b**2); {A - I*B,A + I*B} -(x**2 + y**2)/(x + i*y); X - I*Y -on rounded; *** Domain mode COMPLEX changed to COMPLEX_FLOAT -sqrt(-17); 4.12310562562*I -log(7*i); 1.94591014906 + 1.57079632679*I - -Complex floating-point can be done by turning on ROUNDED in addition -to COMPLEX. With COMPLEX off however, REDUCE knows that i is the -square root of -1 but will not carry out more complicated complex -operations. If you want complex denominators cleared by -multiplication by their conjugates, turn on the switch RATIONALIZE. - -\endsection -\xitem[Compound statement] -Compound statement (pages 61, 63 - -\endsection -\xitem[Conditional statement] -Conditional statement (page 56) - -\endsection -\item[CONJ] -CONJ (page 72) - - CONJ(expression) or CONJ simple_expression - -This operator returns the complex conjugate of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators REPART and IMPART. - -Examples: -conj(1+i); 1-I -conj(a+i*b); REPART(A) - REPART(B)*I - IMPART(A)*I - IMPART(B) - -\endsection -\xitem[Constructor] -Constructor (page 198) - -\endsection -\item[CONT] -CONT (page 160) - -The command CONT returns control to an interactive file after a -PAUSE command that has been answered with N. - -Examples: -Suppose you are in the middle of an interactive file. - factorize(x**2 + 17*x + 60); {X + 5,X + 12} - pause; Cont? (Y or N) - n - saveas results; - factor1 := first results; FACTOR1 := X + 5 - factor2 := second results; FACTOR2 := X + 12 - cont; -....the file resumes - -A PAUSE allows you to enter your own REDUCE commands, change switch -values, inquire about results, or other such activities. When you -wish to resume operation of the interactive file, use CONT. - -\endsection -\xitem[COORDINATES operator] -COORDINATES operator (page 234) - -\endsection -\xitem[COORDS vector] -COORDS vector (page 234) - -\endsection -\xitem[CORFACTOR] -CORFACTOR (page 350) - -\endsection -\item[COS] -COS (pages 76, 78) - -The COS operator returns the cosine of its argument. - - COS(expression) or COS simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -cos abc; COS(ABC) -cos(pi); -1 -cos 4; COS(4) -on rounded; -cos(4); - 0.653643620864 -cos log 5; - 0.0386319699339 - -COS returns a numeric value only if ROUNDED is on. Then the cosine is -calculated to the current degree of floating point precision. - -\endsection -\item[COSH] -COSH (pages 76, 78) - -The COSH operator returns the hyperbolic cosine of its argument. The -derivative of COSH and some simple transformations are known to the -system. - - COSH(expression) or COSH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -cosh b; COSH(B) -cosh(0); 1 -df(cosh(x*y),x); SINH(X*Y)*Y -int(cosh(x),x); SINH(X) - -You may attach further functionality by defining its inverse (see -ACOSH). A numeric value is not returned by COSH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\item[COT] -COT (pages 76, 78) - -COT represents the cotangent of its argument. It takes an arbitrary -scalar expression as its argument. The derivative of ACOT and some -simple properties are known to the system. - - COT(expression) or COT simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: -cot(a)*tan(a); COT(A)*TAN(A)) -cot(1); COT(1) - 2 -df(cot(2*x),x); - 2*(COT(2*X) + 1) - -Numerical values of expressions involving COT may be found by -turning on the switch ROUNDED. - -\endsection -\item[COTH] -COTH (pages 76, 78) - -The COTH operator returns the hyperbolic cotangent of its argument. -The derivative of COTH and some simple transformations are known to -the system. - - COTH(expression) or COTH simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: - 2 -df(coth(x*y),x); - Y*(COTH(X*Y) - 1) -coth acoth z; Z - -You can write LET statements and procedures to add further -functionality to COTH if you wish. Numerical values of expressions -involving COTH may also be found by turning on the switch ROUNDED. - -\endsection -\item[CRAMER] -CRAMER (pages 85, 163) - -When the CRAMER switch is on, MATRIX inversion and linear equation -solving (operator SOLVE) is done by Cramer's rule, through exterior -multiplication. Default is OFF. - -Examples: -on time; Time: 80 ms -off output; Time: 100 ms -mm := mat((a,b,c,d,f),(a,a,c,f,b), - (b,c,a,c,d), (c,c,a,b,f), - (d,a,d,e,f)); - Time: 300 ms -inverse := 1/mm; Time: 18460 -on cramer; Time: 80 ms -cramersinv := 1/mm; Time: 9260 MS - -Your time readings will vary depending on the REDUCE version you use. -After you invert the matrix, turn on OUTPUT and ask for one of the -elements of the inverse matrix, such as CRAMERSINV(3,2), so that you -can see the size of the expressions produced. - -Inversion of matrices and the solution of linear equations with dense -symbolic entries in many variables is generally considerably faster -with CRAMER on. However, inversion of numeric-valued matrices is -slower. Consider the matrices you're inverting before deciding -whether to turn CRAMER on or off. A substantial portion of the time -in matrix inversion is given to formatting the results for printing. -To save this time, turn OUTPUT off, as shown in this example or -terminate the expression with a dollar sign instead of a semicolon. -The results are still available to you in the workspace associated -with your prompt number, or you can assign them to an identifier for -further use. - -\endsection -\item[CREF] -CREF (pages 215, 216) - -The switch CREF invokes the CREF cross-reference program that -processes a set of procedure definitions to produce a summary of their -entry points, undefined procedures, non-local variables and so on. The -program will also check that procedures are called with a consistent -number of arguments, and print a diagnostic message otherwise. - -The output is alphabetised on the first seven characters of each function -name. - -To invoke the cross-reference program, CREF is first turned on. -This causes the program to load and the cross-referencing process to -begin. After all the required definitions are loaded, turning CREF -off will cause a cross-reference listing to be produced. - - - -Algebraic procedures in REDUCE are treated as if they were symbolic, so -that algebraic constructs will actually appear as calls to symbolic -functions, such as AEVAL. - -\endsection -\xitem[CRESYS] -CRESYS (pages 378, 380) - -\endsection -\xitem[CROSS] -CROSS - vector (page 233) - -\endsection -\xitem[cross product] -cross product (pages 233, 357) - -\endsection -\xitem[Cross reference] -Cross reference (page 215) - -\endsection -\item[CSC] -CSC (pages 76, 78) - -The CSC operator returns the cosecant of its argument. The derivative -of CSC and some simple transformations are known to the system. - - CSC(expression) or CSC simple_expression - -expression may be any scalar REDUCE expression. simple_expression -must be a single identifier or begin with a prefix operator name. - -Examples: -csc(q)*sin(q); CSC(Q)*SIN(Q) -df(csc(x*y),x); -COT(X*Y)*CSC(X*Y)*Y - - -You can write LET statements and procedures to add further -functionality to CSC if you wish. Numerical values of expressions -involving CSC may also be found by turning on the switch ROUNDED. - -\endsection -\item[CSCH] -CSCH (pages 76, 78) - -The COSH operator returns the hyperbolic cosecant of its argument. -The derivative of CSCH and some simple transformations are known to -the system. - - CSCH(expression) or CSCH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -csch b; CSCH(B) -csch(0); 0 -df(csch(x*y),x); - COTH(X*Y)*CSCH(X*Y)*Y -int(csch(x),x); INT(CSCH(X),X) - -A numeric value is not returned by CSCH unless the switch ROUNDED is -on and its argument evaluates to a number. - -\endsection -\xitem[CURL operator] -CURL operator (page 234) - -\endsection -\xitem[curl vector field] -curl vector field (page 234) - -\endsection -\xitem[curl operator] -curl operator (page 358) - -\endsection -\xitem[cylindrical coordinates] -cylindrical coordinates (page 355) - -\endsection -\xitem[d exterior differentiation] -d - exterior differentiation (page 271) - -\endsection -\xitem[Declaration] -Declaration (page 67) - -\endsection -\item[DECOMPOSE] -DECOMPOSE (page 127) - -The DECOMPOSE operator takes a multivariate polynomial as argument, -and returns an expression and a LIST of EQUATIONs from which the -original polynomial can be found by composition. - - DECOMPOSE(expression) or DECOMPOSE simple_expression - -Examples: -decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4- - 218900*x^3+65690*x^2-7700*x+234) - 2 - {U + 35*U + 234, - - 2 - U=V + 10*V, - - 2 - V=X - 22*X } - - 2 -decompose(u^2+v^2+2u*v+1); {W + 1,W=U + V} - -Unlike factorisation, this decomposition is not unique. Further -details can be found in V.S. Alagar, M.Tanh, Fast Polynomial -Decomposition, Proc. EUROCAL 1985, pp 150-153 (Springer) and J. von -zur Gathen, Functional Decomposition of Polynomials: the Tame Case, J. -Symbolic Computation (1990) 9, 281-299. - -\endsection -\item[DEFINE] -DEFINE (page 70) - -The command DEFINE allows you to supply a new name for an identifier -or replace it by any valid REDUCE expression. - - DEFINE identifier = substitution {,identifier = substitution} - -identifier is any valid REDUCE identifier, substitution can be a -number, an identifier, an operator, a reserved word, or an expression. - -Examples: - -define is= :=, xx=y+z; -a is 10; A := 10 - 2 2 -xx**2; Y + 2*Y*Z + Z - -xx := 10; Y + Z := 10 - -The renaming is done at the input level, and therefore takes precedence -over any other replacement or substitution declared for the same identifier. -It remains in effect until the end of the REDUCE session. Be careful with -it, since you cannot easily undo it without ending the session. - -\endsection -\xitem[definite integration (simple)] -definite integration (simple) (page 236) - -\endsection -\xitem[DEFINT function] -DEFINT function (page 236) - -\endsection -\xitem[DEFLINEINT function] -DEFLINEINT function (page 238) - -\endsection -\item[DEFN] -DEFN (pages 197, 218) - -When the switch DEFN is on, the Standard Lisp equivalent of the -input statement or procedure is printed, but not evaluated. Default is -OFF. - -Examples: - -on defn; -17/3; (AEVAL (LIST 'QUOTIENT 17 3)) - -df(sin(x),x,2); (AEVAL (LIST 'DF (LIST 'SIN 'X) 'X 2)) -procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; (AEVAL - (PROGN - (FLAG '(COSHVAL) 'OPFN) - (DE COSHVAL (A) - (PROG (G) - (SETQ G - (AEVAL - (LIST - 'QUOTIENT - (LIST - 'PLUS - (LIST 'EXP A) - (LIST 'EXP (LIST 'MINUS A))) - 2))) - (RETURN G)))) ) -coshval(1); (AEVAL (LIST 'COSHVAL 1)) -off defn; -coshval(1); Declare COSHVAL operator? (Y or N) -n -procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; COSHVAL -on rounded; -coshval(1); 1.54308063482 - -The above function COSHVAL finds the hyperbolic cosine (cosh) of its -argument. When DEFN is on, you can see the Standard Lisp equivalent -of the function, but it is not entered into the system as shown by the -message DECLARE COSHVAL OPERATOR?. It must be reentered with DEFN off -to be recognised. This procedure is used as an example; a more -efficient procedure would eliminate the unnecessary local variable -with - procedure coshval(a); - (exp(a) + exp(-a))/2; - -\endsection -\item[DEFPOLY] -DEFPOLY statement (page 225) - -DEFPOLY is used to introduce a defining polynoimial for an algebraic -number. For example, to define an atom to stand for teh square root -of 2 one would say - - load arnum; - defpoly sqrt2^2 -2; - -This associates a simplification function for the variable and also -generates a power reduction rule used by the operations * and / for -the reduction of their result modulo the defining polynomial. A basis -for the representation of an algebraic number is also set up by the -statement. If the defining polynomial is not monic, it will be made -so by an appropriate substitution. - -\endsection -\item[DEG] -DEG (page 128) - -The operator DEG returns the highest degree of its variable argument -found in its expression argument. - - DEG(expression,kernel) - -expression is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch RATARG -is on. variable must be a Kernel. The results are returned in a -list. - -Examples: -deg((x+y)**5,x); 5 -deg((a+b)*(c+2*d)**2,d); 2 -deg(x**2 + cos(y),sin(x)); -deg((x**2 + sin(x))**5,sin(x)); 5 - -\endsection -\xitem[Degree] -Degree (page 128) - -\endsection -\xitem[DELSQ operator] -DELSQ - operator (page 234) - -\endsection -\xitem[delsq operator] -delsq operator (page 358) - -\endsection -\item[DEMO] -DEMO (page 69) - -The DEMO switch is used for interactive files, causing the system -to pause after each command in the file until you type a Return. -Default is OFF. - -The switch DEMO has no effect on top level interactive statements. -Use it when you want to slow down operations in a file so you can see -what is happening. - -You can either include the ON DEMO command in the file, or enter it -from the top level before bringing in any file. Unlike the PAUSE -command, ON DEMO does not permit you to interrupt the file for -questions of your own. - -\endsection -\item[DEN] -DEN (pages 120, 129) - -The DEN operator returns the denominator of its argument. - - DEN(expression) - -expression is ordinarily a rational expression, but may be any valid -scalar REDUCE expression. - -Examples: - 2 -a := x**3 + 3*x**2 + 12*x; A := X*(X + 3*X + 12) -b := 4*x*y + x*sin(x); B := X*(SIN(X) + 4*Y) -den(a/b); SIN(X) + 4*Y -den(aa/4 + bb/5); 20 -den(100/6); 3 -den(sin(x)); 1 - -DEN returns the denominator of the expression after it has been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression does not have any -other denominator, 1 is returned. - -Switch settings, such as MCD or RATIONAL, have an effect on the -denominator of an expression. - -\endsection -\item[DEPEND] -DEPEND (page 95) - -DEPEND declares that its first argument depends on the rest of its -arguments. - - DEPEND kernel{,kernel} - -kernel must be a legal variable name or a prefix operator (see -Kernel). - -Examples: - -depend y,x; -df(y**2,x); 2*DF(Y,X)*Y -depend z,cos(x),y; -df(sin(z),cos(x)); COS(Z)*DF(Z,COS(X)) -df(z**2,x); 2*DF(Z,X)*Z -nodepend z,y; -df(z**2,x); 2*DF(Z,X)*Z -cc := df(y**2,x); CC := 2*DF(Y,X)*Y -y := tan x; Y := TAN(X); - 2 -cc; 2*TAN(X)*(TAN(X) + 1) - -Dependencies can be removed by using the declaration NODEPEND. The -differentiation operator uses this information, as shown in the -examples above. Linear operators also use knowledge of dependencies -(see LINEAR). Note that dependencies can be nested: Having declared y -to depend on x, and z to depend on y, we see that the chain rule was -applied to the derivative of a function of z with respect to x. If -the explicit function of the dependency is later entered into the -system, terms with DF(Y,X), for example, are expanded when they are -displayed again, as shown in the last example. - -\endsection -\xitem[DEPEND statement] -DEPEND statement (page 359) - -\endsection -\xitem[DEQ(I)] -DEQ(I) (page 379) - -\endsection -\xitem[derivative variational] -derivative - variational (page 257) - -\endsection -\item[DET] -DET (pages 97, 163) - -The operator COFACTOR returns the cofactor of the element in row -row and column column of a MATRIX. Errors occur -if row or column do not evaluate to integer expressions or if -the matrix is not square. - - COFACTOR(matrix_expression,row,column) - -Examples: -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); A*R - C*P -cofactor(mat((a,b,c),(d,e,f)),1,1); ***** non-square matrix - -\endsection -\xitem[determinant] -determinant - in DETM!* (page 263) - -\endsection -\xitem[DETM!*] -DETM!* (page 263) - -\endsection -\item[DF] -DF (pages 79, 80) - -The DF operator finds partial derivatives with respect to one or -more variables. - - DF(expression,var - [,number] - {,var [ ,number] } ) - -expression can be any valid REDUCE algebraic expression. var must be -a Kernel, and is the differentiation variable. number must be a -non-negative integer. - -Examples: -df(x**2,x); 2*X - 2 -df(x**2*y + sin(y),y); COS(Y) + X - -df((x+y)**10,z); 0 - 6 -df(1/x**2,x,2); ---- - 4 - X -df(x**4*y + sin(y),y,x,3); 24*X - -for all x let df(tan(x),x) = sec(x)**2; - 2 -df(tan(3*x),x); 3*SEC(3*X) - -An error message results if a non-kernel is entered as a -differentiation operator. If the optional number is omitted, it is -assumed to be 1. See the declaration DEPEND to establish dependencies -for implicit differentiation. - -You can define your own differentiation rules, expanding REDUCE's -capabilities, using the LET command as shown in the last example -above. Note that once you add your own rule for differentiating a -function, it supersedes REDUCE's normal handling of that function for -the duration of the REDUCE session. If you clear the rule -(CLEARRULES), you don't get back to the previous rule. - -\endsection -\item[DFPRINT] -DFPRINT - -When DFPRINT is on, expressions in the differentiation operator -DF are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. In addition, if the -switch NOARG is on (the default), the arguments of the -differentiated operator are suppressed. - -Examples: -operator f; -df(f x,x); DF(F(X),X); -on dfprint; -ws; F - X -df(f(x,y),x,y); F - X,Y -off noarg; -ws; F(X,Y) - X - -\endsection -\xitem[differential geometry] -differential geometry (page 248) - -\endsection -\xitem[Differentiation] -Differentiation (pages 79, 80, 95) - -\endsection -\xitem[differentiation] -differentiation - partial (page 251) - vector (page 233) - -\endsection -\item[DIGAMMA] -DIGAMMA (page 185, 395) - -See PSI -\endsection -\item[DILOG] -DILOG (pages 76, 81, 185) - -The DILOG operator is known to the differentiation and integration -operators, but has numeric value attached only at DILOG(0). DILOG is -defined by - log(x) - dilog(x) = -int ------ dx - x-1 - - dilog(x) = -int(log(x),x)/(x-1) - -Examples: 2 2 -df(dilog(x**2),x); - (2*LOG(X )*X)/(X - 1) - -int(dilog(x),x); DILOG(X)*X - DILOG(X) + LOG(X)*X - X - 2 -dilog(0); PI /6 - -\endsection -\xitem[dimension] -dimension (page 251) - -\endsection -\xitem[Dirac gamma matrix] -Dirac gamma matrix (page 206) - -\endsection -\item[DISPLAY] -DISPLAY (page 158)) - -When given a numeric argument n, DISPLAY prints the n most recent -input statements, identified by prompt numbers. If an empty pair of -parentheses is given, or if n is greater than the current number of -statements, all the input statements since the beginning of the -session are printed. - - DISPLAY(n) or DISPLAY() - -n should be a positive integer. However, if it is a real number, the -truncated integer value is used, and if a non-numeric argument is -used, all the input statements are printed. - -The statements are displayed in upper case, with lines split at -semicolons or dollar signs, as they are in editing. If long files -have been input during the session, the DISPLAY command is slow to -format these for printing. - -\endsection -\xitem[Display] -Display (page 97) - -\endsection -\xitem[DISPLAYFRAME command] -DISPLAYFRAME command (pages 266, 271) - -\endsection -\xitem[Displaying structure] -Displaying structure (page 112) - -\endsection -\item[DIV] -DIV (pages 103, 132) - -When DIV is on, the system divides any simple factors found in the -denominator of an expression into the numerator. Default is OFF. - -Examples: - -on div; - 2 -2 -a := x**2/y**2; A := X *Y - 1 2 -2 -1 -b := a/(3*z); B := ---*X *Y *Z - 3 -off div; - 2 - X -a; ---- - 2 - Y - - 2 - X -b; -------- - 2 - 3*Y *Z - -The DIV switch only has effect when the PRI switch is on. When PRI is -off, regardless of the setting of DIV, the printing behaviour is as if -DIV were off. - -\endsection -\xitem[DIV operator] -DIV - operator (page 234) - -\endsection -\xitem[div operator] -div operator (page 358) - -\endsection -\xitem[divergence vector field] -divergence - vector field (page 234) - -\endsection -\xitem[DLINEINT] -DLINEINT (page 360) - -\endsection -\xitem[DO] -DO (pages 57--59) - -\endsection -\xitem[Dollar sign] -Dollar sign (page 53) - -\endsection -\item[DOT] -DOT product of vectors (pages 205, 233, 357) - -The . operator is used to denote the scalar product of two Lorentz -four-vectors. - vector . vector - -vector must be an identifier declared to be of type VECTOR to have -the scalar product definition. When applied to arguments that are not -vectors, the CONS operator is used, -whose symbol is also ``dot.'' - -Examples: -vector aa,bb,cc; -let aa.bb = 0; -aa.bb; 0 -aa.cc; AA.CC -q := aa.cc; Q := AA.CC -q; AA.CC - -Since vectors are special high-energy physics entities that do not -contain values, the . product will not return a true scalar product. -You can assign a scalar identifier to the result of a . operation, or -assign a . operation to have the value of the scalar you supply, as -shown above. Note that the result of a . operation is a scalar, not a -vector. - -The metric tensor g(u,v) can be represented by U.V. If contraction -over the indices is required, U and V should be declared to be of type -INDEX. - -The dot operator has the highest precedence of the infix operators, so -expressions involving . and other operators have the scalar product -evaluated first before other operations are done. - -\endsection -\xitem[Dot product] -Dot product (pages 205, 233, 357) - -\endsection -\xitem[DOTGRAD operator] -DOTGRAD operator (page 358) - -\endsection -\xitem[DVINT] -DVINT (page 360) - -\endsection -\xitem[DVOLINT] -DVOLINT (page 360) - -\endsection -\item[E] -E (page 36) - -The constant E is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch ROUNDED is on. - - -E may be used as an iterative variable in a FOR statement, -or as a local variable or a PROCEDURE. If E is defined as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. - -\endsection -\item[ECHO] -ECHO (page 153) - -The ECHO switch is normally off for top-level entry, and on when files -are brought in. If ECHO is turned on at the top level, your input -statements are echoed to the screen (thus appearing twice). Default -OFF (but note default ON for files). - - -If you want to display certain portions of a file and not others, use the -commands OFF ECHO and ON ECHO inside the file. If you want -no display of the file, use the input command - - IN filename$ - -rather than using the semicolon delimiter. - -Be careful when you use commands within a file to generate another file. -Since ECHO is on for files, the output file echoes input statements -(unlike its behaviour from the top level). You should explicitly turn off -ECHO when writing output, and turn it back on when you're done. - -\endsection -\item[ED] -ED (pages 157, 158) - -The ED command invokes a simple line editor for REDUCE input -statements. - - ED integer or ED - -ED called with no argument edits the last input statement. If integer -is greater than or equal to the current line number, an error message -is printed. Reenter a proper ED command or return to the top level -with a semicolon. - -The editor formats REDUCE's version of the desired input statement, -dividing it into lines at semicolons and dollar signs. The statement -is printed at the beginning of the edit session. The editor works on -one line at a time, and has a pointer (shown by ^) to the current -character of that line. When the session begins, the pointer is at -the left hand side of the first line. The editing prompt is >. - -The following commands are available. They may be entered in either -upper or lower case. All commands are activated by the carriage -return, which also prints out the current line after changes. Several -commands can be placed on a single line, except that commands -terminated by an Cntrl-G must be the last command before the carriage -return. - -b -Move pointer to beginning of current line. - -ddigit -Delete current character and next (digit-1) characters. An error -message is printed if anything other than a single digit follows d. -If there are fewer than digit characters left on the line, all but the -final dollar sign or semicolon is removed. To delete a line -completely, use the k command. - -e -End the current session, causing the edited expression to be reparsed by -REDUCE. - -fchar -Find the next occurrence of the character char to the right of the -pointer on the current line and move the pointer to it. If the -character is not found, an error message is printed and the pointer -remains in its original position. Other lines are not searched. The -f command is not case-sensitive. - -istring{Cntrl-G} -Insert string in front of pointer. The Cntrl-G key is your delimiter for -the input string. No other command may follow this one on the same -line. - -k -Kill rest of the current line, including the semicolon or dollar sign -terminator. If there are characters remaining on the current line, and it -is the last line of the input statement, a semicolon is added to the line -as a terminator for REDUCE. If the current line is now empty, one of the -following actions is performed: If there is a following line, it becomes -the current line and the pointer is placed at its first character. If the -current line was the final line of the statement, and there is a previous -line, the previous line becomes the current line. If the current line was -the only line of the statement, and it is empty, a single semicolon is -inserted for REDUCE to parse. - -l -Finish editing this line and move to the last previous line. An error message -is printed if there is no previous line. - -n -Finish editing this line and move to the next line. An error message is -printed if there is no next line. - -p -Print out all the lines of the statement. Then a dotted line is printed, and -the current line is reprinted, with the pointer under it. - -q -Quit the editing session without saving the changes. If a semicolon is -entered after q, a new line prompt is given, otherwise REDUCE prompts you -for another command. Whatever you type in to the prompt appearing after -the q is entered is stored as the input for the line number in which you -called the edit. Thus if you enter a semicolon, neither INPUT -ED will find anything under the current number. - -rchar -Replace the character at the pointer by char. - -sstring{Cntrl-G} -Search for the first occurrence of string to the right of the -pointer on the current line and move the pointer to its first character. -The Cntrl-G key is your delimiter for the input string. The s function -does not search other lines of the statement. If the string is not found, -an error message is printed and the pointer remains in its original -position. The s command is not case-sensitive. No other command may -follow this one on the same line. - -x or space -Move the pointer one character to the right. If the pointer is already at -the end of the line, an error message is printed. - -- (minus) -Move the pointer one character to the left. If the pointer is already at the -beginning of the line, an error message is printed. - -? -Display the Help menu, showing the commands and their actions. - -Examples: -(Line numbers are shown in the following examples) - 2 -2: x**2 + y; X + Y -3: ed 2; - X**2 + Y; - ^ -For help, type '?' -?- {(Enter three spaces and Return})} - X**2 + Y; - ^ -?- r5 - X**5 + Y; - ^ -?- fY - X**5 + Y; - ^ -?- iabc{(Terminate with Cntrl-G and Return)} - X**5 + abcY; - ^ -?- ---- - X**5 + abcY; - ^ -?- fbd2 - X**5 + aY; - ^ -?- b - X**5 + aY; - ^ 5 -?- e AY + X -4: procedure dumb(a); - write a; -DUMB -5: dumb(17); 17 -6: ed 4; - PROCEDURE DUMB (A); - ^ -WRITE A; -?- fArBn - WRITE A; - ^ -?- ibegin scalar a; a := b + 10;{space Cntrl-G and Return} - begin scalar a; a := b + 10; WRITE A; -?- f;i end {Cntrl-G Return} - begin scalar b; b := a + 10; WRITE A end; - ^ -?- p - PROCEDURE DUMB (B); - begin scalar b; b := a + 10; WRITE A end; - - - - - - - - - - - - begin scalar b; b := a + 10; WRITE A end; - ^ -?- e DUMB -7: dumb(17); 27 -8: - -Note that REDUCE reparsed the procedure DUMB and updated the -definition. - -Since REDUCE divides the expression to be edited into lines at -semicolons or dollar sign terminators, some lines may occupy more than -one line of screen space. If the pointer is directly beneath the last -line of text, it refers to the top line of text. If there is a blank -line between the last line of text and the pointer, it refers to the -second line of text, and likewise for cases of greater than two lines -of text. In other words, the entire REDUCE statement up to the next -terminator is printed, even if it runs to several lines, then the -pointer line is printed. - -You can insert new statements which contain semicolons of their own -into the current line. They are run into the current line where you -placed them until you edit the statement again. REDUCE will -understand the set of statements if the syntax is correct. - -If you leave out needed closing brackets when you exit the editor, a -message is printed allowing you to redo the edit (you can edit the -previous line number and return to where you were). If you leave out -a closing double-quotation mark, an error message is printed, and the -editing must be redone from the original version; the edited version -has been destroyed. Most syntax errors which you inadvertently leave -in an edited statement are caught as usual by the REDUCE parser, and -you will be able to re-edit the statement. - -When the editor processes a previous statement for your editing, -escape characters are removed. Most special characters that you may -use in identifiers are printed in legal fashion, prefixed by the -exclamation point. Be sure to treat the special character and its -escape as a pair in your editing. The characters ( ) # ; ' ` are -different. Since they have special meaning in Lisp, they are -double-escaped in the editor. It is unwise to use these characters -inside identifiers anyway, due to the probability of confusion. - -If you see a Lisp error message during editing, the edit has been -aborted. Enter a semicolon and you will see a new line prompt. - -Since the editor has no dependence on any window system, it can be -used if you are running REDUCE without windows. - -\endsection -\item[EDITDEF] -EDITDEF (page 159) - -The interactive editor ED may be used to edit a user-defined -procedure that has not been compiled. - - EDITDEF(identifier) - -where identifier is the name of the procedure. When EDITDEF is -invoked, the procedure definition will be displayed in editing mode, -and may then be edited and redefined on exiting from the editor using -standard ED commands. - -\endsection -\item[END] -END (page 69) - -The command END has two main uses: - -(i) as the ending of a BEGIN...END BLOCK; and -(ii) to end input from a file. - -In a BEGIN...END BLOCK, there need not be a delimiter (; or $) before -the END, though there must be one after it, or a right bracket -matching an earlier left bracket. - -Files to be read into REDUCE should end with END;, which must be -preceded by a semicolon (usually the last character of the previous -line). The additional semicolon avoids problems with mistakes in the -files. If you have suspended file operation by answering N to a PAUSE -command, you are still, technically speaking, ``in'' the file. Use END -to exit the file. - -An END at the top level of a program is ignored. - -\endsection -\item[EPS] -EPS (pages 207, 267) - -The EPS operator denotes the completely antisymmetric tensor of -order 4 and its contraction with Lorentz four-vectors, as used in -high-energy physics calculations. - - EPS(vector-expr,vector-expr,vector-expr,vector-expr) - -vector-expr must be a valid vector expression, and may be an index. - -Examples: -vector g0,g1,g2,g3; -eps(g1,g0,g2,g3); - EPS(G0,G1,G2,G3); -eps(g1,g2,g0,g3); EPS(G0,G1,G2,G3); -eps(g1,g2,g3,g1); 0 - - -Vector identifiers are ordered alphabetically by REDUCE. When an odd -number of transpositions is required to restore the canonical order to -the four arguments of EPS, the term is ordered and carries a minus -sign. When an even number of transpositions is required, the term is -returned ordered and positive. When one of the arguments is repeated, -the value 0 is returned. A contraction of the form eps(_i j mu nu -p_mu q_nu) is represented by EPS(I,J,P,Q) when I and J have been -declared to be of type INDEX. - -\endsection -\xitem[EPS Levi-Civita tensor] -EPS - Levi-Civita tensor (page 271) - -\endsection -\item[Equation] -Equation (page 47) - -An Equation is an expression where two algebraic expressions -are connected by the (infix) operator EQUAL or by =. -For access to the components of an EQUATION the operators -LHS, RHS or PART can be used. The -evaluation of the left-hand side of an EQUATION is controlled -by the switch EVALLHSEQP, while the right-hand side is -evaluated unconditionally. When an EQUATION is part of a -logical expression, e.g. in a IF or WHILE statement, -the equation is evaluated by subtracting both sides and comparing -the result with zero. - -\endsection -\item[ERF] -ERF (page 81) - -The ERF operator represents the error function, defined by - erf(x) = (2/sqrt(pi))*int(e^(-x^2),x) - -A limited number of its properties are known to the system, including -the fact that it is an odd function. Its derivative is known, and -from this, some integrals may be computed. However, a complete -integration procedure for this operator is not currently included. - -Examples: -erf(0); 0 -erf(-a); - ERF(A) - 4*SQRT(PI)*X -df(erf(x**2),x); -------------- - 4 - X - - 2 - X - E *ERF(X)*PI*X + SQRT(PI) -int(erf(x),x); ---------------------------- - 2 - X - E *PI - -\endsection -\item[ERRCONT] -ERRCONT (page 157) - -When the ERRCONT switch is on, error conditions do not stop file -execution. Error messages will be printed whether ERRCONT is on or off. -Default is OFF. - -The table below shows REDUCE behaviour under the settings of ERRCONT and -INT : - -Behaviour in Case of Error in Files - -errcont int Behaviour when errors in files are encountered - off off Message is printed and parsing continues, but - no further statements are executed; no commands - from keyboard accepted except bye or end - off on Message is printed, and you are asked if you - wish to continue. (This is the default behaviour) - on off Message is printed, and file continues to execute - without pause - on on Message is printed, and file continues to execute - without pause - - -\endsection -\xitem[ETA(ALFA)] -ETA(ALFA) (page 379) - -\endsection -\xitem[euclidean metric] -euclidean metric (page 263) - -\endsection -\item[EULER] -EULER (pages 185, 393) - -The EULER operator returns the nth Euler number. - -EULER(integer) - -Examples: -load_package specfn; (SPECFN) -Euler 20; 370371188237525 -Euler 0; 1 - -The EULER numbers are evaluated by a recursive algorithm which makes -it hard to compute Euler numbers above say 200. - -Euler numbers appear in the coefficients of the power series -representation of 1/cos(z). - -\endsection -\item[EULERP] -Euler Polynomials (page 185) - -The EULERP operator returns the nth Euler Polynomial. - -EULERP(integer,expression) - -Examples: - load_package specfn; (SPECFN) - EulerP(2,xx); XX*(XX - 1) - EulerP(10,3); 2046 - -The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. - -\endsection -\item[Euler Numbers] -Euler Numbers (pages 185, 393) - -See EULERP. -The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. - -\endsection -\item[EVAL_MODE] -EVAL_MODE (page 191) - -The constant E is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch ROUNDED is on. - - -E may be used as an iterative variable in a FOR statement, -or as a local variable or a PROCEDURE. If E is defined as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. - -\endsection -\item[EVALLHSEQP] -EVALLHSEQP (page 47) - -Under normal circumstances, the right-hand-side of an EQUATION is evaluated -but not the left-hand-side. If both sides are to be evaluated, the switch -EVALLHSEQP should be turned on. - -\endsection -\item[EVEN] -EVEN (page 90) - - EVEN identifier{,identifier} - -This declaration is used to declare an operator even in its first -argument. Expressions involving an operator declared in this manner -are transformed if the first argument contains a minus sign. Any -other arguments are not affected. - -Examples: - even f; - f(-a) F(A) - f(-a,-b) F(A,-B) - -\endsection -\xitem[Even operator] -Even operator (page 90) - -\endsection -\item[EVENP] -EVENP (page 46) - -The EVENP logical operator returns TRUE if its argument is an even -integer, and NIL if its argument is an odd integer. An error message -is returned if its argument is not an integer. - - EVENP(integer) or EVENP integer - -integer must evaluate to an integer. - -Examples: -aa := 1782; AA := 1782 -if evenp aa then yes else no; YES -if evenp(-3) then yes else no; NO - -Although you would not ordinarily enter an expression such as the last -example above, note that the negative term must be enclosed in -parentheses to be correctly parsed. The EVENP operator can only be -used in conditional statements such as IF...THEN...ELSE or WHILE...DO. - -\endsection -\item[EXCALC] -EXCALC (pages 180, 247) - -Author: Eberhard Schruefer - -The EXCALC package is designed for easy use by all who are familiar -with the calculus of Modern Differential Geometry. The program is currently -able to handle scalar-valued exterior forms, vectors and operations between -them, as well as non-scalar valued forms (indexed forms). It is thus an ideal -tool for studying differential equations, doing calculations in general -relativity and field theories, or doing simple things such as calculating the -Laplacian of a tensor field for an arbitrary given frame. - -\endsection -\xitem[Exclamation mark] -Exclamation mark (page 33) - -\endsection -\xitem[EXCLUDE] -EXCLUDE (page 368) - -\endsection -\xitem[EXDEGREE] -EXDEGREE (page 271) - -\endsection -\xitem[EXDEGREE command] -EXDEGREE command (page 249) - -\endsection -\item[EXP] -EXP (operator and switch) (pages 76, 78, 81, 120, 124) - -The EXP operator returns E raised to the power of its argument. - - EXP(expression) or EXP simple_expression - -expression can be any valid REDUCE scalar expression. -simple_expression must be a single identifier or begin with a -prefix operator. - -Examples: - SIN X -exp(sin(x)); E - 11 -exp(11); E -on rounded; -exp sin(pi/3); 2.37744267524 - -Numeric values are returned only when ROUNDED is on. The single -letter E with the exponential operator ^ or ** may be substituted for -EXP without change of function. - -EXP switch - -When the EXP switch is on, powers and products of expressions are -expanded. Default is ON. - -Examples: 3 2 -(x+1)**3; X + 3*X + 3*X + 1 -(a + b*i)*(c + d*i); A*C + A*D*I + B*C*I - B*D -off exp; 3 -(x+1)**3; (X + 1) -(a + b*i)*(c + d*i); (A + B*I)*(C + D*I) -length((x+1)**2/(y+1)); 2 - - -Note that REDUCE knows that i^2 = -1. When EXP is off, equivalent -expressions may not simplify to the same form, although zero -expressions still simplify to zero. Several operators that expect a -polynomial argument behave differently when EXP is off, such as -LENGTH. Be cautious about leaving EXP off. - - -\endsection -\item[EXPAND_CASES] -EXPAND_CASES (page 86) - -When a ROOT_OF form in a result of SOLVE has been converted to a -ONE_OF form, EXPAND_CASES can be used to convert this into form -corresponding to the normal explicit results of SOLVE. See ROOT_OF. - -\endsection -\item[EXPANDLOGS] -EXPANDLOGS (page 77) - -In many cases it is desirable to expand product arguments of -logarithms, or collect a sum of logarithms into a single logarithm. -Since these are inverse operations, it is not possible to provide -rules for doing both at the same time and preserve the REDUCE concept -of idempotent evaluation. As an alternative, REDUCE provides two -switches EXPANDLOGS and COMBINELOGS to carry out these operations. -Both are off by default. - -Examples: - on expandlogs; - log(x*y); LOG(X) + LOG(Y) - on combinelogs; - ws; LOG(X*Y) - -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behaviour, since it may change in the next release. - -\endsection -\item[EXPINT] -EXPINT (page 76) - -The EXPINT operator represents the exponential integral defined by: - - expint(x) = int(e^x,x)/x - -A limited number of its properties are known to the system, including -its derivative. From this, some integrals may be computed. However, -a complete integration procedure for this operator is not currently -included. - -Examples: -expint(0); EXPINT(0) - 2 - X - 2*E -df(expint(x**2),x); ------- - X - X -int(expint(x),x); EXPINT(X)*X - E - -\endsection -\xitem[EXPR] -EXPR (page 196) - -\endsection -\xitem[Expression] -Expression (page 43) - -\endsection -\item[exterior calc] -exterior calculus (page 248) - -See the EXCALC package - -\endsection -\item[exterior df] -exterior differentiation (page 252) - -See the EXCALC package - -\endsection -\xitem[exterior form] -exterior form - declaration (page 249) - vector (page 249) - with indices (pages 249, 259) - -\endsection -\xitem[exterior product] -exterior product (pages 250, 269) - -\endsection -\item[EZGCD] -EZGCD (page 124) - -When EZGCD and GCD are on, greatest common divisors are -computed using the EZ GCD algorithm that uses modular arithmetic (and is -usually faster). Default is OFF. - - -As a side effect of the gcd calculation, the expressions involved are -factored, though not the heavy-duty factoring of FACTORIZE. The -EZ GCD algorithm was introduced in a paper by J. Moses and D.Y.Y. Yun in -Proceedings of the ACM, 1973, pp. 159-166. - -Note that the GCD switch must also be on for EZGCD to have -effect. - -\endsection -\item[FACTOR] -FACTOR (Declaration and Switch) (pages 101, 121, 122) - -When a kernel is declared by FACTOR, all terms involving fixed powers -of that kernel are printed as a product of the fixed powers and the -rest of the terms. - - FACTOR kernel {,kernel} - -kernel must be a Kernel. - -Examples: 2 2 2 -a := (x + y + z)**2; A := X + 2*X*Y + 2*X*Z + Y + 2*Y*Z + Z -factor y; 2 2 2 -a; Y + 2*Y*(X + Z) + X + 2*X*Z + Z -factor sin(x); 4 3 2 -c := df(sin(x)**4*x**2*z,x); C := 2*SIN(X) *X*Z + 4*SIN(X) *COS(X)*X *Z -remfac sin(x); 3 -c; 2*SIN(X) *X*Z*(2*COS(X)*X + SIN(X)) - -Use the FACTOR declaration to display variables of interest so that -you can see their powers more clearly, as shown in the example. -Remove this special treatment with the declaration REMFAC. The FACTOR -declaration is only effective when the switch PRI is on. - -The FACTOR declaration is not a factoring command; to factor -expressions use the FACTOR switch or the FACTORIZE command. - -FACTOR (switch) - -When the FACTOR switch is on, input expressions and results are -automatically factored. - -Examples: - -on factor; -aa := 3*x**3*a + 6*x**2*y*a + 3*x**3*b + 6*x**2*y*b -+ x*y*a + 2*y**2*a + x*y*b + 2*y**2*b; - 2 - AA := (A + B)*(3*X + Y)*(X + 2*Y) -off factor; -aa; - 3 2 2 3 2 2 - 3*A*X + 6*A*X *Y + A*X*Y + 2*A*Y + 3*B*X + 6*B*X *Y + B*X*Y + 2*B*Y -on factor; - 2 -ab := x**2 - 2; AB := X - 2 - -REDUCE factors univariate and multivariate polynomials with integer -coefficients, finding any factors that also have integer coefficients. -The factoring is done by reducing multivariate problems to univariate -ones with symbolic coefficients, and then solving the univariate ones -modulo small primes. The results of these calculations are merged to -determine the factors of the original polynomial. The factoriser -normally selects evaluation points and primes using a random number -generator. Thus, the detailed factoring behaviour may be different -each time any particular problem is tackled. - -When the FACTOR switch is turned on, the EXP switch is turned off, and -when the FACTOR switch is turned off, the EXP switch is turned on, -whether it was on previously or not. - -When the switch TRFAC is on, informative messages are generated at -each call to the factoriser. The TRALLFAC switch causes the -production of a more verbose trace message. It takes precedence over -TRFAC if they are both on. - -To factor a polynomial explicitly and store the results, use the operator -FACTORIZE. - -\endsection -\item[FACTORIAL] -FACTORIAL (pages 72, 174) - -FACTORIAL(expression) - -If the argument of FACTORIAL is a positive integer or zero, its -factorial is returned. Otherwise the result is expressed in terms of -the original operator. For more general operations, the GAMMA -operator is available in the SPECFN package. - -Examples: -factorial 4; 24 -factorial 30 ; 265252859812191058636308480000000 -factorial(a) ; FACTORIAL(A) - -\endsection -\item[Factorization] -Factorization (page 121) - -Operations for factorising expressions exist in REDUCE. See the -operator FACTORIZE and the switch FACTOR. - -The command FACTOR controls output format. - -\endsection -\item[FACTORIZE] -FACTORIZE (pages 121, 122) - -The FACTORIZE operator factors a given expression. - - FACTORIZE(expression) - -expression should be a polynomial, otherwise an error will result. - -Examples: - 2 2 -fff := factorize(x^3 - y^3); FFF := {X - Y,X + X*Y + Y } -fac1 := first fff; FAC1 := X - Y -factorize(x^15 - 1); {X - 1, - - 2 - X + X + 1, - - 4 3 2 - X + X + X + X + 1, - - 8 7 5 4 3 - X - X + X - X + X - X + 1} - - 8 7 5 4 3 -lastone := part(ws,length ws); lastone := x - x + x - x + x - x + 1 -setmod 2; 1 -on modular; -factorize(x^15 - 1); {X + 1, - - 2 - X + X + 1, - - 4 - X + X + 1, - - 4 3 - X + X + 1, - - 4 3 2 - X + X + X + X + 1} - -The FACTORIZE command returns the factors it finds as a LIST. You can -therefore use the usual list access methods (FIRST, SECOND, THIRD, -REST, LENGTH and PART) to extract the factors. - -If the expression given to FACTORIZE is an integer, it will be -factored into its prime components. To factor any integer factor of a -non-numerical expression, the switch IFACTOR should be turned on. Its -default is off. IFACTOR has effect only when factoring is explicitly -done by FACTORIZE, not when factoring is automatically done with the -FACTOR switch. If full factorisation is not needed the switch -LIMITEDFACTORS allows you to reduce the computing time of calls to -FACTORIZE. - -Factoring can be done in a modular domain by calling FACTORIZE when -MODULAR is on. You can set the modulus with the SETMOD command. The -last example above shows factoring modulo 2. - -For general comments on factoring, see comments under the switch -FACTOR. - -\endsection -\item[FAILHARD] -FAILHARD - -When the FAILHARD switch is on, the integration operator INT terminates -with an error message if the integral cannot be done in closed terms. -Default is off. - -Use the FAILHARD switch when you are dealing with complicated integrals -and want to know immediately if REDUCE was unable to handle them. The -integration operator sometimes returns a formal integration form that is -more complicated than the original expression, when it is unable to -complete the integration. - -\endsection -\xitem[Fast loading of code] -Fast loading of code (page 214) - -\endsection -\xitem[FDOMAIN command] -FDOMAIN command (pages 251, 271) - -\endsection -\xitem[FEXPR] -FEXPR (page 196) - -\endsection -\xitem[File handling] -File handling (page 153) - -\endsection -\item[FIRST] -FIRST (page 50) - -The FIRST operator returns the first element of a LIST. - FIRST(list) or FIRST list - -list must be a non-empty list to avoid an error message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -first alist; A -blist := {x,y,{ww,aa,qq},z}; BLIST := {X,Y,{WW,AA,QQ},Z} -first third blist; WW - -\endsection -\item[FIRSTROOT] -FIRSTROOT (page 370) - - FIRSTROOT(expression) - FIRSTROOT simple_exprerssion - -FIRSTROOT is like ROOTS but only the first root determined by ROOTS is -computed. Note that this is not in general the first root that would -be listed in ROOTS output, since the ROOTS outputs are sorted into a -canonical order. Also, in some difficult root finding cases, the -first root computed might be incorrect. - -\endsection -\item[FIX] -FIX (page 73) - FIX(expression) - -The operator FIX returns the integer part of its argument, if that -argument has a numerical value. For positive numbers, this is equivalent -to FLOOR, and, for negative numbers, CEILING. For -non-numeric arguments, the value is an expression in the original operator. - -Examples: -fix 3.4; 3 -floor 3.4; 3 -ceiling 3.4; 4 -fix(-5.2); -5 -floor(-5.2); -6 -ceiling(-5.2); -5 -fix(a); FIX(A) - -\endsection -\item[FIXP] -FIXP (page 46) - -The FIXP logical operator returns true if its argument is an integer. - - FIXP(expression) or FIXP simple_expression - -expression can be any valid REDUCE expression, simple_expression -must be a single identifier or begin with a prefix operator. - -Examples: -if fixp 1.5 then write "ok" else write "not"; not -if fixp(a) then write "ok" else write "not"; not -a := 15; A := 15 -if fixp(a) then write "ok" else write "not"; ok - -Logical operators can only be used inside conditional expressions such as -IF...THEN or WHILE...DO. - -\endsection -\item[FLOOR] -FLOOR (page 73) - - FLOOR(expression) - -This operator returns the floor (i.e., the greatest integer less than -or equal to its argument) if its argument has a numerical value. For -positive numbers, this is equivalent to FIX. For non-numeric -arguments, the value is an expression in the original operator. - -Examples: -floor 3.4; 3 -fix 3.4; 3 -floor(-5.2); -6 -fix(-5.2); -5 -floor a; FLOOR(A) - -\endsection -\item[FOR] -FOR (page 65) - -The FOR command is used for iterative loops. There are many -possible forms it can take. - - / \ - / |STEP UNTIL| \ - |:=| || -FOR| | : | | - | \ / | - |EACH IN | - \ / - - where ::= DO|PRODUCT|SUM|COLLECT|JOIN. - -var can be any valid REDUCE identifier except T or NIL, inc, start and -stop can be any expression that evaluates to a positive or negative -integer. list must be a valid LIST structure. The action taken must -be one of the actions shown above, each of which is followed by a -single REDUCE expression, statement or a GROUP (<<...>>) or BLOCK -(BEGIN...END) statement. - -Examples: -for i := 1:10 sum i; 55 -for a := -2 step 3 until 6 product a; - -8 -a := 3; A := 3 -for iter := 4:a do write iter; -m := 0; M := 0 -for s := 10 step -1 until 3 do - <>; -m; 520 - 2 2 2 -for each x in {q,r,s} sum x**2; Q + R + S - 1 1 1 -for i := 1:4 collect 1/i; {1,---,---,---} - 2 3 4 - -for i := 1:3 join list solve(x**2 + i*x + 1,x); - SQRT(3)*I - 1 - {{X=---------------, - 2 - - - (SQRT(3)*I + 1) - X=--------------------}, - 2 - - {X=-1}, - - SQRT(5) - 3 - SQRT(5) - 3 - {X=-------------,X=----------------}} - 2 2 - -The behaviour of each of the five action words follows: - - Action Word Behaviour -Keyword Argument Type Action - do statement, command, group Evaluates its argument once - or block for each iteration of the loop, - not saving results -collect expression, statement, Evaluates its argument once for - command, group, block, list each iteration of the loop, - storing the results in a list - which is returned by the for - statement when done - join list or an operator which Evaluates its argument once for - produces a list each iteration of the loop, - appending the elements in each - individual result list onto the - overall result list -product expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - multiplying the results together - and returning the overall product - sum expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - adding the results together and - returning the overall sum - -For number-driven FOR statements, if the ending limit is smaller than -the beginning limit (larger in the case of negative steps) the action -statement is not executed at all. The iterative variable is local to -the FOR statement, and does not affect the value of an identifier with -the same name. For list-driven FOR statements, if the list is empty, -the action statement is not executed, but no error occurs. - -You can use nested FOR statements, with the inner FOR statement after -the action keyword. You must make sure that your inner statement -returns an expression that the outer statement can handle. - -\endsection -\item[FORALL] -FORALL (pages 141, 142) - -See the LET construction. - -\endsection -\item[FOREACH] -FOREACH (page 57--59, 195) - -FOREACH is a synonym for the FOR EACH variant of the -FOR construct. It is designed to iterate down a list, and an -error will occur if a list is not used. The use of FOR EACH is -preferred to FOREACH. - - FOREACH variable in list action expression - where action ::= DO|PRODUCT|SUM|COLLECT|JOIN - -Example: - 2 2 2 -foreach x in {q,r,s} sum x**2; Q + R + S - -\endsection -\xitem[FORDER command] -FORDER command (pages 268, 271) - -\endsection -\item[FORT] -FORT (page 108) - -When FORT is on, output is given Fortran-compatible syntax. Default -is OFF. - -Examples: -on fort; -df(sin(7*x + y),x); ANS=7.*COS(7*X+Y) -on rounded; -b := log(sin(pi/5 + n*pi)); B=LOG(SIN(3.14159265359*N+0.628318530718)) - -REDUCE results can be written to a file (using OUT) and used as data -by Fortran programs when FORT is in effect. FORT knows about correct -statement length, continuation characters, defining a symbol when it -is first used, and other Fortran details. - -The GENTRAN package offers many more possibilities than the FORT -switch. It produces Fortran (or C or Ratfor) code from REDUCE -procedures or structured specifications, including facilities for -producing double precision output. - -\endsection -\item[FORT_WIDTH] -FORT_WIDTH (page 111) - -The FORT_WIDTH variable sets the number of characters in a line of -Fortran-compatible output produced when the FORT switch is on. -Default is 70. - -Examples: -fort_width := 30; FORT_WIDTH := 30 -on fort; -df(sin(x**3*y),x); ANS=3.*COS(X - . **3*Y)*X**2* - . Y - -FORT_WIDTH includes the usually blank characters at the beginning -of the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. - -\endsection -\item[FORTRAN] -FORTRAN (pages 108, 110) - -REDUCE can produce FORTRAN syntax printed expressions with the switch - ON FORT - -There are also two major packages concerned with generating FORTRAN, -GENTRAN and SCOPE. The first of these is an embedded language for -defining FORTRAN program fragments or program units, with parts -substituted from algebraic calculation. SCOPE is a system for -optimising the form of FORTRAN expressions, usually used in -conjunction with GENTRAN. - -\endsection -\xitem[FRAME command] -FRAME command (pages 265, 271) - -\endsection -\item[FREEOF] -FREEOF (page 46) -The FREEOF logical operator returns TRUE if its first argument does -not contain its second argument anywhere in its structure. - - FREEOF(expression,kernel) or expression FREEOF kernel - -expression can be any valid scalar REDUCE expression, kernel must -be a kernel expression (see Kernel). - -Examples: 2 -a := x + sin(y)**2 + log sin z; A := LOG(SIN(Z)) + SIN(Y) + X -if freeof(a,sin(y)) - then write "free" else write "not free"; - not free -if freeof(a,sin(x)) - then write "free" else write "not free"; - free -if a freeof sin z - then write "free" else write "not free"; - not free - -Logical operators can only be used in conditional expressions such as -IF...THEN or WHILE...DO. - -\endsection -\item[FULLPREC] -FULLPREC - -Trailing zeroes of rounded numbers to the full system precision are -normally not printed. If this information is needed, for example to get a -more understandable indication of the accuracy of certain data, the switch -FULLPREC can be turned on. - -Examples: - on rounded; - 1/2; 0.5 - on fullprec; - ws; 0.500000000000 - -This is just an output options which neither influences the accuracy -of the computation nor does it give additional information about the -precision of the results. See also SCIENTIFIC_NOTATION. - -\endsection -\item[FULLROOTS] -FULLROOTS (page 87) - -Since roots of cubic and quartic polynomials can often be very -messy, a switch FULLROOTS controls the production -of results in closed form. SOLVE will apply the -formulas for explicit forms for degrees 3 and 4 only if -FULLROOTS is ON. Otherwise the result forms -are built using ROOT_OF. Default is OFF. - -\endsection -\xitem[Function] -Function (page 175) - -\endsection -\item[G] -G (page 206) - -G is an n-ary operator used to denote a product of gamma matrices -contracted with Lorentz four-vectors, in high-energy physics. - G(identifier,vector-expr -{,vector-expr}) - -identifier is a scalar identifier representing a fermion line -identifier, vector-expr can be any valid vector expression, -representing a vector or a gamma matrix. - -Examples: -vector aa,bb,cc; -vector a; -g(line1,aa,bb); AA.BB -g(line2,aa,a); 0 -g(id,aa,bb,cc); 0 -g(li1,aa,bb) + k; AA.BB + K -let aa.bb = m*k; -g(ln1,aa)*g(ln1,bb); K*M -g(ln1,aa)*g(ln2,bb); 0 - -The vector A is reserved in arguments of G to denote the special gamma -matrix gamma_5. It must be declared to be a vector before you use it. - -Gamma matrix expressions are associated with fermion lines in a -Feynman diagram. If more than one line occurs in an expression, the -gamma matrices involved are separate (operating in independent spin -space), as shown in the last two example lines above. A product of -gamma matrices associated with a single line can be entered either as -a single G command with several vector arguments, or as products of -separate G commands each with a single argument. - -While the product of vectors is not defined, the product, sum and -difference of several gamma expressions are defined, as is the product -of a gamma expression with a scalar. If an expression involving gamma -matrices includes a scalar, the scalar is treated as if it were the -product of itself with a unit 4 x 4 matrix. - -Dirac expressions are evaluated by computing the trace of the -expression using the commutation algebra of gamma matrices. The -algorithms used are described in articles by J. S. R. Chisholm in Il -Nuovo Cimento X, Vol. 30, p. 426, 1963, and J. Kahane, Journal of -Mathematical Physics, Vol. 9, p. 1732, 1968. The trace is then -divided by 4 to distinguish between the trace of a scalar and the -trace of an expression that is the product of a scalar with a unit 4 x -4 matrix. - -Trace calculations may be prevented over any line identifier by -declaring it to be NOSPUR. If it is later desired to evaluate these -traces, the declaration can be undone with the SPUR declaration. - -The notation of Bjorken and Drell, Relativistic Quantum Mechanics, -1964, is assumed in all operations involving gamma matrices. For an -example of the use of G in a calculation, see the REDUCE -User's Manual. - -\endsection -\item[GAMMA] -GAMMA (pages 185, 394) - -The GAMMA operator returns the Gamma function. - - GAMMA(expression) - -Examples: - load_package specfn; (SPECFN) - gamma(10); 362880 - gamma(1/2); SQRT(PI) - -\endsection -\item[Gamma Function] -Gamma Function (pages 185, 394) - -See GAMMA. - -\endsection -\item[GC] -GC - -With the GC switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. - -See RECLAIM for an explanation of garbage collection. REDUCE does -garbage collection when needed even if you have turned the notices off. - -\endsection -\item[GCD] -GCD (operator and switch) (pages 123, 124) - -The GCD operator returns the greatest common divisor of two -polynomials. - - GCD(expression,expression) - -expression must be a polynomial (or integer), otherwise an error -occurs. - -Examples: -gcd(2*x**2 - 2*y**2,4*x + 4*y); 2*(X + Y) -gcd(sin(x),x**2 + 1); 1 -gcd(765,68); 17 - -The operator GCD described here provides an explicit means to find the -gcd of two expressions. The switch GCD described below simplifies -expressions by finding and cancelling gcd's at every opportunity. When -the switch EZGCD is also on, gcd's are figured using the EZ GCD -algorithm, which is usually faster. - -GCD switch - -With the GC switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. - - -See RECLAIM for an explanation of garbage collection. REDUCE does -garbage collection when needed even if you have turned the notices off. - -\endsection -\item[GDIMENSION] -GDIMENSION (page 300) - - GDIMENSION(bas[,vars]) - -where bas is a GROEBNER basis in the current term order which must be -LEX term order (see IDEAL parameters). GDIMENSION computes the -dimension of the ideal spanned by the given basis. - -GDIMENSION cannot be called with other TERM orders. - -\endsection -\item[GEGENBAUERP] -GEGENBAUERP (page 185) - -The GEGENBAUERP operator computes Gegenbauer's (ultraspherical) -polynomials. - - GEGENBAUERP(integer,expression,expression) - -Examples: - load_package specfn; (SPECFN) - 2 - GegenbauerP(3,2,xx); 4*XX*(8*XX - 3) - - GegenbauerP(3,2,4); 2000 - -\endsection -\xitem[GEN(I)] -GEN(I) (page 379) - -\endsection -\xitem[Generalized Hypergeometric functions] -Generalized Hypergeometric functions (page 187) - -\endsection -\item[GENTRAN] -GENTRAN (page 180) - -Author: Barbara L. Gates - -This package is an automatic code GENerator and TRANslator. It constructs -complete numerical programs based on sets of algorithmic specifications and -symbolic expressions. Formatted FORTRAN, RATFOR or C code can be generated -through a series of interactive commands or under the control of a template -processing routine. Large expressions can be automatically segmented into -subexpressions of manageable size, and a special file-handling mechanism -maintains stacks of open I/O channels to allow output to be sent to any -number of files simultaneously and to facilitate recursive invocation of the -whole code generation process. - -\endsection -\xitem[GETCSYSTEM command] -GETCSYSTEM command (page 235) - -\endsection -\xitem[GETROOT] -GETROOT (page 370) - -\endsection -\xitem[GFNEWT] -GFNEWT (page 371) - -\endsection -\xitem[GFROOT] -GFROOT (page 371) - -\endsection -\item[GINDEPENDENT_SETS] -GINDEPENDENT_SETS (page 300) - - GINDEPENDENT_SETS(bas[,vars]) - -where bas is a GROEBNER basis in LEX term order (which must be the -current TERM order) with the specified variables (see IDEAL -parameters). - -GINDEPENDENT_SETS computes the maximal left independent variable sets -of the ideal, that are the variable sets which play the role of free -parameters in the current ideal basis. Each set is a list which is a -subset of the variable list. The result is a list of these sets. For -an ideal with dimension zero the list is empty. The -Kredel-Weispfenning algorithm is used. - -The operator cannot be called under another TERM order. - -\endsection -\xitem[GL(I)] -GL(I) (page 379) - -\endsection -\item[GLEXCONVERT] -GLEXCONVERT (page 300) - - GLEXCONVERT(bas[,vars][,MAXDEG=mx][,NEWVARS=nv]) - -where bas is a GROEBNER basis in the current term order, mx (optional) -is a positive integer and nvl (optional) is a list of variables (see -IDEAL parameters). - -The operator GLEXCONVERT converts the basis of a zero-dimensional -ideal (finite number of isolated solutions) from arbitrary ordering -into a basis under LEX term order. - -The parameter newvars defines the new variable sequence. If omitted, -the original variable sequence is used. If only a subset of variables -is specified here, the partial ideal basis is evaluated. - -If newvars is a list with one element, the minimal UNIVARIATE -polynomial is computed. - -maxdeg is an upper limit for the degrees. The algorithm stops with an -error message, if this limit is reached. - -A warning occurs, if the ideal is not zero dimensional. - -During the call the TERM order of the input basis must be active. - -\endsection -\item[GLTBASIS] -GLTBASIS (pages 299, 303) - -If GLTBASIS set on, the leading terms of the result basis of a -GROEBNER or GROEBNERF calculation are extracted. They are collected as -a basis of monomials, which is available as value of the global -variable GLTB. - -\endsection -\xitem[GNUPLOT] -GNUPLOT (page 181) - -\endsection -\xitem[GO TO] -GO TO (page 63) - -\endsection -\item[GosperAlg] -Gosper's Algorithm (page 403) - -See SUM and PROD. - -\endsection -\xitem[GRAD operator] -GRAD - operator (page 234) - -\endsection -\xitem[grad operator] -grad operator (page 358) - -\endsection -\xitem[gradient vector field] -gradient - vector field (page 234) - -\endsection -\item[GRADLEX] -GRADLEX (page 293) - -The terms are ordered first with their total degree, and if the total -degree is identical the comparison is LEX term order. With Groebner -basis calculations this term order produces polynomials of lowest -degree. - -\endsection -\item[GRADLEXGRADLEX] -GRADLEXGRADLEX - -The terms are separated into two groups where the second parameter of -the TORDER call determines the length of the first group. For a -comparison first the total degrees of both variable groups are -compared. If both are equal GRADLEX term order comparison is applied -to the first group, and if that does not decide GRADLEX term order is -applied for the second group. This order has the elimination property -for the variable groups. It can be used e.g. for separating variables -from parameters. The terms are ordered first with their total degree, -and if the total degree is identical the comparison is LEX term order. -With Groebner basis calculations this term order produces polynomials -of lowest degree. - -\endsection -\item[GREDUCE] -GREDUCE (page 307) - - GREDUCE(exp, exp1, exp2, ... , expm}[,vars]) - -where exp is an expression, and {exp1, exp2, ... , expm} is a list of -expressions or equations and vars is an optional list of variables -(see IDEAL parameters). - -GREDUCE is functionally equivalent with a call to GROEBNER and then a -call to PREDUCE. - -\endsection -\item[GROEBFULLREDUCTION] -GROEBFULLREDUCTION (page 298) - -If GROEBFULLREDUCTION set off, the polynomial reduction steps during -GROEBNER and GROEBNERF are limited to the pure head term reduction; -subsequent terms are reduced otherwise. - -By default GROEBFULLREDUCTION is on. - -\endsection -\item[GROEBMONFAC] -GROEBMONFAC (page 304) - -The variable GROEBMONFAC is connected to the handling of monomial -factors. A monomial factor is a product of variable powers as a -factor, e.g. x**2*y in x**3*y - 2*x**2*y**2. A monomial factor -represents a solution of the type x = 0 or y = 0 with a certain -multiplicity. With GROEBNERF the multiplicity of monomial factors is -lowered to the value of the shared variable GROEBMONFAC which by -default is 1 (= monomial factors remain present, but their -multiplicity is brought down). With GROEBMONFAC:= 0 the monomial -factors are suppressed completely. - -\endsection -\item[GROEBNER] -GROEBNER (pages 181, 296) - - GROEBNER({exp, ...}[,{var, ...}]) - -where {exp, ... } is a list of expressions or equations, {var, ... } -is an optional list of variables (see IDEAL PARAMETERS). - -The operator GROEBNER implements the Buchberger algorithm for -computing Groebner bases for a given set of expressions with respect -to the given set of variables in the order given. As a side effect, -the sequence of variables is stored as a REDUCE list in the shared -variable GVARSLAST - this is important in cases where the algorithm -rearranges the variable sequence because GROEBOPT is ON. - -Example: - - groebner({x**2+y**2-1,x-y}) {X - Y,2*Y**2 -1} - -See also GROEBNERF, GVARSLAST, GROEBOPT, GROEBPREREDUCE, -GROEBFULLREDUCTION, GLTBASIS, GLTB, GLTERMS, GROEBSTAT, TRGROEB, -TRGROEBS, GROEBPROT, GROEBPROTFILE, GROEBNERT. - -\endsection -\item[Groebner_Bases] -Groebner Bases (page 291) - -The GROEBNER package calculates Groebner bases using the Buchberger -algorithm and provides related algorithms for arithmetic with ideal -bases, such as ideal quotients, Hilbert polynomials, basis conversion, -independent variable set. - -Some routines of the Groebner package are used by SOLVE -- in -that context the package is loaded automatically. However, if you -want to use the package by explict calls you must load it by - - load_package groebner; - -For the common parameter setting of most operators in this package -see IDEAL PARAMETERS. - -\endsection -\item[GROEBNERF] -GROEBNERF (pages 302, 304, 318) - - GROEBNERF({exp, ...}[,{var, ...}] [,{nz, ... }]); - -where {exp, ... } is a list of expressions or equations, {var, ...} is -an optional list of variables (see IDEAL parameters) and {nz,... } is -an optional list of polynomials to be considered as non zero for this -calculation. - -GROEBNERF tries to separate polynomials into individual factors and to -branch the computation in a recursive manner (factorization tree). -The result is a list of partial Groebner bases. Multiplicities (one -factor with a higher power, the same partial basis twice) are deleted -as early as possible in order to speed up the calculation. - -The third parameter of GROEBNERF declares some polynomials -nonzero. If any of these is found in a branch of the calculation -the branch is canceled. - -Example: - -groebnerf({ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3, - 2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3, - x**3*y+x**2*y+3*x**3+2*x**2 }, {y,x}); - - {{Y - 3,X}, - - 2 - {2*Y + 2*X - 1,2*X - 5*X - 5}} - -See also GROEBRESMAX, GROEBMONFAC, GROEBRESTRICTION, GROEBNER, -GVARSLAST, GROEBOPT, GROEBPREREDUCE, GROEBFULLREDUCTION, GLTBASIS, -GLTB, GLTERMS, GROEBSTAT, TRGROEB, TRGROEBS, GROEBNERT. - -\endsection -\item[GROEBNERT] -GROEBNERT (page 311) - - GROEBNERT(v}=exp,...}[,vars]) - -where v are KERNELS (simple or indexed variables), exp are polynomials -and optional vars are variables (see IDEAL parameters). - -GROEBNERT is functionally equivalent to a GROEBNER call for {exp,...}, -but the result is a set of equations where the left-hand sides are the -basis elements while the right-hand sides are the same values -expressed as combinations of the input formulas, expressed in terms of -the names v. - -Example: - - groebnert({p1=2*x**2+4*y**2-100,p2=2*x-y+1}); - - GB1 := {2*X - Y + 1=P2, - - 2 - 9*Y - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2} - - -\endsection -\item[GROEBOPT] -GROEBOPT (pages 298, 303) - -If GROEBOPT is set ON, the sequence of variables is optimized with -respect to execution speed of GROEBNER calculations; note that the -final list of variables is available in GVARSLAST. By default -GROEBOPT is off, conserving the original variable sequence. - -An explicitly declared dependency using the DEPEND declaration -superseeds the variable optimization. - -Example: - - depend a, x, y; - -guarantees that a will be placed in front of x and y. - -\endsection -\item[GROEBPREREDUCE] -GROEBPREREDUCE (pages 298, 303) - -If GROEBPREREDUCE set ON, GROEBNER and GROEBNERF try to simplify the -input expressions: if the head term of an input expression is a -multiple of the head term of another expression, it can be reduced; -these reductions are done cyclicly as long as possible in order to -shorten the main part of the algorithm. - -By default GROEBPREREDUCE is off. - -\endsection -\item[GROEBPROT] -GROEBPROT (page 309) - -If GROEBPROT is ON the computation steps during PREDUCE, GREDUCE and -GROEBNER are collected in a list which is assigned to the variable -GROEBPROTFILE. - -\endsection -\item[GROEBPROTFILE] -GROEBPROTFILE (page 309) - -If GROEBPROT is ON the computation steps during PREDUCE, GREDUCE and -GROEBNER are collected in a list which is assigned to the variable -GROEBPROTFILE. - -\endsection -\xitem[GROEBRES] -GROEBRES (page 304) - -\endsection -\item[GROEBRESMAX] -GROEBRESMAX (page 305) - -The variable GROEBRESMAX controls during GROEBNERF calculations the -number of partial results. Its default value is 300. If more partial -results are calculated, the calculation is terminated. - -\endsection -\item[GROEBRESTRICTION] -GROEBRESTRICTION (page 306) - -During GROEBNERF calculations irrelevant branches can be excluded by -setting the variable GROEBRESTRICTION. The following restrictions are -implemented: - - GROEBRESTRICTION := NONNEGATIVE - GROEBRESTRICTION := POSITIVE - -With NONNEGATIVE branches are excluded where one polynomial has no -nonnegative real zeros; with POSITIVE the restriction is sharpened to -positive zeros only. - -\endsection -\item[GROEBSTAT] -GROEBSTAT (pages 299, 303) - -If GROEBSTAT is on, a summary of the GROEBNER or GROEBNERF computation -is printed at the end including the computing time, the number of -intermediate H polynomials and the counters for the criteria hits. - -\endsection -\xitem[GROEPOSTPROC] -GROEPOSTPROC (page 319) - -\endsection -\xitem[GROESOLVE] -GROESOLVE (page 318) - -\endsection -\xitem[Group statement] -Group statement (pages 55, 56, 61) - -\endsection -\xitem[grouped ordering] -grouped ordering (page 315) - -\endsection -\item[GSORT] -GSORT (page 322) - - GSORT(p[,vars]) - -where p is a polynomial or a list of polynomials, vars in an optional -list of variables (see IDEAL parameters). - -The polynomials are reordered and sorted corresponding to the current -TERM order. - -Example: - - torder lex; - 2 2 - gsort(x**2+2x*y+y**2,{y,x}); {Y + 2 * Y * X + X } - -\endsection -\item[GSPLIT] -GSPLIT (page 323) - - GSPLIT(p[,vars]); - -where p is a polynomial or a list of polynomials, vars in an optional -list of variables (see IDEAL parameters). - -The polynomial is reordered corresponding to the the current TERM -order and then separated into leading term and reductum. Result is a -list with the leading term as first and the reductum as second -element. - -Example: - - torder lex; - 2 2 - gsplit(x**2+2x*y+y**2,{y,x}); {Y , 2*Y*X + X } - -\endsection -\item[GSPOLY] -GSPOLY (page 324) - - GSPOLY(p1,p2[,vars]); - -where p1 and p2 are polynomials, vars in an optional list of variables -(see IDEAL parameters). - -The SUBTRACTION polynomial of p1 and p2 is computed corresponding to -the method of the Buchberger algorithm for computing GROEBNER bases: -p1 and p2 are multiplied with terms such that when subtracting them -the leading terms cancel each other. - -\endsection -\item[GVARS] -GVARS (page 296) - - GVARS({exp,exp,... }) - - where exp are expressions or equations. - -GVARS extracts from the expressions the KERNELs which can -play the role of variables for a GROEBNER or GROEBNERF calculation. - -\endsection -\item[GVARSLAST] -GVARSLAST (page 298) - -After a GROEBNER or GROEBNERF calculation the actual variable sequence -is stored in the variable GVARSLAST. If GROEBOPT is ON, GVARSLAST -shows the variable sequence after reordering. - -\endsection -\item[GZERODIM?] -GZERODIM? (page 299) - - GZERODIM!?(basis[,vars]) - -where basis is a Groebner basis in the current -TERM order with the specified variables (see IDEAL parameters). - -GZERODIM!? tests whether the ideal spanned by the given basis -has dimension zero. If yes, the number of zeros is returned, -NIL otherwise. - -\endsection -\item[Hankel Functions] -Hankel Functions (pages 185, 396) - -Part of the SPECFN package. See HANKEL1 and HANKEL2. - -\endsection -\item[HANKEL1] -HANKEL1 (pages 185, 396) - -The HANKEL1 operator returns the Hankel function of the first kind. - -HANKEL1(order,argument) - -Examples: - load_package specfn; (SPECFN) - Hankel1 (1/2,pi); - SQRT(2) / PI - on rounded; - Hankel1 (1,3); 0.324674424792 - -The operator HANKEL1 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. - -\endsection -\item[HANKEL2] -HANKEL2 (pages 185, 396) - -The HANKEL2 operator returns the Hankel function of the second kind. - - HANKEL2(order,argument) - -Examples: - load_package specfn; (SPECFN) - Hankel2 (1/2,pi); - SQRT(2) / PI - on rounded; - Hankel2 (1,3); 0.324674424792 - -The operator HANKEL2 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. - -\endsection -\item[HERMITEP] -HERMITEP (page 185) - -The HERMITEP operator returns the nth Hermite Polynomial. - - HERMITEP(integer,expression) - -Examples: - load_package specfn; (SPECFN) - 2 - HermiteP(3,xx); 4*XX*(2*XX - 3) - HermiteP(3,4); 464 - -Hermite polynomials are computed using the recurrence relation: - -HermiteP(n,x) := 2x*HermiteP(n-1,x) - 2*(n-1)*HermiteP(n-2,x) with -HermiteP(0,x) := 1 and HermiteP(1,x) := 2x - -\endsection -\xitem[HFACTORS scale factors] -HFACTORS scale factors (page 234) - -\endsection -\xitem[High energy trace] -High energy trace (page 209) - -\endsection -\item[HIGH_POW] -HIGH_POW (page 115) - -The variable HIGH_POW is set by COEFF to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -Examples: -coeff((x+1)^5*(x*(y+3)^2)^2,x); {0, - - 0, - - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81, - - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81} - -high_pow; 7 - -\endsection -\xitem[HIGHESTDERIV] -HIGHESTDERIV (page 350) - -\endsection -\item[HILBERTPOLYNOMIAL] -HILBERTPOLYNOMIAL (page 321) - - HILBERTPOLYNOMIAL(bas,[vars]) - -where bas is a GROEBNER basis in the current TERM order and vars is an -optional variable list(see IDEAL parameters). - -The degree of the HILBERT polynomial is the dimension of the ideal -spanned by the basis. For an ideal of dimension zero the Hilbert -polynomial is a constant which is the number of common zeros of the -ideal (including eventual multiplicities). The HOLLMANN algorithm is -used. - -\endsection -\xitem[History] -History (page 158) - -\endsection -\xitem[Hodge-* duality operator] -Hodge-* duality operator (pages 256, 266) - -\endsection -\item[HORNER] -HORNER - -When the HORNER switch is on, polynomial expressions are printed -in Horner's form for faster and safer numerical evaluation. Default -is OFF. The leading variable of the expression is selected as -Horner variable. To select the Horner variable explicitly use the -KORDER declaration. - -Examples: -on horner; 3 2 -(13p-4q)^3; ( - 64)*Q + P*(624*Q + P*(( - 2028)*Q + P*2197)) -korder q; - 3 2 -ws; 2197*P + Q*(( - 2028)*P + Q*(624*P + Q*(-64))) - -\endsection -\xitem[HYPERGEOMETRIC] -Hypergeometric Functions (page 397) - -The HYPERGEOMETRIC operator provides simplifications for the -generalised hypergeometric functions. -The HYPERGEOMETRIC operator is included in the package specfn2. - - HYPERGEOMETRIC(list_of_parameters,list_of_parameters,argument) - -Examples: -load_package specfn; (SPECFN) -hypergeometric ({1/2,1},{3/2},-x^2); \rfrac{atan(x)}{x} -hypergeometric ({},{},z); e^z - -The special case with length of the first list equals 2 and -length of the second list equals 1 is often called "hypergeometric function". - -\endsection -\item[HYPOT] -HYPOT (pages 76, 78) - - HYPOT(expression,expression) - -If ROUNDED is on, and the two arguments evaluate to numbers, this -operator returns the square root of the sums of the squares of the -arguments in a manner that avoids intermediate overflow. In other cases, -an expression in the original operator is returned. - -Examples: -hypot(3,4); HYPOT(3,4) -on rounded; -ws; 5.0 -hypot(a,b); HYPOT(A,B) - -\endsection -\item[I] -I (page 36) - -REDUCE knows I is the square root of -1, and that i^2 = -1. - -Examples: -(a + b*i)*(c + d*i); A*C + A*D*I + B*C*I - B*D -i**2; -1 - -I cannot be used as an identifier. It is all right to use I as an -index variable in a FOR loop, or as a local (SCALAR) variable inside a -BEGIN...END block, but it loses its definition as the square root of --1 inside the block in that case. - -Only the simplest properties of i are known by REDUCE unless the -switch COMPLEX is turned on, which implements full complex arithmetic -in factoring, simplification, and functional values. COMPLEX is -ordinarily off. - -\endsection -\xitem[i] -i (page 223) - -\endsection -\xitem[ideal dimension] -ideal dimension (page 300) - -\endsection -\item[IDEAL PARAMETERS] -IDEAL PARAMETERS - -Most operators of the Groebner package compute expressions in a -polynomial ring which given as R[var,var,...] where R is the current -REDUCE coefficient domain. All algebraically exact domains of REDUCE -are supported. The package can operate over rings and fields. The -operation mode is distinguished automatically. In general the ring -mode is a bit faster than the field mode. The factoring variant can -be applied only over domains which allow you factoring of multivariate -polynomials. - -The variable sequence var is either given explicitly as argument in -form of a list, or it is extracted automatically from the -expressions. In the second case the current REDUCE system order is -used (see KORDER) for arranging the variables. If some kernels should -play the role of formal parameters (the ground domain R then is the -polynomial ring over these), the variable sequences must be given -explicitly. - -All REDUCE kernels can be used as variables. But please note, that -all variables are considered as independent; e.g. when using SIN(A) -and COS(A) as variables, the basic relation SIN(A)^2+COS(A)^2-1=0 must -be explicitly added to an equation set because the Groebner operators -do not include such knowledge automatically. - -The terms (monomials) in polynomials are arranged according to the -current TERM ORDER. Note that the algebraic properties of the -computed results only are valid as long as neither the ordering nor -the variable sequence changes. - -The input expressions exp can be polynomials P, rational functions N/D -or equations LH=RH built from polynomials or rational functions. -Apart from the tracing algorithms GROEBNERT and PREDUCET, where the -equations have a specific meaning, equations are converted to simple -expressions by taking the difference of the left-hand and right-hand -sides LH-RH=>P. Rational functions are converted to polynomials by -converting the expression to a common denominator form first, and then -using the numerator only N=>P. So eventual zeros of the denominators -are ignored. - -A basis on input or output of an algorithm is coded as a list -of expressions {exp,exp,...}. - -\endsection -\item[IDEALQUOTIENT] -IDEALQUOTIENT (page 320) - - IDEALQUOTIENT({exp, ...}, d [,{var, ...}]) - -where {exp,...} is a list of expressions or equations, d is a single -expression or equation and {var,...} is an optional list of variables -(see IDEAL parameters). - -IDEALQUOTIENT computes the ideal quotient: ideal spanned by the -expressions {exp,...} divided by the single polynomial/expression -f. The result is the GROEBNER basis of the quotient ideal. - -\endsection -\item[Identifier] -Identifier (page 35) - -Identifiers in REDUCE consist of one or more alphanumeric characters, -of which the first must be alphabetical. The maximum number of -characters allowed is system dependent, but is usually over 100. -However, printing is simplified if they are kept under 25 characters. - -You can also use special characters in your identifiers, but each must be -preceded by an exclamation point ! as an escape character. Useful -special characters are # $ % ^ & * - + = ? < > ~ | / ! and -the space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore _ is special in this regard. It must be preceded -by an escape character in the first position in an identifier, but is -treated like a normal letter within an identifier. - -Other characters, such as ( ) # ; ` ' " can also be used if preceded -by a !, but as they have special meanings to the Lisp reader it is -best to avoid them to avoid confusion. - -Many system identifiers have * before or after their names, or - -between words. If you accidentally pick one of these names for your -own identifier, it could have disastrous effects. For this reason it -is wise not to include * or - anywhere in your identifiers. - -You will notice that REDUCE does not use the escape characters when it -prints identifiers containing special characters; however, you still -must use them when you refer to these identifiers. Be careful when -editing statements containing escaped special characters to treat the -character and its escape as an inseparable pair. - -Identifiers are used for variable names, labels for GO TO statements, -and names of arrays, matrices, operators, and procedures. Once an -identifier is used as a matrix, array, scalar or operator identifier, -it may not be used again as a matrix, array or operator. An operator -or array identifier may later be used as a scalar without problems, -but a matrix identifier cannot be used as a scalar. All procedures -are entered into the system as operators, so the name of a procedure -may not be used as a matrix, array, or operator identifier either. - -\endsection -\item[IF] -IF (pages 55, 56) - -The IF command is a conditional statement that executes a statement -if a condition is true, and optionally another statement if it is not. - - IF condition THEN statement {ELSE statement} - -condition must be a logical or comparison operator that evaluates to -true or false. statement must be a single REDUCE statement or a GROUP -(<<...>>) or BLOCK (BEGIN...END) statement. - -Examples: -if x = 5 then a := b+c else a := d+f; D + F -x := 9; X := 9 -if numberp x and x<20 then y := sqrt(x) else write "illegal"; 3 -clear x; -if numberp x and x<20 then y := sqrt(x) else write "illegal"; illegal -x := 12; X := 12 -a := if x < 5 then 100 else 150; A := 150 -b := u**(if x < 10 then 2); B := 1 - 2 -bb := u**(if x > 10 then 2); BB := U - -An IF statement may be used inside an assignment statement and sets -its value depending on the conditions, or used anywhere else an -expression would be valid, as shown in the last example. If there is -no ELSE clause, the value is 0 if a number is expected, and nothing -otherwise. - -The ELSE clause may be left out if no action is to be taken if the -condition is false. - -The condition may be a compound conditional statement using AND or -OR. If a non-conditional statement, such as a constant, is used by -accident, it is assumed to have value true. - -Be sure to use GROUP or BLOCK statements after THEN or ELSE. - -The IF operator is right associative. The following constructions are -examples: - -(1) - IF condition THEN IF condition THEN action ELSE action - -which is equivalent to - IF condition THEN (IF condition THEN action ELSE action); - -(2) IF condition THEN action ELSE IF condition THEN action ELSE action -which is equivalent to - IF condition THEN action ELSE - (IF condition THEN action ELSE action). - -\endsection -\item[IFACTOR] -IFACTOR (page 121) - -When the IFACTOR switch is on, any integer terms appearing as a result -of the FACTORIZE command are factored themselves into primes. Default -is OFF. If the argument of FACTORIZE is an integer, -IFACTOR has no effect, since the integer is always factored. - -Examples: -factorize(4*x**2 + 28*x + 48); {4,X + 3,X + 4} -factorize(22587); {3,7529} -on ifactor; -factorize(4*x**2 + 28*x + 48); {2,2,X + 4,X + 3} -factorize(22587); {3,7529} - -Constant terms that appear within nonconstant polynomial factors are -not factored. - -The IFACTOR switch affects only factoring done specifically with -FACTORIZE, not on factoring done automatically when the FACTOR switch -is on. - -\endsection -\xitem[imaginary unit] -imaginary unit (page 223) - -\endsection -\item[IMPART] -IMPART (pages 72, 73, 75) - - IMPART(expression) or IMPART simple_expression - -This operator returns the imaginary part of an expression, if that -argument has an numerical value. A non-numerical argument is returned -as an expression in the operators REPART and IMPART. - -Examples: -impart(1+i); 1 -impart(a+i*b); REPART(B) + IMPART(A) - -\endsection -\item[IN] -IN (page 153) - -The IN command takes a list of file names and inputs each file into -the system. - IN filename{,filename} - -filename must be in the current directory, or be a valid pathname. -If the file name is not an identifier, double quote marks (") are -needed around the file name. - - -A message is given if the file cannot be found, or has a mistake -in it. - -Ending the command with a semicolon causes the file to be echoed to the -screen; ending it with a dollar sign does not echo the file. If you want -some but not all of a file echoed, turn the switch ECHO on or off -in the file. - -An efficient way to develop procedures in REDUCE is to write them into a file -using a system editor of your choice, and then input the -files into an active REDUCE session. REDUCE reparses the procedure as -it takes information from the file, overwriting the previous procedure -definition. When it accepts the procedure, it echoes its name to the screen. -Data can also be input to the system from files. - -Files to be read in should always end in END; to avoid -end-of-file problems. Note that this is an additional END; to any -ending procedures in the file. - -\endsection -\item[Indefinite integration] -Indefinite integration (page 80) - -See the INT operator. - -\endsection -\xitem[independent sets] -independent sets (page 300) - -\endsection -\item[INDEX] -INDEX (page 206) - -The declaration INDEX flags a four-vector as an index for subsequent -high-energy physics calculations. - INDEX vector-id{,vector-id} - -vector-id must have been declared of type VECTOR. - -Examples: -vector aa,bb,cc; -index uu; -let aa.bb = 0; -(aa.uu)*(bb.uu); 0 -(aa.uu)*(cc.uu); AA.CC - -Index variables are used to represent contraction over components of -vectors when scalar products are taken by the . operator, as well as -indicating contraction for the EPS operator or metric tensor. - -The special status of a vector as an index can be revoked with the -declaration REMIND. The object remains a vector, however. - -\endsection -\xitem[INDEX_SYMMETRIES command] -INDEX_SYMMETRIES command (page 271) - -\endsection -\xitem[INDEXRANGE command] -INDEXRANGE command (page 271) - -\endsection -\xitem[INDEXSYMMETRIES command] -INDEXSYMMETRIES command (page 262) - -\endsection -\item[INFINITY] -INFINITY (pages 37, 368) - -The name INFINITY is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator reflects -finite arithmetic, rather than true operations on infinity. - -\endsection -\item[INFIX] -INFIX (page 94) - -INFIX declares identifiers to be infix operators. - - INFIX identifier {,identifier} - -identifier can be any valid REDUCE identifier, which has not already -been declared an operator, array or matrix, and is not reserved by the -system. - -Examples: -infix aa; -for all x,y let aa(x,y) = cos(x)*cos(y) - sin(x)*sin(y); -x aa y; COS(X)*COS(Y) - SIN(X)*SIN(Y) - - SQRT(3) -pi/3 aa pi/2; ------------ - 2 -aa(pi,pi); 1 - -A LET statement must be used to attach functionality to the operator. -Note that the operator is defined in prefix form in the LET statement. -After its definition, the operator may be used in either prefix or infix -mode. The above operator aa finds the cosine of the sum of two angles by -the formula - cos(x+y) = cos(x)*cos(y) - sin(x)*sin(y). -Precedence may be attached to infix operators with the PRECEDENCE declaration. - -User-defined infix operators may be used in prefix form. If they are used -in infix form, a space must be left on each side of the operator to avoid -ambiguity. Infix operators are always binary. - -\endsection -\xitem[Infix operator] -Infix operator (pages 38--41) - -\endsection -\xitem[inner product] -inner product (page 357) - -\endsection -\xitem[inner product exterior form] -inner product - exterior form (page 254) - -\endsection -\item[INPUT] -INPUT (page 158) - -The INPUT command returns the input expression to the REDUCE numbered -prompt that is its argument. - INPUT(number) or INPUT number - - -number must be between 1 and the current REDUCE prompt number. - -An expression brought back by INPUT can be re-executed with new -values or switch settings, or used as an argument in another expression. -The command WS brings back the results of a numbered REDUCE -statement. Two lists contain every input and every output statement since -the beginning of the session. If your session is very long, storage space -begins to fill up with these expressions, so it is a good idea to end the -session once in a while, saving needed expressions to files with the -SAVEAS and OUT commands. - -Switch settings and LET statements can also be re-executed by using -INPUT. - -An error message is given if a number is called for that has not yet been used. - -\endsection -\xitem[Input] -Input (page 153) - -\endsection -\xitem[Instant evaluation] -Instant evaluation (pages 68, 117, 140, 162, 164) - -\endsection -\item[INT] -INT (operator and switch) (pages 80, 160) - -The INT operator performs analytic integration on a variety of -functions. - - INT(expression,kernel) - -expression can be any scalar expression. involving polynomials, log -functions, exponential functions, or tangent or arctangent -expressions. INT attempts expressions involving error functions, -dilogarithms and other trigonometric expressions. Integrals involving -algebraic extensions (such as square roots) may not succeed. kernel -must be a REDUCE KERNEL. - -Examples: - 3 - X*(X + 12) -int(x**3 + 3,x); ------------- - 4 - - 2*X - E *( - COS(X) + 2*SIN(x)) -int(sin(x)*exp(2*x),x); ----------------------------- - 5 - - SQRT(2)*(LOG( - SQRT(2) + X) - LOG(SQRT(2) + X)) -int(1/(x^2-2),x); -------------------------------------------------- - 4 - - COS(X) - - ATAN(--------) - 2 -int(sin(x)/(4 + cos(x)**2),x); ------------------- - 2 - - SQRT(x - 1) -int(1/sqrt(x^2-x),x); INT(---------------------,X) - SQRT(X)*X - SQRT(X) - -Note that REDUCE could not handle the last integral with its default -integrator, since the integrand involves a square root. However, the -integral can be found using the ALGINT package. Alternatively, you -could add a rule using the LET statement to evaluate this integral. - -The arbitrary constant of integration is not shown. Definite -integrals can be found by evaluating the result at the limits of -integration (use ROUNDED) and subtracting the lower from the higher. -Evaluation can be easily done by the SUB operator. - -When INT cannot find an integral it returns an expression involving -formal INT expressions unless the switch FAILHARD has been set. If not -all of the expression can be integrated, the switch NOLNR controls -whether a partially integrated result should be returned or not. - -INT switch - -The INT switch specifies an interactive mode of operation. Default -ON. - - -There is no reason to turn INT off during interactive calculations, -since there are no benefits to be gained. If you do have INT off -while inputting a file, and REDUCE finds an error, it prints the message -``Continuing with parsing only''. In this state, REDUCE accepts only -END; or BYE; from the keyboard; -everything else is ignored, even the command ON INT. - -\endsection -\item[INTEGER] -INTEGER (page 61) - -The INTEGER declaration must be made immediately after a BEGIN (or -other variable declaration such as REAL and SCALAR) and declares local -integer variables. They are initialised to 0. - - INTEGER identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Integer variables remain local, and do not share values with variables -of the same name outside the BEGIN...END block. When the block is -finished, the variables are removed. You may use the words REAL or -SCALAR in the place of INTEGER. INTEGER does not indicate -type-checking by the current REDUCE; it is only for your own -information. Declaration statements must immediately follow the -BEGIN, without a semicolon between BEGIN and the first variable -declaration. - -Any variables used inside BEGIN...END blocks that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Any ARRAY or MATRIX declared -inside a block is always global. - -\endsection -\xitem[Integer] -Integer (page 44) - -\endsection -\item[Integration] -Integration (pages 80, 92) - -See INT, ALGINT or NUM_INT. -\endsection -\xitem[integration definite (simple)] -integration definite (simple) (page 236) - line (page 238) - volume (page 237) - -\endsection -\xitem[Interactive use] -Interactive use (pages 157, 160) - -\endsection -\item[INTERPOL] -INTERPOL (page 127) - -INTERPOL generates an interpolation polynomial. - - INTERPOL(values,variable,points) - -values and points are LISTs of equal length and variable is an -algebraic expression (preferably a KERNEL). The interpolation -polynomial is generated in the given variable of degree -length(values)-1. The unique polynomial F is defined by the property -that for corresponding elements V of values and P of points the -relation F(P)=V holds. - -Examples: -f := for i:=1:4 collect(i**3-1); F := {0,7,26,63} -p := {1,2,3,4}; P := {1,2,3,4} - 3 -interpol(f,x,p); X - 1 - -The Aitken-Neville interpolation algorithm is used which guarantees a -stable result even with rounded numbers and an ill-conditioned problem. - -\endsection -\item[INTSTR] -INTSTR (page 98) - -If INTSTR (for ``internal structure'') is on, arguments of an -operator are printed in a more structured form. - -Examples: - operator f; - f(2x+2y); F(2*X + 2*Y) - on intstr; - ws; F(2*(X + Y)) - -\endsection -\item[ISOLATER] -ISOLATER (page 369) - - ISOLATER(expression) - ISOLATER simple_expresion - ISOLATER(expression, POSITIVE) - ISOLATER(expression, NEGATIVE) - ISOLATER(expression, lo, hi) - -The ISOLATER function produces a list of rational intervals, each -containing a single real root of the univariate polynomial p, within -the specified region, but does not find the roots. If arg2 and arg3 -are not present, all real roots are found. If the additional -arguments are present, they restrict the region of consideration. - -If arg2=NEGATIVE then only negative roots of p are included; if -arg2=POSITIVE then only positive roots of p are included. Zero roots -are excluded. - -If arguments are (p,arg2,arg3) then Arg2 and Arg3 must be r (a real -number) or EXCLUDE r, or a member of the list POSITIVE, NEGATIVE, -INFINITY, -INFINITY. EXCLUDE r causes the value r to be excluded from -the region. The order of the sequence arg2, arg3 is unimportant. -Assuming that arg2 <= arg3 when both are numeric, then - - {-INFINITY,INFINITY} is equivalent to {} represents all roots; - {arg2,NEGATIVE} represents -1 (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ -let trig1; - COS(A - B) + COS(A + B) -cos(a)*cos(b); ------------------------- - 2 - -A LET command returns no value, though the substitution rule is -entered. Assignment rules made by ASSIGN and LET rules are at the -same level, and cancel each other. There is a difference in their -operation, however, as shown in the first example: a LET assignment -tracks the changes in what it is assigned to, while a := assignment is -fixed at the value it originally had. - -The use of expressions as left-hand sides of LET statements is a -little complicated. The rules of operation are: - -(i) Expressions of the form A*B = C do not change A, B or C, but set -A*B to C. - -(ii) Expressions of the form A+B = C substitute C - B for A, but do -not change B or C. - -(iii) Expressions of the form A-B = C substitute B + C for A, but do -not change B or C. - -(iv) Expressions of the form A/B = C substitute B*C for A, but do not -change B or C. - -(v) Expressions of the form A**N = C substitute C for A**N in every -expression of a power of A to N or greater. An asymptotic command -such as A**N = 0 sets all terms involving A to powers greater than or -equal to N to 0. Finite fields may be generated by requiring modular -arithmetic (the MODULAR switch) and defining the primitive polynomial -via a LET statement. - -LET substitutions involving expressions are cleared by using the CLEAR -command with exactly the same expression. - -Note when a simple LET statement is used to assign functionality to an -operator, it is valid only for the exact identifiers used. For the -use of the LET command to attach more general functionality to an -operator, see FORALL. - -Arrays as a whole cannot be arguments to LET statements, but matrices -as a whole can be legal arguments, provided both arguments are -matrices. However, it is important to note that the two matrices are -then linked. Any change to an element of one matrix changes the -corresponding value in the other. Unless you want this behaviour, you -should not use LET for matrices. The assignment operator ASSIGN can -be used for non-tracking assignments, avoiding the side effects. -Matrices are redimensioned as needed in LET statements. - -When array or matrix elements are used as the left-hand side of LET -statements, the contents of that element is used as the argument. -When the contents is a number or some other expression that is not a -valid left-hand side for LET, you get an error message. If the -contents is an identifier or simple expression, the LET rule is -globally attached to that identifier, and is in effect not only inside -the array or matrix, but everywhere. Because of such unwanted side -effects, you should not use LET with array or matrix elements. The -assignment operator := can be used to put values into array or matrix -elements without the side effects. - -Local variables declared inside BEGIN...END blocks cannot be used as -the left-hand side of LET statements. However, BEGIN...END blocks -themselves can be used as the right-hand side of LET statements. The -construction: - FOR ALL vars - LET operator(vars) = block -is an alternative to the - PROCEDURE name(vars); block -construction. One important difference between the two constructions -is that the vars as formal parameters to a procedure have their global -values protected against change by the procedure, while the vars of a -LET statement are changed globally by its actions. - -Be careful in using a construction such as LET x = x + 1 except inside -a controlled loop statement. The process of resubstitution continues -until a stack overflow message is given. - -The LET statement may be used to make global changes to variables from -inside procedures. If X is a formal parameter to a procedure, the -command LET x = ... makes the change to the calling variable. For -example, if a procedure was defined by - procedure f(x,y); - let x = 15; -and the procedure was called as - f(a,b); -A would have its value changed to 15. Be careful when using LET -statements inside procedures to avoid unwanted side effects. - -It is also important to be careful when replacing LET statements with -other LET statements. The overlapping of these substitutions can be -unpredictable. Ordinarily the latest-entered rule is the first to be -applied. Sometimes the previous rule is superseded completely; other -times it stays around as a special case. The order of entering a set -of related LET expressions is very important to their eventual -behaviour. The best approach is to assume that the rules will be -applied in an arbitrary order. - -\endsection -\xitem[Levi-Cevita tensor] -Levi-Cevita tensor (page 267) - -\endsection -\item[LEX] - -The terms are ordered lexicographically: two terms t1 t2 are compared -for their degrees along the fixed variable sequence: t1 is higher than -t2 if the first different degree is higher in t1. This order has the -elimination property for GROEBNER BASIS calculations. If the ideal -has a univariate polynomial in the last variable the groebner basis -will contain such polynomial. LEX is best suited for solving of -polynomial equation systems. - -\endsection -\item[LHS] -LHS (page 47) - -The LHS operator returns the left-hand side of an EQUATION, such as -those returned in a list by SOLVE. - - LHS(equation) or LHS equation - -equation must be an equation of the form - LEFT-HAND SIDE = RIGHT-HAND SIDE. - -Examples: -polly := (x+3)*(x^4+2x+1); - 5 4 2 - POLLY := X + 3*X + 2*X + 7*X + 3 - -pollyroots := solve(polly,x); - 3 2 - POLLYROOTS := {X=ROOT_OF(X_ - X_ + X_ + 1,X_),X=-1,X=-3} - -variable := lhs first pollyroots; - VARIABLE := X - -\endsection -\xitem[LIE Derivative] -Lie Derivative (page 255) - -\endsection -\item[LIMIT] -LIMIT (pages 329, 360) - -LIMITS is a fast limit package for REDUCE for functions which are -continuous except for computable poles and singularities, based on -some earlier work by Ian Cohen and John P. Fitch. The Truncated -Power Series package is used for non-critical points, at which -the value of the function is the constant term in the expansion -around that point. l'Hopital's rule is used in critical cases, -with preprocessing of 1-1 forms and reformatting of product forms -in order to apply l'Hopital's rule. A limited amount of bounded -arithmetic is also employed where applicable. - - LIMIT(expr,var,limpoint) or - LIMIT!+(expr,var,limpoint) or - LIMIT!-(expr,var,limpoint) - -where expr is an expression depending of the variable var (a KERNEL) -and limpoint is the limit point. If the limit depends upon the -direction of approach to the limpoint, the operators LIMIT!+ and -LIMIT!- may be used. - -Examples: - limit(x*cot(x),x,0); 0 - 2 - limit((2x+5)/(3x-2),x,infinity); --- - 3 - -\endsection -\xitem[LIMIT0] -LIMIT0 (page 330) - -\endsection -\xitem[LIMIT1] -LIMIT1 (page 330) - -\endsection -\xitem[LIMIT2] - -\endsection -\xitem[LIMIT2] -LIMIT2 (page 330) - -\endsection -\xitem[LIMITS] -LIMITS (page 181) - -\endsection -\xitem[LIMITS package] -LIMITS package (page 329) - -\endsection -\item[LIMITEDFACTORS] -LIMITEDFACTORS - -To get limited factorisation in cases where it is too expensive to use -full multivariate polynomial factorisation, the switch -LIMITEDFACTORS can be turned on. In that case, only ``inexpensive'' -factoring operations, such as square-free factorisation, will be used -when FACTORIZE is called. - -Examples: -a := (y-x)^2*(y^3+2x*y+5)*(y^2-3x*y+7)$ -factorize a; { - X + Y, - X - Y, - 3 - 2*X*Y + Y + 5, - 2 - 3*X*Y - Y - 7} -on limitedfactors; -factorize a; { - X + Y, - X - Y, - 2 2 4 3 5 3 2 - 6*X *Y + 3*X*Y - 2*X*Y + X*Y - Y - 7*Y - 5*Y - 35} - -\endsection -\xitem[line integrals] -line integrals (page 238) - -\endsection -\item[LINEAR] -LINEAR (page 91) - -An operator can be declared linear in its first argument over powers of -its second argument by the declaration LINEAR. - - LINEAR operator{,operator} - -operator must have been declared to be an operator. Be careful not to -use a system operator name, because this command may change its -definition. The operator being declared must have at least two -arguments, and the second one must be a kernel. - -Examples: -operator f; -linear f; -f(0,x); 0 -f(-y,x); - F(1,X)*Y -f(y+z,x); F(1,X)*(Y + Z) -f(y*z,x); F(1,X)*Y*Z -depend z,x; -f(y*z,x); F(Z,X)*Y - 1 -f(y/z,x); F(---,X)*Y - Z - -depend y,x; - Y -f(y/z,x); F(---,X) - Z -nodepend z,x; - F(Y,X) -f(y/z,x); -------- - Z - - SIN(x) -f(2*e**sin(x),x); 2*F(E ,X) - -Even when the operator has not had its functionality attached, it -exhibits linear properties as shown in the examples. Notice the -difference when dependencies are added. Dependencies are also in -effect when the operator's first argument contains its second, as in -the last line above. - -For a fully-developed example of the use of linear operators, refer to -the article in the Journal of Computational Physics, Vol. 14 -(1974), pp. 301-317, ``Analytic Computation of Some Integrals in -Fourth Order Quantum Electrodynamics'', by J.A. Fox and A.C. Hearn. -The article includes the complete listing of REDUCE procedures used -for this work. - -\endsection -\xitem[Linear operator] -Linear operator (pages 91, 92, 95) - -\endsection -\xitem[LINEINT] -LINEINT (page 360) - -\endsection -\xitem[LINEINT function] -LINEINT function (page 238) - -\endsection -\item[LINELENGTH] -LINELENGTH (page 100) - -The LINELENGTH declaration sets the length of the output line. Default -is 80. - - LINELENGTH integer - -integer must be positive, less than 128 (although this varies from -system to system), and should not be less than 20 or so for proper -operation. - -LINELENGTH returns the previous linelength. If you want the current -linelength value, but not change it, say LINELENGTH NIL. - -\endsection -\item[LISP] -LISP (page 191) - -The LISP command changes REDUCE's mode of operation to symbolic. When -LISP is followed by an expression, that expression is evaluated in -symbolic mode, but REDUCE's mode is not changed. This command is -equivalent to SYMBOLIC. - -Examples: -lisp; NIL -car '(a b c d e); A -algebraic; 2 -c := (lisp car '(first second))**2; C := FIRST - -\endsection -\item[LIST] -LIST (page 103) - -The LIST switch causes REDUCE to print each term in any sum on -separate lines. - -Examples: 2 2 - X*(2*A*X*Y + 4*A*X*Y + Y + Z) -x**2*(y**2 + 2*y) + x*(y**2 + z)/(2*a); --------------------------------- - 2*A -on list; - 2 -ws; (X*(2*A*X*Y - + 4*A*X*Y - 2 - + Y - + Z))/(2*A) - -\endsection -\xitem[List] -List (page 49) - -\endsection -\item[List(operation)] -List operation (pages 49, 51) - -The LIST operator constructs a list from its arguments. - LIST(item {,item}) or - LIST() to construct an empty list. - -item can be any REDUCE scalar expression, including another list. -Left and right curly brackets can also be used instead of the operator -LIST to construct a list. - -Examples: -liss := list(c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x)); - 2 - LISS := {C,B,C,{XX,YY},3*X + 7*X + 3,2*COS(2*X)} -length liss; 6 -liss := {c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x)}; - 2 - LISS := {C,B,C,{XX,YY},3*X + 7*X + 3,2*COS(2*X)} -emptylis := list(); EMPTYLIS := {} -a . emptylis; {A} - -Lists are ordered, hierarchical structures. The elements stay where -you put them, and only change position in the list if you specifically -change them. Lists can have nested sublists to any (reasonable) -level. The PART operator can be used to access elements anywhere -within a list hierarchy. The LENGTH operator counts the number of -top-level elements of its list argument; elements that are themselves -lists still only count as one element. - -\endsection -\item[LISTARGP] -LISTARGP (page 51) - - LISTARGP operator{,operator} - -If an operator other than those specifically defined for lists is -given a single argument that is a LIST, then the result of this -operation will be a list in which that operator is applied to each -element of the list. This process can be inhibited for a specific -operator, or list of operators, by using the declaration LISTARGP. - -Examples: -log {a,b,c}; {LOG(A),LOG(B),LOG(C)} -listargp log; -log {a,b,c}; LOG({A,B,C}) - -It is possible to inhibit such distribution globally by turning on the -switch LISTARGS. In addition, if an operator has more than one -argument, no such distribution occurs, so LISTARGP has no effect. - -\endsection -\item[LISTARGS] -LISTARGS (page 51) - -If an operator other than those specifically defined for lists is given a -single argument that is a list, then the result of this operation will be -a list in which that operator is applied to each element of the list. -This process can be inhibited globally by turning on the switch -LISTARGS. - -Examples: - log {a,b,c}; {LOG(A),LOG(B),LOG(C)} - on listargs; - log {a,b,c}; LOG({A,B,C}) - -It is possible to inhibit such distribution for a specific operator by -using the declaration LISTARGP. In addition, if an operator has -more than one argument, no such distribution occurs, so LISTARGS -has no effect. - -\endsection -\item[LN] -LN (pages 76, 78) - - LN(expression) - -expression can be any valid scalar REDUCE expression. - -The LN operator returns the natural logarithm of its argument. -However, unlike LOG, there are no algebraic rules associated -with it; it will only evaluate when ROUNDED is on, and the -argument is a real number. - -Examples: -ln(x); LN(X) -ln 4; LN(4) -ln(e); LN(E) -df(ln(x),x); DF(LN(X),X) -on rounded; -ln 4; 1.38629436112 -ln e; 1 - -Because of the restricted algebraic properties of LN, users are -advised to use LOG whenever possible. - -\endsection -\xitem[LOAD] -LOAD (page 214) - -\endsection -\item[LOAD_PACKAGE] -LOAD_PACKAGE (pages 177, 188, 215) - -The LOAD_PACKAGE command is used to load REDUCE packages, such as -GENTRAN that are not automatically loaded by the system. - - LOAD_PACKAGE "package_name" - -A package is only loaded once; subsequent calls of LOAD_PACKAGE -for the same package name are ignored. - -\endsection -\item[LOG] -LOG (pages 76, 78, 81) - -The LOG operator returns the natural logarithm of its argument. - - LOG(expression) or LOG expression - -expression can be any valid scalar REDUCE expression. - -Examples: -log(x); LOG(X) -log 4; LOG(4) -log(e); 1 -on rounded; -log 4; 1.38629436112 - -LOG returns a numeric value only when ROUNDED is on. In that case, -use of a negative argument for LOG results in an error message. No -error is given on a negative argument when REDUCE is not in that mode. - -\endsection -\xitem[LOG10] -LOG10 (pages 76, 78) - -\endsection -\item[LOGB] -LOGB (pages 76, 78) - - LOGB(expression,integer) - -expression can be any valid scalar REDUCE expression. - -The LOGB operator returns the logarithm of its first argument using -the second argument as base. However, unlike LOG, there are no -algebraic rules associated with it; it will only evaluate when ROUNDED -is on, and the first argument is a real number. - -Examples: -logb(x,2); LOGB(X,2) -logb(4,3); LOGB(4,3) -logb(2,2); LOGB(2,2) -df(logb(x,3),x); DF(LOGB(X,3),X) -on rounded; -logb(4,3); 1.26185950714 -logb(2,2); 1 - -\endsection -\item[Lommel Functions] -Lommel Functions (pages 185, 397) - -Part of the SPECFN package. See LOMMEL1 and LOMMEL2. - -\endsection -\item[LOMMEL1] -LOMMEL1 (pages 185, 397) - - LOMMEL1(integer, integer, expression) - -The LOMMEL1 function is defined in terms of the BESSELJ and GAMMA -functions for some of its arguments, and the STRUVEH function for -others. There are no rules for differentiation or for numerical -evaluation. - -Examples: - load_package specfn; (SPECFN) - 3 - Lommel1(3,2,xx); - 48*BESSELJ(3,XX) + XX - 15*STRUVEH(3,XX)*PI - Lommel1(3,3,xx); --------------------- - 2 - -\endsection -\item[LOMMEL2] -LOMMEL2 (pages 185, 397) - - LOMMEL2(integer, integer, expression) - -The LOMMEL2 function is defined in terms of the BESSELY, GAMMA and -STRUVEH function for some of its arguments. There are no rules for -differentiation or for numerical evaluation. - -Examples: -load_package specfn; (SPECFN) - 2 -Lommel2(3,2,xx); XX - 15*PI*( - BESSELY(3,XX) + STRUVEH(3,XX)) -Lommel2(3,3,xx); ------------------------------------------ - 2 - -\endsection -\xitem[Loop] -Loop (pages 57, 58) - -\endsection -\item[LOW_POW] -LOW_POW (page 115) - -The variable LOW_POW is set by COEFF to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -Examples: 6 -coeff((x+2*y)**6,y); {X , - 5 - 12*X , - 4 - 60*X , - 3 - 160*X , - 2 - 240*X , - - 192*X, - - 64} - -low_pow; 0 -coeff(x**2*(x*sin(y) + 1),x); {0,0,1,SIN(Y)} -low_pow; 2 - -\endsection -\item[LTERM] -LTERM (pages 130, 203) - -The LTERM operator returns the leading term of an expression with -respect to a kernel. - - LTERM(expression,kernel) - -expression is ordinarily a polynomial. If RATARG is on, a rational -expression may also be used, otherwise an error results. kernel must -be a kernel. - -Examples: 6 -lterm((x+2*y)**6,y); 64*Y - 8 -lterm((x + cos(x))**8 + df(x**2,x),cos(x)); COS(X) -lterm(x**3 + 3*x,y); 0 - -\endsection -\xitem[MACRO] -MACRO (page 196) - -\endsection -\item[MAINVAR] -MAINVAR (page 130) - -The MAINVAR operator returns the main variable (in the system's -internal representation) of its argument. - - MAINVAR(expression) - -expression is usually a polynomial, but may be any valid REDUCE scalar -expression. In the case of a rational function, the main variable of -the numerator is returned. The main variable returned is a KERNEL. - -Examples: 2 2 2 -test := (a + b + c)**2; TEST := A + 2*A*B + 2*A*C + B + 2*B*C + C -mainvar(test); A -korder c,b,a; -mainvar(test); C -mainvar(2*cos(x)**2); COS(X) -mainvar(17); 0 - -The main variable is the first variable in the canonical ordering of -kernels. Generally, alphabetically ordered functions come first, then -alphabetically ordered identifiers (variables). Numbers come last, -and as far as MAINVAR is concerned belong in the family 0. The -canonical ordering can be changed by the declaration KORDER, as shown -above. - -\endsection -\item[MASS] -MASS (pages 208, 210) - -The MASS command associates a scalar variable as a mass with -the corresponding vector variable, in high-energy physics calculations. - MASS vector-var=scalar-var {,vector-var=scalar-var} - -vector-var can be a declared vector variable; MASS will declare -it to be of type VECTOR if it is not. This may override an existing -matrix variable by that name. scalar-var must be a scalar variable. - -Examples: -vector bb,cc; -mass cc=m; -mshell cc; - 2 -cc.cc; M - -Once a mass has been attached to a vector with a MASS declaration, the -MSHELL declaration puts the associated particle ``on the mass shell.'' -Subsequent scalar (.) products of the vector with itself will be -replaced by the square of the mass expression. - -\endsection -\item[MAT] -MAT (pages 161--162) - -The MAT operator is used to represent a two-dimensional -MATRIX. - MAT((expr{,expr}) {(expr{,expr})}) - -expr may be any valid REDUCE scalar expression. - -Examples: -mat((1,2),(3,4)); MAT(1,1) := 1 - MAT(2,3) := 2 - MAT(2,1) := 3 - MAT(2,2) := 4 -mat(2,1); ***** Matrix mismatch - Cont? (Y or N) -matrix qt; -qt := ws; QT(1,1) := 1 - QT(1,2) := 2 - QT(2,1) := 3 - QT(2,2) := 4 -matrix a,b; -a := mat((x),(y),(z)); A(1,1) := X - A(2,1) := Y - A(3,1) := Z -b := mat((sin x,cos x,1)); B(1,1) := SIN(X) - B(1,2) := COS(X) - B(1,3) := 1 - -Matrices need not have a size declared (unlike arrays). MAT -redimensions a matrix variable as needed. It is necessary, of course, -that all rows be the same length. An anonymous matrix, as shown in -the first example, must be named before it can be referenced (note -error message). When using MAT to fill a 1 x n matrix, the row of -values must be inside a second set of parentheses, to eliminate -ambiguity. - -\endsection -\item[MATCH] -MATCH (page 146) - -The MATCH command is similar to the LET command, except -that it matches only explicit powers in substitution. - - MATCH expr = expression{,expr = expression} - -expr is generally a term involving powers, and is limited by the rules -for the LET command. expression may be any valid REDUCE scalar -expression. - -Examples: -match c**2*a**2 = d; - 4 3 3 4 -(a+c)**4; A + 4*A *C + 4*A*C + C + 6*D -match a+b = c; -a + 2*b; B + C - 2 2 2 -(a + b + c)**2; A - B + 2*B*C + 3*C -clear a+b; - 2 2 2 -(a + b + c)**2; A + 2*A*B + 2*A*C + B + 2*B*C + C -let p*r = s; -match p*q = ss; - 2 2 -(a + p*r)**2; A + 2*A*S + S - 2 2 2 -(a + p*q)**2; A + 2*A*SS + P *Q - -Note in the last example that A + B has been explicitly matched after -the squaring was done, replacing each single power of A by C - B. -This kind of substitution, although following the rules, is confusing -and could lead to unrecognisable results. It is better to use MATCH -with explicit powers or products only. MATCH should not be used -inside procedures for the same reasons that LET should not be. - -Unlike LET substitutions, MATCH substitutions are executed after all -other operations are complete. The last example shows the -difference. MATCH commands can be cleared by using CLEAR, with exactly -the expression that the original MATCH took. MATCH commands can also -be done more generally with FOR ALL or FORALL...SUCH THAT commands. - -\endsection -\item[MATEIGEN] -MATEIGEN (page 164) - -The MATEIGEN operator calculates the eigenvalue equation and the -corresponding eigenvectors of a MATRIX. - - MATEIGEN(matrix-id,tag-id) - -matrix-id must be a declared matrix of values, and tag-id must be a -legal REDUCE identifier. - -Examples: -aa := mat((2,5),(1,0))$ - 2 -mateigen(aa,alpha); {{ALPHA - 2*ALPHA - 5, - 1, - 5*ARBCOMPLEX(1) - MAT(1,1) := --------------- - ALPHA - 2 - - MAT(2,1) := ARBCOMPLEX(1) - }} - 2 -charpoly := first first ws; CHARPOLY := ALPHA - 2*ALPHA - 5 - -bb := mat((1,0,1),(1,1,0),(0,0,1))$ - -mateigen(bb,lamb); {{LAMB - 1,3, - - [ 0 ] - [ ] - [ARBCOMPLEX(2)] - [ ] - [ 0 ] - - }} - -The MATEIGEN operator returns a list of lists of three elements. The -first element is a square free factor of the characteristic -polynomial; the second element is its multiplicity; and the third -element is the corresponding eigenvector. If the characteristic -polynomial can be completely factored, the product of the first -elements of all the sublists will produce the minimal polynomial. You -can access the various parts of the answer with the usual list access -operators. - -If the matrix is degenerate, more than one eigenvector can be produced -for the same eigenvalue, as shown by more than one arbitrary variable -in the eigenvector. The identification numbers of the arbitrary -complex variables shown in the examples above may not be the same as -yours. Note that since LAMBDA is a reserved word in REDUCE, you -cannot use it as a tag-id for this operator. - -\endsection -\xitem[Mathematical function] -Mathematical function (page 76) - -\endsection -\item[MATRIX] -MATRIX (page 162) - -Identifiers are declared to be of type MATRIX. - MATRIX identifier (index,index) {,identifier (index,index)} - -identifier must not be an already-defined operator or array or the -name of a scalar variable. Dimensions are optional, and if used -appear inside parentheses. index must be a positive integer. - -Examples: -matrix a,b(1,4),c(4,4); -b(1,1); 0 -a(1,1); ***** Matrix A not set -a := mat((x0,y0),(x1,y1)); A(1,1) := X0 - A(1,2) := Y0 - A(2,1) := X0 - A(2,2) := X1 -length a; {2,2} - 2 -b := a**2; B(1,1) := X0 + X1*Y0 - B(1,2) := Y0*(X0 + Y1) - B(2,1) := X1*(X0 + Y1) - 2 - B(2,2) := X1*Y0 + Y1 - -When a matrix variable has not been dimensioned, matrix elements -cannot be referenced until the matrix is set by the MAT operator. -When a matrix is dimensioned in its declaration, matrix elements are -set to 0. Matrix elements cannot stand for themselves. When you use -LET on a matrix element, there is no effect unless the element -contains a constant, in which case an error message is returned. The -same behaviour occurs with CLEAR. Do not use CLEAR to try to set a -matrix element to 0. LET statements can be applied to matrices as a -whole, if the right-hand side of the expression is a matrix -expression, and the left-hand side identifier has been declared to be -a matrix. - -Arithmetical operators apply to matrices of the correct dimensions. -The operators + and - can be used with matrices of the same -dimensions. The operator * can be used to multiply m x n matrices by -n x p matrices. Matrix multiplication is non-commutative. Scalars -can also be multiplied with matrices, with the result that each -element of the matrix is multiplied by the scalar. The operator / -applied to two matrices computes the first matrix multiplied by the -inverse of the second, if the inverse exists, and produces an error -message otherwise. Matrices can be divided by scalars, which results -in dividing each element of the matrix. Scalars can also be divided -by matrices when the matrices are invertible, and the result is the -multiplication of the scalar by the inverse of the matrix. Matrix -inverses can by found by 1/A or /A, where A is a matrix. Square -matrices can be raised to positive integer powers, and also to -negative integer powers if they are nonsingular. - -When a matrix variable is assigned to the results of a calculation, the -matrix is redimensioned if necessary. - -\endsection -\xitem[Matrix assignment] -Matrix assignment (page 168) - -\endsection -\xitem[Matrix calculations] -Matrix calculations (page 161) - -\endsection -\item[MAX] -MAX (page 73) - -The operator MAX is an n-ary prefix operator, which returns the largest -value in its arguments. - - MAX(expression{,expression}) - -expression must evaluate to a number. MAX of an empty list returns 0. - -Examples: -max(4,6,10,-1); 10 -<>; 46 -max(-5,-10,-a); -5 - -\endsection -\item[MCD] -MCD (pages 123, 125, 126) - -When MCD is on, sums and differences of rational expressions are put -on a common denominator. Default is ON. - -Examples: 5*A + B*X + B -a/(x+1) + b/5; --------------- - 5*(X + 1) -off mcd; - -1 -a/(x+1) + b/5; (X + 1) *A + 1/5*B - -1/6 + 1/7; 13/42 - -Even with MCD off, rational expressions involving only numbers are -still put over a common denominator. - -Turning MCD off is useful when explicit negative powers are needed, or -if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when MCD is -off are no longer in canonical form, and expressions equivalent to -zero may not simplify to 0. Some operations, such as factoring cannot -be done while MCD is off. This option should therefore be used with -some caution. Turning MCD off is most valuable in intermediate parts -of a complicated calculation, and should be turned back on for the -last stage. - -\endsection -\xitem[MEIJERG] -Meijer's G function (page 187) - -The MEIJERG operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or -special functions or (generalised) HYPERGEOMETRIC functions. - -The MEIJERG operator is included in the package specfn2. - -MEIJERG(list of parameters,list of parameters,argument) -The first element of the lists has to be the list containing the -first group (mostly called "m" and "n") of parameters. This passes -the four parameters of a Meijer's G function implicitly via the -length of the lists. - -Examples: -load specfn2; -MeijerG({{},1},{{0}},x); & heaviside(-x+1) -MeijerG({{}},{{1+1/4},1-1/4},(x^2)/4) * sqrt pi; - & \rfrac{sqrt(2)*sin(x)*x^2}{4*sqrt(x)} - -Many well-known functions can be written as G functions, -e.g. exponentials, logarithms, trigonometric functions, Bessel functions -and hypergeometric functions. -The formulae can be found e.g. in -A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: -Integrals and Series, Volume 3: More special functions, -Gordon and Breach Science Publishers (1990). - -\endsection -\xitem[METRIC command] -METRIC command (page 271) - -\endsection -\xitem[metric structure] -metric structure (page 262) - -\endsection -\item[MIN] -MIN (page 73) - -The operator MIN is an n-ary prefix operator, which returns the -smallest value in its arguments. - - MIN(expression{,expression}) - -expression must evaluate to a number. MIN of an empty list -returns 0. - -Examples: -min(-3,0,17,2); -3 -<>; 16 -min(5,10,a); 5 - -\endsection -\xitem[Minimum] -Minimum (page 182) - -\endsection -\item[MKID] -MKID (page 83) - -The MKID command constructs an identifier, given a stem and an identifier -or an integer. - - MKID(stem,leaf) - -stem can be any valid REDUCE identifier that does not include escaped -special characters. leaf may be an integer, including one given by a -local variable in a FOR loop, or any other legal group of characters. - -Examples: -mkid(x,3); X3 -factorize(x^15 - 1); {X - 1, - - 2 - X + X + 1, - - 4 3 2 - X + X + X + X + 1, - - 8 7 5 4 3 - X - X + X - X + X - X + 1} - -for i := 1:length ws do write set(mkid(f,i),part(ws,i)); - X - 1 - - 2 - X + X + 1 - - 4 3 2 - X + X + X + X + 1 - - 8 7 5 4 3 - X - X + X - X + X - X + 1 - -You can use MKID to construct identifiers from inside procedures. This -allows you to handle an unknown number of factors, or deal with variable -amounts of data. It is particularly helpful to attach identifiers to the -answers returned by FACTORIZE and SOLVE. - -\endsection -\item[MKPOLY] -MKPOLY (page 370) - -Given a roots list as returned by ROOTS, the operator MKPOLY -constructs a polynomial which has these numbers as roots. - - MKPOLY rl - -where rl is a LIST with equations, which all have the same KERNEL on -their left-hand sides and numbers as right-hand sides. - -Examples: - 4 3 2 - mkpoly{x=1,x=-2,x=i,x=-i}; X + X - X + X - 2 - - -Note that this polynomial is unique only up to a numeric factor. - -\endsection -\xitem[MM] -MM (page 379) - -\endsection -\xitem[Mode] -Mode (page 68) - -\endsection -\xitem[Mode communication] -Mode communication (page 197) - -\endsection -\item[MODULAR] -MODULAR (page 134) - -When MODULAR is on, polynomial coefficients are reduced by the -modulus set by SETMOD. If no modulus has been set, MODULAR -has no effect. - -Examples: -setmod 2; 1 -on modular; - 2 2 -(x+y)**2; X + Y - 2 -145*x**2 + 20*x**3 + 17 + 15*x*y; X + X*Y + 1 - -Modular operations are only conducted on the coefficients, not the -exponents. The modulus is not restricted to being prime. When the -modulus is prime, division by a number not relatively prime to the -modulus results in a Zero divisor error message. When the modulus is -a composite number, division by a power of the modulus results in an -error message, but division by an integer which is a factor of the -modulus does not. The representation of modular number can be -influenced by BALANCED_MOD. - -\endsection -\xitem[Modular coefficient] -Modular coefficient (page 134) - -\endsection -\item[MSG] -MSG (page 218) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\item[MSHELL] -MSHELL (page 210) - -The MSHELL command puts particles on the mass shell in high-energy -physics calculations. - MSHELL vector-var{,vector-var} - -vector-var must have had a mass attached to it by a MASS -declaration. - -Examples: -vector v1,v2; -mass v1=m,v2=q; -mshell v1; - 2 -v1.v1; M -v2.v2; V2.V2 -mshell v2; - 2 2 -v1.v1*v2.v2; M *Q - -Even though a mass is attached to a vector variable representing a -particle, the replacement does not take place until the MSHELL -declaration is given for that vector variable. - -\endsection -\xitem[Multiple assignment statement] -Multiple assignment statement (page 54) - -\endsection -\item[MULTIPLICITIES] -MULTIPLICITIES (page 86) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\xitem[MULTIROOT] -MULTIROOT (page 373) - -\endsection -\item[NAT] -NAT (page 111, 259) - -When NAT is on, output is printed to the screen in natural form, with -raised exponents. NAT should be turned off when outputting expressions -to a file for future input. Default is ON. - -Examples: 3 2 2 3 -(x + y)**3; X + 3*X *Y + 3*X*Y + Y -off nat; -(x + y)**3; X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ -on fort; -(x + y)**3; ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3 - -With NAT off, a dollar sign is printed at the end of each expression. -An output file written with NAT off is ready to be read into REDUCE -using the command IN. - -\endsection -\item[NEARESTROOT] -NEARESTROOT (pages 370, 372) - -The operator NEARESTROOT finds one root of a polynomial with an -iteration using a given starting point. - - NEARESTROOT(p,pt) - -where p is a univariate polynomial and pt is a number. - -Example: - - nearestroot(x^2+2,2); {X=1.41421*I} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[NEARESTROOTS] -NEARESTROOTS (page 370) - -\endsection -\xitem[NEGATIVE] -NEGATIVE (page 368) - -\endsection -\item[NERO] -NERO (page 108) - -When NERO is on, zero assignments (such as matrix elements) are not -printed. - -Examples: -matrix a; -a := mat((1,0),(0,1)); A(1,1) := 1 - A(1,2) := 0 - A(2,1) := 0 - A(2,2) := 1 -on nero; -a; MAT(1,1) := 1 - MAT(2,2) := 1 -a(1,2); {nothing is printed.} -b := 0; {nothing is printed.} -off nero; -b := 0; B := 0 - -NERO is often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. - -\endsection -\xitem[Newton's method] -Newton's method (page 182) - -\endsection -\item[NEXTPRIME] -NEXTPRIME (page 74) - - NEXTPRIME(expression) - -If the argument of NEXTPRIME is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. - -Examples: -nextprime 5001; 5003 -nextprime(10^30); 1000000000000000000000000000057 -nextprime a; ***** A invalid as integer - -\endsection -\xitem[NN] -NN (page 379) - -\endsection -\item[NOARG] -NOARG - -When DFPRINT is on, expressions in the differentiation operator -DF are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. When NOARG -is on (the default), the arguments of the differentiated operator are also -suppressed. - -Examples: -operator f; -df(f x,x); DF(F(X),X); -on dfprint; -ws; F - X -df(f(x,y),x,y); F - X,Y -off noarg; -ws; F(X) - X - -\endsection -\item[NODEPEND] -NODEPEND (page 95) - -The NODEPEND declaration removes the dependency declared with DEPEND. - - NODEPEND dep-kernel{,kernel} - -dep-kernel -must be a kernel that has had a dependency declared upon -the one or more other kernels that are its other arguments. - -Examples: -depend y,x,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) -nodepend y,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); 0 - -A warning message is printed if the dependency had not been declared by -DEPEND. - -\endsection -\xitem[NOETHER function] -NOETHER function (pages 258, 271) - -\endsection -\xitem[Non-commuting operator] -Non-commuting operator (page 92) - -\endsection -\item[NOLNR] -NOLNR - -When NOLNR is on, the linear properties of the integration operator -INT are suppressed if the integral cannot be found in closed terms. - - -REDUCE uses the linear properties of integration to attempt to break down -an integral into manageable pieces. If an integral cannot be found in -closed terms, these pieces are returned. When the NOLNR switch is off, -as many of the pieces as possible are integrated. When it is on, if any piece -fails, the rest of them remain unevaluated. - -\endsection -\item[NONCOM] -NONCOM (page 92) - -NONCOM declares that already-declared operators are noncommutative -under multiplication. - - NONCOM operator{,operator} - -operator must have been declared an OPERATOR, or a warning message is -given. - -Examples: -operator f,h; -noncom f; -f(a)*f(b) - f(b)*f(a); F(A)*F(B) - F(B)*F(A) -h(a)*h(b) - h(b)*h(a); 0 -operator comm; -for all x,y such that x neq y and ordp(x,y) - let f(x)*f(y) = f(y)*f(x) + comm(x,y); -f(1)*f(2); F(1)*F(2) -f(2)*f(1); COMM(2,1) + F(1)*F(2) - -The last example introduces the commutator of f(x) and f(y) for all x -and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or -it can remain an indeterminate operator. - -\endsection -\item[NONZERO] -NONZERO (page 90) - - NONZERO identifier{,identifier} - -If an operator F is declared ODD, then F(0) is replaced by zero unless -F is also declared non zero by the declaration NONZERO. - -Examples: - odd f; - f(0) 0 - nonzero f; - f(0) F(0) - -\endsection -\item[NOSPLIT] -NOSPLIT (page 103) - -Under normal circumstances, the printing routines try to break an expression -across lines at a natural point. This is a fairly expensive process. If -you are not overly concerned about where the end-of-line breaks come, you -can speed up the printing of expressions by turning off the switch -NOSPLIT. This switch is normally on. - -\endsection -\item[NOSPUR] -NOSPUR (page 210) - -The NOSPUR declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. - NOSPUR line-id{,line-id} - - -line-id is a scalar identifier that will be used as a line identifier. - -Examples: -vector a1,b1,c1; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*B1.C1 -nospur line2; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*G(LINE2,B1,C1) - -Nospur declarations can be removed by making the declaration SPUR. - -\endsection -\xitem[NOSUM command] -NOSUM command (pages 262, 271) - -\endsection -\xitem[NOSUM switch] -NOSUM switch (page 262) - -\endsection -\item[NOXPND @] -NOXPND @ (pages 254, 271) -NOXPND D (pages 253, 271) - -(Part of the EXCALC package) - -There are two forms of the NOXPND command, which controls the use of -the product rule for the d operator and the expansion into partial -derivatives. The default for both these is OFF. - - noxpnd d; - noxpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also XPND -\endsection -\xitem[NS dummy variable] -NS dummy variable (page 260) - -\endsection -\item[NULLSPACE] -NULLSPACE (page 166) - -NULLSPACE(matrix_expression) - -nullspace calculates for its MATRIX argument, A, a list of linear -independent vectors (a basis) whose linear combinations satisfy the -equation A x = 0. The basis is provided in a form such that as many -upper components as possible are isolated. - -Examples: -nullspace mat((1,2,3,4),(5,6,7,8)); { - [ 1 ] - [ ] - [ 0 ] - [ ] - [ - 3] - [ ] - [ 2 ] - , - [ 0 ] - [ ] - [ 1 ] - [ ] - [ - 2] - [ ] - [ 1 ] - } - -Note that with B := NULLSPACE A, the expression LENGTH B is the -nullity of A, and that SECOND LENGTH A - LENGTH B calculates the rank -of A. The rank of a matrix expression can also be found more directly -by the RANK operator. - -In addition to the REDUCE matrix form, NULLSPACE accepts as input a -matrix given as a LIST of lists, that is interpreted as a row matrix. If -that form of input is chosen, the vectors in the result will be -represented by lists as well. This additional input syntax facilitates -the use of NULLSPACE in applications different from classical linear -algebra. - -\endsection -\item[NUM] -NUM (page 131) -The NUM operator returns the numerator of its argument. - - NUM(expression) or NUM simple_expression - -expression can be any valid REDUCE scalar expression. - -Examples: -num(100/6); 50 -num(a/5 + b/6); 6*A + 5*B -num(sin(x)); SIN(X) - -NUM returns the numerator of the expression after it has been simplified -by REDUCE. As seen in the examples, this includes putting sums of rational -expressions over a common denominator, and reducing common factors where -possible. If the expression is not a rational expression, it is returned -unchanged. - -\endsection -\item[NUMVAL] -NUMVAL - -With ROUNDED on, elementary functions with numerical arguments -will return a numerical answer where appropriate. If you wish to inhibit -this evaluation, NUMVAL should be turned off. It is normally on. - -Examples: - on rounded; - cos 3.4; - 0.966798192579 - off numval; - cos 3.4; COS(3.4) - -\endsection -\item[NUM_INT] -NUM_INT (page 182) - -For the numerical evaluation of univariate integrals over a finite -interval the following strategy is used: If INT finds a formal -antiderivative which is bounded in the integration interval, this is -evaluated and the end points and the difference is returned. -Otherwise a Chebyshev fit is computed, starting with order 20, -eventually up to order 80. If that is recognized as sufficiently -convergent it is used for computing the integral by directly -integrating the coefficient sequence. If none of these methods is -successful, an adaptive multilevel quadrature algorithm is used. - -For multivariate integrals only the adaptive quadrature is used. This -algorithm tolerates isolated singularities. The value ITERATIONS here -limits the number of local interval intersection levels. a is a -measure for the relative total discretization error (comparison of -order 1 and order 2 approximations). - -NUM_INT(exp,var=(l .. u) [,var=(l .. u),...] [,accuracy=a][,iterations=i]) - -where exp is the function to be integrated, var are the integration -variables, l are the lower bounds, u are the upper bounds. - -Result is the value of the integral. - -Example: - on rounded; - num_int(sin x,x=(0 .. pi)); 2.0 - -\endsection -\item[NUM_MIN] -NUM_MIN (page 182) - -The Fletcher Reeves version of the STEEPEST_DESCENT algorithms is used -to find the minimum of a function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be specified; if not, -random values are taken instead. The steepest descent algorithms in -general find only local minima. - -Syntax: - - NUM_MIN(exp, var[=val] [,var[=val] ... [,accuracy=a] [,iterations=i]) -NUM_MIN(exp, {var[=val] [,var[=val} ...] } [,accuracy=a] [,iterations=i]) - -where exp is a function expression, var are the variables in exp and -val are the (optional) start values. For a and i see NUMERIC_ACCURACY. - -NUM_MIN tries to find the next local minimum along the descending path -starting at the given point. The result is a LIST with the minimum -function value as first element followed by a list of equations, where -the variables are equated to the coordinates of the result point. - -Examples: - load numeric; - num_min(sin(x)+x/5, x); { - 0.0775892231689,{x=4.51200216375}} - num_min(sin(x)+x/5, x=0); { - 1.33416631212,{x= - 1.78326532423}} - -\endsection -\item[NUM_ODESOLVE] -NUM_ODESOLVE (page 182) - -The Runge-Kutta method of order 3 finds an approximate graph for the -solution of real ODE initial value problem. - -NUM_ODESOLVE(exp,depvar=start, indep=(from .. to) [,accuracy=a][,iterations=i]) -NUM_ODESOLVE({exp,exp,...},{depvar=start,depvar=start,...} indep=(from .. to) - [,accuracy=a][,iterations=i]) - -where depvar and start specify the dependent variable(s) and the -starting point value (vector), indep, from and to specify the -independent variable and the integration interval (starting point and -end point), exp are equations or expressions which contain the first -derivative of the independent variable with respect to the dependent -variable. - -The ODEs are converted to an explicit form, which then is used for a -Runge Kutta iteration over the given range. The number of steps is -controlled by the value of i (default: 20). If the steps are too -coarse to reach the desired accuracy in the neighborhood of the -starting point, the number is increased automatically. - -Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. - -Example: -num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5); - - {{0.0,1.0},{0.2,1.2214},{0.4,1.49181796},{0.6,1.8221064563}, - {0.8,2.2255208258},{1.0,2.7182511366}} - -If in exp the differential is not isolated on the left-hand side, -please ensure that the dependent variable is explicitly declared using -a DEPEND otherwise the formal derivative will be computed to zero by -REDUCE. - -The operator SOLVE is used to convert the form into an explicit -ODE. If that process fails or has no unique result, the evaluation is -stopped with an error message. - -\endsection -\item[NUM_SOLVE] -NUM_SOLVE (page 182) - -An adaptively damped Newton iteration is used to find an approximative -root of a function (function vector) or the solution of an EQUATION -(equation system). The expressions must have continuous derivatives -for all variables. A starting point for the iteration can be -given. If not given random values are taken instead. When the number -of forms is not equal to the number of variables, the Newton method -cannot be applied. Then the minimum of the sum of absolute squares is -located instead. - -With COMPLEX on, solutions with imaginary parts can be found, if -either the expression(s) or the starting point contain a nonzero -imaginary part. - - NUM_SOLVE(exp, var[=val][,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, var[=val],...,var[=val] [,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, {var[=val],...,var[=val]} - [,accuracy=a][,iterations=i]) - -where exp are function expressions, - var are the variables, - val are optional start values. -For a and i see NUMERIC_ACCURACY. - -NUM_SOLVE tries to find a zero/solution of the expression(s). Result -is a list of equations, where the variables are equated to the -coordinates of the result point. - -The Jacobian matrix is stored as side effect the shared jacobian. - -Examples: -num_solve({sin x=cos y, x + y = 1},{x=1,y=2}); - {X= - 52.1216769476,Y=53.1216769476} - [COS(X) SIN(Y)] -jacobian; [ ] - [ 1 1 ] -\endsection -\xitem[Number] -Number (pages 34, 35) - -\endsection -\item[NUMBERP] -NUMBERP (page 46) -The NUMBERP operator returns TRUE if its argument is a number, -and NIL otherwise. - - NUMBERP(expression) or NUMBERP expression - -expression can be any REDUCE scalar expression. - -Examples: -cc := 15.3; CC := 15.3 -if numberp(cc) then write "number" else write "nonnumber"; number -if numberp(cb) then write "number" else write "nonnumber"; nonnumber - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[NUMERIC package] -NUMERIC package (page 337) - -The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use the ROUNDED -mode arithmetic of REDUCE, including the variable precision feature -which is exploited in some algorithms in an adaptive manner in order -to reach the desired accuracy. - -\endsection -\xitem[Numerical operator] -Numerical operator (page 71) - -\endsection -\xitem[Numerical precision] -Numerical precision (page 36) - -\endsection -\item[ODD] -ODD (page 90) - - ODD identifier{,identifier} - -This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner -are transformed if the first argument contains a minus sign. Any -other arguments are not affected. - -Examples: - odd f; - f(-a) -F(A) - f(-a,-b) -F(A,-B) - f(a,-b) F(A,-B) - -If say F is declared odd, then F(0) is replaced by zero unless F is -also declared non zero by the declaration NONZERO. - -\endsection -\xitem[ODEDEGREE] -ODEDEGREE (page 350) - -\endsection -\xitem[ODELINEARITY] -ODELINEARITY (page 350) - -\endsection -\xitem[ODEORDER] -ODEORDER (page 350) - -\endsection -\item[ODESOLVE] -ODESOLVE (pages 183, 349) - -Main Author: Malcolm A.H. MacCallum -Other contributors: Francis Wright, Alan Barnes - -Ordinary Differential Equations Solver. - -The ODESOLVE package is a solver for ordinary differential -equations. At the present time it has very limited capabilities. -It can handle only a single scalar equation presented as an -algebraic expression or equation, and it can solve only first- -order equations of simple types, linear equations with constant -coefficients and Euler equations. These solvable types are exactly -those for which Lie symmetry techniques give no useful information. - -For example, the evaluation of - depend(y,x); - odesolve(df(y,x)=x**2+e**x,y,x); -yields the result - X 3 - 3*E + 3*ARBCONST(1) + X - {Y=---------------------------} - 3 - -\endsection -\item[OFF] -OFF (pages 68, 69) - -The OFF command is used to turn switches off. - - OFF switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already off. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ON] -ON (pages 68, 69) - -The ON command is used to turn switches on. - - ON switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already on. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ONE_OF] -ONE_OF (page 86) -The operator ONE_OF is used to represent an indefinite choice -of one element from a finite set of objects. - -Example: - x=one_of{1,2,5} - -This equation encodes that x can take one of the values 1,2 or 5 - -REDUCE generates a ONE_OF form in cases when an implicit ROOT_OF -expression could be converted to an explicit solution set. A ONE_OF -form can be converted to a SOLVE solution using EXPAND_CASES. See -ROOT_OF. - -\endsection -\item[OPERATOR] -OPERATOR (page 202) - -Use the OPERATOR declaration to declare your own operators. - - OPERATOR identifier{,identifier} - -identifier can be any valid REDUCE identifier, which is not the name -of a MATRIX, ARRAY, scalar variable or previously-defined operator. - -Examples: -operator dis,fac; -let dis(~x,~y) = sqrt(x^2 + y^2); -dis(1,2); SQRT(5) - 2 -dis(a,10); SQRT(A + 100) -on rounded; -dis(1.5,7.2); 7.35459040329 -let fac(~n) = - if n=0 then 1 - else if not(fixp n and n>0) - then rederr "choose non-negative integer" - else for i := 1:n product i; - -fac(5); 120 -fac(-2); ***** choose non-negative integer - -The first operator is the Euclidean distance metric, the distance of -point (x,y) from the origin. The second operator is the factorial. - -Operators can have various properties assigned to them; they can be -declared INFIX, LINEAR, SYMMETRIC, ANTISYMMETRIC, or NONCOMmutative. -The default operator is prefix, nonlinear, and commutative. -Precedence can also be assigned to operators using the declaration -PRECEDENCE. - -Functionality is assigned to an operator by a LET statement or a -FORALL...LET statement, (or possibly by a procedure with the name of -the operator). Be careful not to redefine a system operator by -accident. REDUCE permits you to redefine system operators, giving you -a warning message that the operator was already defined. This -flexibility allows you to add mathematical rules that do what you want -them to do, but can produce odd or erroneous behaviour if you are not -careful. - -You can declare operators from inside PROCEDUREs, as long as they are -not local variables. Operators defined inside procedures are global. -A formal parameter may be declared as an operator, and has the effect -of declaring the calling variable as the operator. - -\endsection -\xitem[Operator precedence] -Operator precedence (page 39, 41) - -\endsection -\item[ORDER] -ORDER (pages 101, 114) - -The ORDER declaration changes the order of precedence of kernels for -display purposes only. - - ORDER identifier{,identifier} - -kernel must be a valid KERNEL or OPERATOR name complete with argument. - -Examples: -x + y + z + cos(a); COS(A) + X + Y + Z -order z,y,x,cos(a); -x + y + z + cos(a); Z + Y + X + COS(A) - 2 2 -(x + y)**2; Y + 2*Y*X + X -order nil; - 2 2 -(z + cos(z))**2; COS(Z) + 2*COS(Z)*Z + Z - -ORDER affects the printing order of the identifiers only; internal -order is unchanged. Change internal order of evaluation with the -declaration KORDER. You can use ORDER to feature variables or -functions you are particularly interested in. - -Declarations made with ORDER are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, -specific kernels named in new declarations are removed from previous -ones and given the new priority. Return to the standard canonical -printing order with the statement ORDER NIL. - -The print order specified by ORDER commands is not in effect if the -switch PRI is off. - -\endsection -\xitem[ordering exterior form] -ordering - exterior form (page 268) - -\endsection -\xitem[ordinary differential equations] -ordinary differential equations (page 349) - -\endsection -\item[ORDP] -ORDP (pages 46, 92) - -The ORDP logical operator returns TRUE if its first argument is -ordered ahead of its second argument in canonical internal ordering, -or is identical to it. - - ORDP(expression1,expression2) - -expression1 and expression2 can be any valid REDUCE scalar expression. - -Examples: -if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no"; no -if ordp(101,100) then write "yes" else write "no"; yes -if ordp(x,x) then write "yes" else write "no"; yes - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[ORTHOVEC] -ORTHOVEC (pages 184, 353) - -Author: James W. Eastwood - -A Package for the Manipulation of Scalars and Vectors. - -ORTHOVEC is a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars -and vectors. Operations include addition, subtraction, dot and -cross products, division, modulus, div, grad, curl, laplacian, -differentiation, integration, and Taylor expansion. - -\endsection -\item[OUT] -OUT (pages 153, 154) - -The OUT command directs output to the filename that is its argument, -until another OUT changes the output file, or SHUT closes it. - OUT filename or OUT "pathname " or OUT T - -filename must be in the current directory, or be a valid complete -file description for your system. If the file name is not -in the current directory, quote marks are needed around the file name. -If the file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. - - -To restore output to the terminal, type OUT T, or SHUT the -file. When you use OUT T, the file remains available, and if you -open it again (with another OUT), new material is appended rather -than overwriting. - -To write a file using OUT that can be input at a later time, the -switch NAT must be turned off, so that the standard linear form -is saved that can be read in by IN. If NAT is on, exponents -are printed on the line above the expression, which causes trouble -when REDUCE tries to read the file. - -There is a slight complication if you are using the OUT command from -inside a file to create another file. The ECHO switch is normally -off at the top-level and on while reading files (so you can see what is -being read in). If you create a file using OUT at the top-level, -the result lines are printed into the file as you want them. But if you -create such a file from inside a file, the ECHO switch is on, and -every line is echoed, first as you typed it, then as REDUCE parsed it, and -then once more for the file. Therefore, when you create a file from -a file, you need to turn ECHO off explicitly before the OUT -command, and turn it back on when you SHUT the created file, so your -executing file echoes as it should. This behaviour also means that as you -watch the file execute, you cannot see the lines that are being put into -the OUT file. As soon as you turn ECHO on, you can see -output again. - -\endsection -\item[OUTPUT] -OUTPUT (page 100) - -When OUTPUT is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default is -ON. - - -Turn output OFF if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large expressions -for display. Results are still available with WS, or in their -assigned variables. - -\endsection -\xitem[Output] -Output (pages 105, 110) - -\endsection -\xitem[Output declaration] -Output declaration (pages 100, 101) - -\endsection -\item[OVERVIEW] -OVERVIEW - -When OVERVIEW is on, the amount of detail reported by the factoriser -switches TRFAC and TRALLFAC is reduced. - - -\endsection -\item[PART] -PART (pages 49, 113, 116) -The operator PART permits the extraction of various parts or -operators of expressions and LISTS. - - PART(expression,integer{,integer}) - -expression can be any valid REDUCE expression or a list, integer may -be an expression that evaluates to a positive or negative integer or -0. A positive integer n picks up the nth term, counting from the -first term toward the end. A negative integer n picks up the nth -term, counting from the back toward the front. The integer 0 picks up -the operator (which is LIST when the expression is a list). - -Examples: - 2 3 -part((x + y)**5,4); 10*X *Y - - 2 -part((x + y)**5,4,2); X - -part((x + y)**5,4,2,1); X -part((x + y)**5,0); PLUS - 4 -part((x + y)**5,-5); 5*x *y - - 5 4 3 2 4 5 -part((x + y)**5,4) := sin(x); x + 5*x *y + 10*x *y + sin(x) + 5*x*y + y - -alist := {x,y,{aa,bb,cc},x**2*sqrt(y)}; - ALIST := {X, - Y, - {AA,BB,CC}, - 2 - SQRT(Y)*X } -part(alist,3,2); BB -part(alist,4,0); TIMES - -Additional integer arguments after the first one examine the terms -recursively, as shown above. In the third line, the fourth term is -picked from the original polynomial, 10x^2y^3, then the second term -from that, x^2, and finally the first component, x. If an integer's -absolute value is too large for the appropriate expression, a message -is given. - -PART works on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind -the current switch settings. It is important to realise that the -switch settings change the operation of PART. PRI must be on when -PART is used. - -When PART is used on a polynomial expression that has minus signs, the -+ is always returned as the top-level operator. The minus is found as -a unary operator attached to the negative term. - -PART can also be used to change the relevant part of the expression or -list as shown in the sixth example line. The PART operator returns the -changed expression, though original expression is not changed. You can -also use PART to change the operator. - -\endsection -\xitem[partial differentiation] -partial differentiation (page 251) - -\endsection -\item[PAUSE] -PAUSE (page 160)) -The PAUSE command, given in an interactive file, stops operation and -asks if you want to continue or not. - -Examples: -An interactive file is running, and at some point you see the -question - Cont? (Y or N) -If you type y {Return} -the file continues to run until the next pause or the end. -If you type n {Return} - -you will get a numbered REDUCE prompt, and be allowed to enter and -execute any REDUCE statements. If you later wish to continue with the -file, type - cont; -and the file resumes. - -To use PAUSE in your own interactive files, type - -PAUSE; - -in the file wherever you want it. - -PAUSE does not allow you to continue without typing either Y or N. -Its use is to slow down scrolling of interactive files, or to let you -change parameters or switch settings for the calculations. - -If you have stopped an interactive file at a PAUSE, and do not wish to -resume the file, type END;. This does not end the REDUCE session, but -stops input from the file. A second END; ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an -END; brings you back to the top level, not the file directly above. - -A PAUSE typed from the terminal has no effect. - -\endsection -\xitem[PCLASS] -PCLASS (pages 379, 380, 383) - -\endsection -\xitem[Percent sign] -Percent sign (page 38) - -\endsection -\item[PERIOD] -PERIOD (page 111) - -When PERIOD is on, periods are added after integers in -Fortran-compatible output (when FORT is on). There is no effect -when FORT is off. Default is ON. - -\endsection -\item[PF] -PF (page 83) - - PF(expression,variable) - -PF transforms expression into a LIST of partial fractions with respect -to the main variable, variable. PF does a complete partial fraction -decomposition, and as the algorithms used are fairly unsophisticated -(factorisation and the extended Euclidean algorithm), the code may be -unacceptably slow in complicated cases. - -Examples: - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,--------------} - x + 2 x + 1 2 - x + 2*x + 1 -off exp; -pf(2/((x+1)^2*(x+2)),x); - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,----------} - x + 2 x + 1 2 - (x + 1) - - 2 -for each j in ws sum j; ------------------ - 2 - (x + 2)*(x + 1) - -If you want the denominators in factored form, turn EXP off, as shown -in the second example above. As shown in the final example, the FOR -EACH construct can be used to recombine the terms. Alternatively, one -can use the operations on lists to extract any desired term. - -\endsection -\xitem[PFORM command] -PFORM command (page 271) - -\endsection -\xitem[PFORM statement] -PFORM statement (page 249) - -\endsection -\item[PI] -PI (page 37) - -The identifier PI is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. - - -PI may be used as a looping variable in a FOR statement, -or as a local variable in a PROCEDURE. Its value in such cases will be -taken from the local environment. - -\endsection -\xitem[PLOT] -PLOT (page 181) - -\endsection -\item[POCHHAMMER] -POCHHAMMER (pages 185, 394) - -The POCHHAMMER operator implements the Pochhammer notation -(shifted factorial). - - POCHHAMMER(expression,expression) - -Examples: -load_package specfn; (SPECFN) -pochhammer(17,4); 116280 - - FACTORIAL(2*Z) -pochhammer(1/2,z); ------------------- - 2*Z - 2 *FACTORIAL(Z) - -A number of complex rules for POCHHAMMER are inactive, because they -cause a huge system load in algebraic mode. If one wants to use more -rules for the simplification of Pochhammer's notation, one can do: - let special!*pochhammer!*rules; - -\endsection -\item[POLYGAMMA] -POLYGAMMA (pages 185, 395) - -The POLYGAMMA operator returns the Polygamma function. - - Polygamma(n,x) := df(Psi(z),z,n); - - POLYGAMMA(integer,expression) - -Examples: - load_package specfn; (SPECFN) - PI - 6 - Polygamma(1,2); --------- - 6 - on rounded; - Polygamma(1,2.35); 0.52849689109 - -The POLYGAMMA function is used for simplification of the ZETA function -for some arguments. - -\endsection -\xitem[Polynomial] -Polynomial (page 119) - -\endsection -\xitem[Polynomial equations] -Polynomial equations (page 181) - -\endsection -\xitem[POSITIVE] -POSITIVE (page 368) - -\endsection -\xitem[power series] -power series (page 413) - -\endsection -\xitem[power series arithmetic] -power series - arithmetic (page 422) - composition (page 420) - differentiation (page 422) - of integral (page 415) - of user defined function (page 415) - -\endsection -\item[PRECEDENCE] -PRECEDENCE (page 94) - -The PRECEDENCE declaration attaches a precedence to an infix operator. - - PRECEDENCE operator, known_operator - -operator should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. -known_operator must be a system infix operator or have had its -precedence already declared. - -Examples: -operator f,h; -precedence f,+; -precedence h,*; -a + f(1,2)*c; (1 F 2)*C + A -a + h(1,2)*c; 1 H 2*C + A -a*1 f 2*c; A F 2*C -a*1 h 2*c; 1 H 2*A*C - -The operator whose precedence is being declared is inserted into the -infix operator precedence list at the next higher place than -known-operator. - -Attaching a precedence to an operator has the side effect of declaring -the operator to be infix. If the identifier argument for PRECEDENCE -has not been declared to be an operator, an attempt to use it causes -an error message. After declaring it to be an operator, it becomes an -infix operator with the precedence previously given. Infix operators -may be used in prefix form; if they are used in infix form, a space -must be left on each side of the operator to avoid ambiguity. -Declared infix operators are always binary. - -To see the infix operator precedence list, enter symbolic mode and -type PRECLIS!*;. The lowest precedence operator is listed first. - -All prefix operators have precedence higher than infix operators. - -\endsection -\item[PRECISE] -PRECISE (page 78) - -When the PRECISE switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. - -Examples: -sqrt(x**2); X -(x**2)**(1/4); SQRT(X) -on precise; -sqrt(x**2); ABS(X) -(x**2)**(1/4); SQRT(ABS(X)) - -In many types of mathematical work, simplification of powers and surds -can proceed by the fastest means of simplifying the exponents -arithmetically. When it is important to you that the positive root be -returned, turn PRECISE on. One situation where this is important is -when graphing square-root expressions such as sqrt(x^2+y^2) to avoid a -spike caused by REDUCE simplifying sqrt(y^2) to y when x is zero. - -\endsection -\item[PRECISION] -PRECISION (pages 132, 374) - -The PRECISION declaration sets the number of decimal places used when -ROUNDED is on. Default is system dependent, and normally about 12. - - PRECISION(integer) or PRECISION integer - -integer must be a positive integer. When integer is 0, the current -precision is displayed, but not changed. There is no upper limit, but -precision of greater than several hundred causes unpleasantly slow -operation on numeric calculations. - -Examples: -on rounded; -7/9; 0.777777777778 -precision 20; 20 -7/9; 0.77777777777777777778 -sin(pi/4); 0.7071067811865475244 - -Trailing zeroes are dropped, so sometimes fewer than 20 decimal places -are printed as in the last example. Turn on the switch FULLPREC if -you want to print all significant digits. The ROUNDED mode carries -calculations to two more places than given by PRECISION, and rounds -off. - -\endsection -\item[PREDUCE] -PREDUCE (page 308) - - PREDUCE(p, {exp, ... }[,vars]) - -where p is an expression, and {exp, ... } is a list of expressions or -equations and vars is an optional list of variables (see IDEAL -parameters). - -PREDUCE computes the remainder of EXP modulo the given set of -polynomials resp. equations. This result is unique (canonical) only -if the given set is a GROEBNER basis under the current TERM order. - -see also: PREDUCET operator. - -\endsection -\item[PREDUCET] -PREDUCET (page 311) - - PREDUCE(p,{v=exp...}[,vars]) - -where p is an expression, v are kernels (simple or indexed variables), -EXP are polynomials and optional vars is a variable list (see IDEAL -parameters). - -PREDUCET computes the remainder of p modulo {exp,...} similar to -PREDUCE, but the result is an equation which expresses the remainder -as combination of the polynomials. - -Example: - - gb2 := {g1=2*x - y + 1,g2=9*y**2 - 2*y - 199}$ - preducet(q=x**2,gb2); - - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2 - - -\endsection -\xitem[Prefix] -Prefix (pages 71, 93, 95) - -\endsection -\xitem[Prefix operator] -Prefix operator (page 38, 39) - -\endsection -\item[PRET] -PRET (pages 217, 218) - -When PRET is on, input is printed in standard REDUCE format and then -evaluated. - -Examples: -on pret; -(x+1)^3; (x + 1)**3; - 3 2 - X + 3*X + 3*X + 1 - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - procedure fac n; - if not (fixp n and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n - 1 product i + 1; - - FAC - -fac 5; fac 5; - 120 - -Note that all input is converted to lower case except strings (which -keep the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on -each side. In addition, syntactical constructs like IF...THEN...ELSE -are printed in a standard format. - -\endsection -\xitem[PRETTYPRINT] -PRETTYPRINT (page 218) - -\endsection -\xitem[Prettyprinting] -Prettyprinting (pages 217, 218) - -\endsection -\xitem[PRGEN] -PRGEN (page 378) - -\endsection -\item[PRI] -PRI (page 101) - -When PRI is on, the declarations ORDER and FACTOR can -be used, and the switches ALLFAC, DIV, RAT, -and REVPRI take effect when they are on. Default is ON. - - -Printing of expressions is faster with PRI off. The expressions are -then returned in one standard form, without any of the display options that -can be used to feature or display various parts of the expression. You can -also gain insight into REDUCE's representation of expressions with -PRI off. - -\endsection -\item[PRIMEP] -PRIMEP (page 46) - - PRIMEP(expression) or PRIMEP simple_expression - -If expression evaluates to a integer, PRIMEP returns TRUE if -expression is a prime number and NIL otherwise. If expression does -not have an integer value, a type error occurs. - -Examples: -if primep 3 then write "yes" else write "no"; YES -if primep a then 1; ***** A invalid as integer - -\endsection -\item[PRINT_PRECISION] -PRINT_PRECISION (page 133) - - PRINT_PRECISION(integer) or PRINT_PRECISION integer - -In ROUNDED mode, numbers are normally printed to the specified -precision. If the user wishes to print such numbers with less -precision, the printing precision can be set by the declaration -PRINT_PRECISION. - -Examples: -on rounded; -1/3; 0.333333333333 -print_precision 5; -1/3 0.33333 - -\endsection -\item[PROCEDURE] -PROCEDURE (page 169) - -The PROCEDURE command allows you to define a mathematical operation as a -function with arguments. - PROCEDURE identifier (arg{,arg});body - -The option may be ALGEBRAIC or SYMBOLIC, indicating the mode under -which the procedure is executed, or REAL or INTEGER, indicating the -type of answer expected. The default is algebraic. Real or integer -procedures are subtypes of algebraic procedures; type-checking is done -on the results of integer procedures, but not on real procedures (in -the current REDUCE release). identifier may be any valid REDUCE -identifier that is not already a procedure name, operator, ARRAY or -MATRIX. arg is a formal parameter that may be any valid REDUCE -identifier. body is a single statement (a GROUP or BLOCK statement -may be used) with the desired activities in it. - -Examples: - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - FAC -fac(0); 1 -fac(5); 120 -fac(-5); ***** choose nonneg. integer only - -Procedures are automatically declared as operators upon definition. -When REDUCE has parsed the procedure definition and successfully -converted it to a form for its own use, it prints the name of the -procedure. Procedure definitions cannot be nested. Procedures can -call other procedures, or can recursively call themselves. Procedure -identifiers can be cleared as you would clear an operator. Unlike LET -statements, new definitions under the same procedure name replace the -previous definitions completely. - -Be careful not to use the name of a system operator for your own -procedure. REDUCE may or may not give you a warning message. If you -redefine a system operator in your own procedure, the original -function of the system operator is lost for the remainder of the -REDUCE session. - -Procedures may have none, one, or more than one parameter. A REDUCE -parameter is a formal parameter only; the use of x as a parameter in a -PROCEDURE definition has no connection with a value of x in the REDUCE -session, and the results of calling a procedure have no effect on the -value of x. If a procedure is called with x as a parameter, the -current value of x is used as specified in the computation, but is not -changed outside the procedure. Making an assignment statement by := -with a formal parameter on the left-hand side only changes the value -of the calling parameter within the procedure. - -Using a LET statement inside a procedure always changes the value -globally: a LET with a formal parameter makes the change to the -calling parameter. LET statements cannot be made on local variables -inside BEGIN...END BLOCKS. When CLEAR statements are used on formal -parameters, the calling variables associated with them are cleared -globally too. The use of LET or CLEAR statements inside procedures -should be done with extreme caution. - -Arrays and operators may be used as parameters to procedures. The -body of the procedure can contain statements that appropriately -manipulate these arguments. Changes are made to values of the calling -arrays or operators. Simple expressions can also be used as -arguments, in the place of scalar variables. Matrices may not be used -as arguments to procedures. - -A procedure that has no parameters is called by the procedure name, -immediately followed by empty parentheses. The empty parentheses may -be left out when writing a procedure with no parameters, but must -appear in a call of the procedure. If this is a nuisance to you, use -a LET statement on the name of the procedure (i.e., LET NOARGS = -NOARGS()) after which you can call the procedure by just its name. - -Procedures that have a single argument can leave out the parentheses -around it both in the definition and procedure call. (You can use the -parentheses if you wish.) Procedures with more than one argument must -use parentheses, with the arguments separated by commas. - -Procedures often have a BEGIN...END block in them. Inside the block, -local variables are declared using SCALAR, REAL or INTEGER -declarations. The declarations must be made immediately after the -word BEGIN, and if more than one type of declaration is made, they are -separated by semicolons. REDUCE currently does no type checking on -local variables; REAL and INTEGER are treated just like SCALAR. -Actions take place as specified in the statements inside the block -statement. Any identifiers that are not formal parameters or local -variables are treated as global variables, and activities involving -these identifiers are global in effect. - -If a return value is desired from a procedure call, a specific RETURN -command must be the last statement executed before exiting from the -procedure. If no RETURN is used, a procedure returns a zero or no -value. - -Procedures are often written in a file using an editor, then the file -is input using the command IN. This method allows easy changes in -development, and also allows you to load the named procedures whenever -you like, by loading the files that contain them. - -\endsection -\xitem[Procedure body] -Procedure body (pages 171--173) - -\endsection -\xitem[Procedure heading] -Procedure heading (page 170) - -\endsection -\item[PROD] -PROD operator (page 403) - -The operator PROD returns -the indefinite or definite product of a given expression. - - -PROD(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be multiplied, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: -prod(k/(k-2),k); k*( - k + 1) - -\endsection -\item[PRODUCT] -PRODUCT (page 57, 58) - -See the FOR loop construction. - -\endsection -\xitem[Program] -Program (page 38) - -\endsection -\xitem[Program structure] -Program structure (page 33) - -\endsection -\xitem[Proper statement] -Proper statement (pages 48, 53, 54) - -\endsection -\xitem[PRSYS] -PRSYS (pages 378, 382) - -\endsection -\xitem[PS] -PS (page 188) - -\endsection -\xitem[PS operator] -PS operator (page 414) - -\endsection -\xitem[PSCHANGEVAR operator] -PSCHANGEVAR operator (page 418) - -\endsection -\xitem[PSCOMPOSE operator] -PSCOMPOSE operator (page 420) - -\endsection -\xitem[PSDEPVAR operator] -PSDEPVAR operator (page 418) - -\endsection -\xitem[PSEXPANSIONPT operator] -PSEXPANSIONPT operator (page 418) - -\endsection -\xitem[PSEXPLIM operator] -PSEXPLIM operator (pages 414, 416) - -\endsection -\xitem[PSFUNCTION operator] -PSFUNCTION operator (page 418) - -\endsection -\item[PSI] -PSI (pages 185, 395) - -The PSI operator returns the Psi (or DiGamma) function. - - Psi(x) := df(Gamma(z),z)/ Gamma (z) - - GAMMA(expression) - -Examples: - load_package specfn; - 1 - 2*LOG(2) + PSI(---) + PSI(1) + 3 - 2 - Psi(3); ---------------------------------- - 2 - - on rounded; - - Psi(1); 0.577215664902 - -Euler's constant can be found as - Psi(1). - -\endsection -\xitem[PSINTCONST (shared)] -PSINTCONST (shared) (page 415) - -\endsection -\xitem[PSORDER operator] -PSORDER operator (page 417) - -\endsection -\xitem[PSORDLIM operator] -PSORDLIM operator (page 416) - -\endsection -\xitem[PSREVERSE operator] -PSREVERSE operator (page 419) - -\endsection -\xitem[PSSETORDER operator] -PSSETORDER operator (page 417) - -\endsection -\xitem[PSSUM operator] -PSSUM operator (page 421) - -\endsection -\xitem[PSTERM operator] -PSTERM operator (page 417) - -\endsection -\xitem[Puiseux expansion] -Puiseux expansion (page 419) - -\endsection -\xitem[PUTCSYSTEM command] -PUTCSYSTEM command (page 235) - -\endsection -\xitem[Quadrature] -Quadrature (page 182) - -\endsection -\item[QUIT] -QUIT (page 70) - -The QUIT command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are -at the top level, the QUIT command exits REDUCE. BYE is a synonym for -QUIT. - -\endsection -\xitem[QUOTE] -QUOTE (page 193) - -\endsection -\xitem[RANDOM] -RANDOM (page 74) - -\endsection -\xitem[RANDOM_NEW_SEED] -RANDOM_NEW_SEED (page 75) - -\endsection -\item[RANK] -RANK (page 167) - - RANK(matrix_expression) -RANK calculates the rank of its matrix argument. - -Examples: - rank mat((a,b,c),(d,e,f)); 2 - -The argument to RANK can also be a LIST of lists, interpreted either -as a row matrix or a set of equations. If that form of input is -chosen, the vectors in the result will be represented by lists as -well. This additional input syntax facilitates the use of RANK in -applications different from classical linear algebra. - -\endsection -\item[RAT] -RAT (page 104) - -When the RAT switch is on, and kernels have been selected to display -with the FACTOR declaration, the denominator is printed with each -term rather than one common denominator at the end of an expression. - -Examples: 3 - SIN(Y)*X + SIN(Y) + X -(x+1)/x + x**2/sin y; ------------------------ - SIN(Y)*X -factor x; - 3 - X + X*SIN(Y) + SIN(Y) -(x+1)/x + x**2/sin y; ------------------------ - X*SIN(Y) -on rat; - 2 - X -1 -(x+1)/x + x**2/sin y; -------- + 1 + X - SIN(Y) - -The RAT switch only has effect when the PRI switch is on. -When PRI is off, regardless of the setting of RAT, the -printing behaviour is as if RAT were off. RAT only has -effect upon the display of expressions, not their internal form. - -\endsection -\item[RATARG] -RATARG (pages 115, 128) - -When RATARG is on, rational expressions can be given to operators -such as COEFF and LTERM that normally require -polynomials in one of their arguments. When RATARG is off, rational -expressions cause an error message. - -Examples: 3 2 3 - X + X*Y + Y -aa := x/y**2 + 1/x + y/x**2; AA := ---------------- - 2 2 - X *Y - 3 2 3 - X + X*Y + Y -coeff(aa,x); ***** ---------------- invalid as POLYNOMIAL - 2 2 - X *Y -on ratarg; - Y 1 1 -coeff(aa,x); {----,----,0,-------} - 2 2 2 2 - X X X *Y - -\endsection -\item[RATIONAL] -RATIONAL (page 132) - -When RATIONAL is on, polynomial expressions with rational coefficients -are produced. - -Examples: - 2*X + 3*Y -x/2 + 3*y/4; ----------- - 4 - 2 - X + 5*X + 17 -(x**2 + 5*x + 17)/2; --------------- - 2 -on rational; - 1 3 -x/2 + 3y/4; ---*(X + ---*Y) - 2 2 - - 1 2 -(x**2 + 5*x + 17)/2; ---*(X + 5*X + 17) - 2 - -By using RATIONAL, polynomial expressions with rational coefficients -can be used in some commands that expect polynomials. With RATIONAL -off, such a polynomial becomes a rational expression, with denominator -the least common multiple of the denominators of the rational number -coefficients. - -\endsection -\xitem[Rational coefficient] -Rational coefficient (page 132) - -\endsection -\xitem[Rational function] -Rational function (page 119) - -\endsection -\item[RATIONALIZE] -RATIONALIZE (page 135) - -When the RATIONALIZE switch is on, denominators of rational expressions -that contain complex numbers or root expressions are simplified by -multiplication by their conjugates. - -Examples: - SQRT(3) + 1 -qq := (1+sqrt(3))/(sqrt(3)-7); QQ := ------------- - SQRT(3) - 7 -on rationalize; - - 4*SQRT(3) - 5 -qq; ------------------ - 23 - 2/3 1/3 - 6 - 4*6 + 16 -2/(4 + 6**(1/3)); -------------------- - 35 -on complex; - 1 - 2*i -(i-1)/(i+3); --------- - 5 - - -\endsection -\item[RATPRI] -RATPRI (page 104) - -When the RATPRI switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a linear -style. Default is ON. - -Examples: - 3 -3/17; ---- - 17 - 3*B + 2*Y -2/b + 3/y; ----------- - B*Y -off ratpri; -3/17; 3/17 -2/b + 3/y; (3*B + 2*Y)/(B*Y) - -\endsection -\xitem[RATROOT] -RATROOT (page 373) - -\endsection -\item[REAL] -REAL (page 61) - -The REAL declaration must be made immediately after a BEGIN (or other -variable declaration such as INTEGER and SCALAR) and declares local -integer variables. They are initialised to zero. - - REAL identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Real variables remain local, and do not share values with variables of -the same name outside the BEGIN...END block. When the block is -finished, the variables are removed. You may use the words INTEGER or -SCALAR in the place of REAL. REAL does not indicate type-checking by -the current REDUCE; it is only for your own information. Declaration -statements must immediately follow the BEGIN, without a semicolon -between BEGIN and the first variable declaration. - -Any variables used inside a BEGIN...END BLOCK that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Any array or matrix declared -inside a block is always global. - -\endsection -\xitem[Real] -Real (pages 34, 35) - -\endsection -\xitem[Real coefficient] -Real coefficient (page 132) - -\endsection -\item[REALROOTS] -REALROOTS (pages 369, 370) - -The operator REALROOTS finds that real roots of a polynomial to an -accuracy that is sufficient to separate them and which is a minimum of -6 decimal places. - - REALROOTS(p) - REALROOTS(p,from,to) - -where p is a univariate polynomial. The optional parameters from and -to classify an interval: if given, exactly the real roots in this -interval will be returned. from and to can also take the values -INFINITY or -INFINITY. If omitted all real roots will be returned. -Result is a LIST of equations which represent the roots of the -polynomial at the given accuracy. - -Examples: - realroots(x^5-2); {X=1.1487} - realroots(x^3-104*x^2+403*x-300,2,infinity); {X=3.0,X=100.0} - realroots(x^3-104*x^2+403*x-300,-infinity,2); {X=1} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[REDERR] -REDERR (page 173) - -\endsection -\item[REDUCT] -REDUCT (page 131) -The REDUCT operator returns the remainder of its expression after the -leading term is removed. - - REDUCT(expression,kernel) - -expression is ordinarily a polynomial. If RATARG is on, a rational -expression may also be used, otherwise an error results. kernel must -be a KERNEL. - -Examples: - 3 -reduct((x+y)**3,x); (x + y) - -reduct(x + sin(x)**3,sin(x)); x - 3 -reduct(x + sin(x)**3,y); sin(x) + x - -If the expression does not contain the kernel, REDUCT returns the -expression. - -\endsection -\xitem[side relations] -relations - side (page 241) - -\endsection -\item[REMAINDER] -REMAINDER (page 126) -The REMAINDER operator returns the remainder after its first -argument is divided by its second argument. - - REMAINDER(expression,expression) - -expression can be any valid REDUCE polynomial, and is not limited -to numeric values. - -Examples: -remainder(13,6); 1 -remainder(x**2 + 3*x + 2,x+1); 0 -remainder(x**3 + 12*x + 4,x**2 + 1); 11*X + 4 -remainder(sin(2*x),x*y); SIN(2*X) - -If the first argument to REMAINDER contains a denominator not equal to -1, an error occurs. - -\endsection -\item[REMFAC] -REMFAC (page 102) - -The REMFAC declaration removes the special factoring treatment of its -arguments that was declared with FACTOR. - -REMFAC kernel{,kernel} - -kernel must be a KERNEL or OPERATOR name that was declared as special -with the FACTOR declaration. - -\endsection -\xitem[REMFORDER command] -REMFORDER command (pages 268, 271) - -\endsection -\item[REMIND] -REMIND (page 206) - -The REMIND declaration removes the special status of its arguments -as indices, which was set in the INDEX declaration, in -high-energy physics calculations. - REMIND identifier{,identifier} - -identifier must have been declared to be of type INDEX. - -\endsection -\xitem[RENOSUM command] -RENOSUM command (pages 262, 271) - -\endsection -\item[REPART] -REPART (pages 72, 73, 75) - - REPART(expression) or REPART simple_expression - -This operator returns the real part of an expression, if that argument -has an numerical value. A non-numerical argument is returned as an -expression in the operators REPART and IMPART. - -Examples: -repart(1+i); 1 -repart(a+i*b); REPART(A) - IMPART(B) - -\endsection -\item[REPEAT] -REPEAT (pages 60, 61, 63, 65) - -The REPEAT command causes repeated execution of a statement UNTIL -the given condition is found to be true. The statement is always executed -at least once. - REPEAT statement UNTIL condition - -statement can be a single statement, GROUP statement, or -a BEGIN...END BLOCK. condition must be a logical -operator that evaluates to rue or nil. - -Examples: -<> until m = 0>>; - 400*X - 300*X - 200*X - 100*X - -<> until m <= 0>>; - -1 - -REPEAT must always be followed by an UNTIL with a condition. Be -careful not to generate an infinite loop with a condition that is -never true. In the second example, if the condition had been M = 0, -it would never have been true since M already had value -2 when the -condition was first evaluated. - -\endsection -\xitem[Reserved variable] -Reserved variable (pages 36, 37) - -\endsection -\item[REST] -REST (page 50) - -The REST operator returns a LIST containing all but the first element of -the list it is given. - REST(list) or REST list - - -list must be a non-empty list, but need not have more than one element. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D}; -rest alist; {B,C,D} -blist := {x,y,{aa,bb,cc},z}; BLIST := {X,Y,{AA,BB,CC},Z} -second rest blist; {AA,BB,CC} -clist := {c}; CLIST := C -rest clist; {} - -\endsection -\xitem[RESULT] -RESULT (page 378) - -\endsection -\item[RESULTANT] -RESULTANT (page 126) -The RESULTANT operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials -have a root in common. - RESULTANT(expression,expression,kernel) - -expression must be a polynomial containing kernel ; -kernel must be a KERNEL. - -Examples: -resultant(x**2 + 2*x + 1,x+1,x); 0 -resultant(x**2 + 2*x + 1,x-3,x); 16 -resultant(z**3 + z**2 + 5*z + 5, - z**4 - 6*z**3 + 16*z**2 - 30*z + 55, - z); 0 -resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); - 6 4 3 2 - 4*(x + 8*x - 15*x + 16*x - 60*x + 25) - -The resultant is the determinant of the Sylvester matrix, formed from the -coefficients of the two polynomials in the following way: - -Given two polynomials: - - n n-1 - a x + a1 x + ... + an - -and - m m-1 - b x + b1 x + ... + bm - -form the (m+n)x(m+n-1) Sylvester matrix by the following means: - - 0.......0 a a1 .......... an - 0....0 a a1 .......... an 0 - . . . . - a0 a1 .......... an 0.......0 - 0.......0 b b1 .......... bm - 0....0 b b1 .......... bm 0 - . . . . - b b1 .......... bm 0.......0 - -If the determinant of this matrix is 0, the two polynomials have a -common root. Finding the resultant of large expressions is -time-consuming, due to the time needed to find a large determinant. - -The sign conventions RESULTANT uses are those given in the article, -``Computing in Algebraic Extensions,'' by R. Loos, appearing in -Computer Algebra--Symbolic and Algebraic Computation, 2nd ed., edited -by B. Buchberger, G.E. Collins and R. Loos, and published by - -Springer-Verlag, 1983. - -These are: - resultant(p(x),q(x),x) = (-1)^{deg p(x)*deg q(x)} * resultant(q(x),p(x),x), - resultant(a,p(x),x) = a^{deg p(x)}, - resultant(a,b,x) = 1 - -where p(x) and q(x) are polynomials which have x as a variable, and -a and b are free of x. - -Error messages are given if RESULTANT is given a non-polynomial -expression, or a non-kernel variable. - -\endsection -\item[RETRY] -RETRY (page 157) -The RETRY command allows you to retry the latest statement that resulted -in an error message. - -Examples: -matrix a; -det a; ***** Matrix A not set -a := mat((1,2),(3,4)); A(1,1) := 1 - A(1,2) := 2 - A(2,1) := 3 - A(2,2) := 4 -retry; -2 - -RETRY remembers only the most recent statement that resulted in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. - -\endsection -\item[RETURN] -RETURN (pages 62--64) - -The RETURN command causes a value to be returned from inside a -BEGIN...END BLOCK. - BEGIN statements RETURN (expression) - END - -statements can be any valid REDUCE statements. The value of -expression is returned. - -Examples: -begin write "yes"; return a end; yes - A -procedure dumb(a); - begin if numberp(a) then return a - else return 10 end; - DUMB -dumb(x); 10 -dumb(-5); -5 -procedure dumb2(a); - begin c := a**2 + 2*a + 1; - d := 17; c*d; return end; - DUMB2 -dumb2(4); -c; 25 -d; 17 - -Note in DUMB2 above that the assignments were made as requested, but -the product C*D cannot be accessed. Changing the procedure to read -RETURN C*D would remedy this problem. - -The RETURN statement is always the last statement executed before -leaving the block. If RETURN has no argument, the block is exited but -no value is returned. A block statement does not need a RETURN ; the -statements inside terminate in their normal fashion without one. In -that case no value is returned, although the specified actions inside -the block take place. - -The RETURN command can be used inside <<...>> GROUP statements and -IF...THEN...ELSE commands that are inside BEGIN...END BLOCKs. It is -not valid in these constructions that are not inside a BEGIN...END -block. It is not valid inside FOR, REPEAT...UNTIL or WHILE...DO loops -in any construction. To force early termination from loops, the GO -TO(GOTO) command must be used. When you use nested block statements, -a RETURN from an inner block exits returning a value to the -next-outermost block, rather than all the way to the outside. - -\endsection -\item[REVERSE] -REVERSE (page 51) - -The REVERSE operator returns a LIST that is the reverse of the list it -is given. - REVERSE(list) or REVERSE list - -list must be a LIST. - -Examples: - 2 3 -aa := {c,b,a,{x**2,z**3},y}; AA := {C,B,A,{X ,Z },Y} - 2 3 -reverse aa; {Y,{X ,Z},A,B,C} - 2 3 -reverse(q . reverse aa); {C,B,A,{X ,Z },Y,Q} - -REVERSE and CONS can be used together to add a new element to the end -of a list (. adds its new element to the beginning). The REVERSE -operator uses a noticeable amount of system resources, especially if -the list is long. If you are doing much heavy-duty list manipulation, -you should probably design your algorithms to avoid much reversing of -lists. A moderate amount of list reversing is no problem. - -\endsection -\item[REVGRADLEX] -REVGRADLEX (page 293) - -The terms are ordered first with their total degree (degree sum), and -if the total degree is identical the comparison is the inverse of LEX -term order. With GROEBNER and GROEBNERF calculations this term order -is similar to GRADLEX term order; it is known as most efficient -ordering with respect to computing time. - -\endsection -\item[REVPRI] -REVPRI (page 105) - -When the REVPRI switch is on, terms are printed in reverse order from -the normal printing order. - -Examples: - 5 2 -x**5 + x**2 + 18 + sqrt(y); SQRT(Y) + X + X + 18 - -a + b + c + w; A + B + C + W - -on revpri; - 2 5 -x**5 + x**2 + 18 + sqrt(y); 17 + X + X + SQRT(Y) - -a + b + c + w; W + C + B + A - -Turn REVPRI on when you want to display a polynomial in ascending -rather than descending order. - -\endsection -\item[RHS] -RHS (page 47) -The RHS operator returns the right-hand side of an EQUATION, such as -those returned in a LIST by SOLVE. - - RHS(equation) or RHS equation - -equation must be an equation of the form left-hand side = right-hand side. - -Examples: - roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); - - 2 - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOTS := {X=----------------------------------------, - 2 - - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - X=-----------------------------------} - 2 - -root1 := rhs first roots; - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOT1 := ---------------------------------------- - 2 -root2 := rhs second roots; - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - ROOT2 := ----------------------------------- - 2 - -An error message is given if RHS is applied to something other than an -equation. - -\endsection -\xitem[Riemann Zeta Function] -Riemann Zeta Function (pages 185, 395) - -\endsection -\xitem[RIEMANNCONX command] -RIEMANNCONX command (pages 267, 271) - -\endsection -\xitem[Riemannian Connections] -Riemannian Connections (page 267) - -\endsection -\xitem[Rlisp] -Rlisp (page 213) - -\endsection -\item[RLISP88] -RLISP88 (page 204) - -Rlisp '88 is a superset of the Rlisp that has been traditionally used -for the support of REDUCE. It is fully documented in the book Marti, -J.B., ``RLISP '88: An Evolutionary Approach to Program Design and -Reuse'', World Scientific, Singapore (1993). It supports different -looping constructs from the traditional Rlisp, and treats ``-'' as a -letter unless separated by spaces. Turning on the switch RLISP88 -converts to Rlisp '88 parsing conventions in symbolic mode, and -enables the use of Rlisp '88 extensions. Turning off the switch -reverts to the traditional Rlisp and the previous mode (SYMBOLIC or -ALGEBRAIC) in force before RLISP88 was turned on. - -\endsection -\item[RLROOTNO] -RLROOTNO (page 369) - -The function RLROOTNO computes the number of real roots of p in the -specified region, but does not find the roots. - - RLROOTNO(expression) - RLROOTNO(expression, POSITIVE) - RLROOTNO(expression, NEGATIVE) - RLROOTNO(expression, lo, hi) - -For more details on the specification of an interval, see ISOLATER. - -Examples: - load_package roots; - rlrootno (x^3-3x^2+2x+10); 1 - rlrootno(x^3-3x^2+2x+10,positive); 0 -\endsection -\xitem[root finding] -root finding (page 367) - -\endsection -\item[ROOT_OF] -ROOT_OF (pages 85, 86) - -When the operator SOLVE is unable to find an explicit solution or if -that solution would be too complicated, the result is presented as -formal root expression using the internal operator ROOT_OF and a new -local variable. An expression with a top level ROOT_OF is implicitly a -list with an unknown number of elements since we can't always know how -many solutions an equation has. If a substitution is made into such an -expression, closed form solutions can emerge. If this occurs, the -ROOT_OF construct is replaced by an operator ONE_OF. At this point it -is of course possible to transform the result if the original SOLVE -operator expression into a standard SOLVE solution. To effect this, -the operator EXPAND_CASES can be used. - -Examples: 7 2 -solve(a*x^7-x^2+1,x); {x=root_of(a*x_ - x_ + 1,x_)} -sub(a=0,ws); {x=one_of(1,-1)} -expand_cases ws; {x=1,x=-1} - -The components of ROOT_OF and ONE_OF expressions can be processed as -usual with operators ARGLENGTH and PART. - -\endsection -\item[ROOT_MULTIPLICITES] -ROOT_MULTIPLICITES - -The ROOT_MULTIPLICITIES variable is set to the list of the -multiplicities of the roots of an equation by the SOLVE operator. - - -SOLVE returns its solutions in a list. The multiplicities of -each solution are put in the corresponding locations of the list -ROOT_MULTIPLICITIES. - -\endsection -\xitem[ROOT_VAL] -ROOT_VAL (page 370) - -\endsection -\item[ROOTACC] -ROOTACC (page 373) - -The operator ROOTACC allows you to set the accuracy up to which the -roots package computes its results. - - ROOTACC(n) - -Here n is an integer value. The internal accuracy of the ROOTS package -is adjusted to a value of MAX(6,N). The default value is 6. - -\endsection -\xitem[ROOTMSG] -ROOTMSG (page 373) - -\endsection -\xitem[ROOTPREC] -ROOTPREC (page 374) - -\endsection -\item[ROOTS] -ROOTS (pages 184, 369, 370) - -The operator ROOTS is the main top level function of the roots -package. It will find all roots, real and complex, of the polynomial -p to an accuracy that is sufficient to separate them and which is a -minimum of 6 decimal places. - - ROOTS(p) - -where p is a univariate polynomial. Result is a LIST of equations -which represent the roots of the polynomial at the given accuracy. In -addition, ROOTS stores separate lists of real roots and complex roots -in the global variables ROOTSREAL and ROOTSCOMPLEX. - -Examples: - - roots(x^5-2); {X=-0.929316 + 0.675188*I, - X=-0.929316 - 0.675188*I, - X=0.354967 + 1.09248*I, - X=0.354967 - 1.09248*I, - X=1.1487} - -The minimal accuracy of the result values is controlled by -ROOTACC. - -\endsection -\xitem[ROOTS package] -ROOTS package (page 367) - -\endsection -\xitem[ROOTS_AT_PREC] -ROOTS_AT_PREC (page 370) - -\endsection -\item[ROOTSCOMPLEX] -ROOTSCOMPLEX (page 369) - -When the operator ROOTS is called the complex roots are collected in -the global variable ROOTSCOMPLEX as LIST. - -\endsection -\item[ROOTSREAL] -ROOTSREAL (page 369) - -When the operator ROOTS is called the real roots are collected in the -global variable ROOTREAL as LIST. - -\endsection -\item[ROUND] -ROUND (page 75) - - ROUND(expression) - -If its argument has a numerical value, ROUND rounds it to the nearest -integer. For non-numeric arguments, the value is an expression in the -original operator. - -Examples: -round 3.4; 3 -round 3.5; 4 -round a; ROUND(A) - -\endsection -\item[ROUNDALL] -ROUNDALL (page 133) - -In ROUNDED mode, rational numbers are normally converted to a -floating point representation. If ROUNDALL is off, this conversion -does not occur. ROUNDALL is normally ON. - -Examples: -on rounded; -1/2; 0.5 -off roundall; - 1 -1/2; --- - 2 - -\endsection -\item[ROUNDBF] -ROUNDBF (page 133) - -When ROUNDED is on, the normal defaults cause underflows to be -converted to zero. If you really want the small number that results -in such cases, ROUNDBF can be turned on. - -Examples: -on rounded; -exp(-100000.1^2); 0 -on roundbf; -exp(-100000.1^2); 1.18441281937E-4342953505 - -If a polynomial is input in ROUNDED mode at the default precision into -any ROOTS function, and it is not possible to represent any of the -coefficients of the polynomial precisely in the system floating point -representation, the switch ROUNDBF will be automatically turned on. -All rounded computation will use the internal bigfloat representation -until the user subsequently turns ROUNDBF off. (A message is output to -indicate that this condition is in effect.) - -\endsection -\item[ROUNDED] -ROUNDED (pages 36, 44, 78, 108, 132, 372) - -When ROUNDED is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 -digits. The precise number can be found by the command PRECISION(0). - -Examples: -pi; PI - - 5 -35/217; ---- - 31 -on rounded; -pi; 3.14159265359 - -35/217; 0.161 - -sqrt(3); 1.73205080756 - -If more than the default number of decimal places are required, use the -PRECISION command to set the required number. - -\endsection -\item[Rule lists] -Rule lists (page 147) - -A RULE is an instruction to replace an algebraic expression -or a part of an expression by another one. - lhs => rhs or - lhs => rhs WHEN cond -lhs is an algebraic expression used as search pattern and -rhs is an algebraic expression which replaces matches of -rhs. => is the operator REPLACE. - -lsh can contain free variables which are preceded by a tilde ~ in -their leftmost position in lhs. If a rule has a WHEN cond part it -will fire only if the evaluation of cond has a result TRUE. cond may -contain references to free variables of lhs. - -Rules can be collected in a LIST which then forms a RULE LIST. RULE -LISTS can be used to collect algebraic knowledge for a specific -evaluation context. - -RULES and RULE LISTS are globally activated and deactivated by LET, -FORALL, CLEARRULES. For a single evaluation they can be locally -activate by WHERE. The active rules for an operator can be visualised -by SHOWRULES. - -Examples: -operator f,g,h; -let f(x) => x^2; - 2 -f(x); X -g_rules:={g(~n,~x)=>h(n/2,x) when evenp n, -g(~n,~x)=>h((1-n)/2,x) when not evenp n}$ -let g_rules; -g(3,x); H(-1,X) - -\endsection -\item[SAVEAS] -SAVEAS (page 99)) -The SAVEAS command saves the current workspace under the name of its -argument. - - SAVEAS identifier - -identifier can be any valid REDUCE identifier. - -Examples: - -(The numbered prompts are shown below, unlike in most examples) -1: solve(x^2-3); {x=sqrt(3),x= - sqrt(3)} -2: saveas rts(0)$ -3: rts(0); {x=sqrt(3),x= - sqrt(3)} - -SAVEAS works only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that -you did not assign to an identifier when you originally typed the -input. For access to previous output use WS. - -\endsection -\xitem[savesfs] -savesfs (page 393) - -\endsection -\item[SAVESTRUCTR] -SAVESTRUCTR (page 113) - -When SAVESTRUCTR is on, results of the STRUCTR command are returned as -a list whose first element is the representation for the expression -and the remaining elements are equations showing the relationships of -the generated variables. - -Examples: -off exp; - -structr((x+y)^3 + sin(x)^2); ANS3 - where - 3 2 - ANS3 := ANS1 + ANS2 - - ANS2 := SIN(X) - - ANS1 := X + Y - -ans3; ANS3 -on savestructr; - 3 2 -structr((x+y)^3 + sin(x)^2); {ANS3,ANS3=ANS1 + ANS2 ,ANS2=SIN(X),ANS1=X + Y} - 3 2 -ans3 where rest ws; (X + Y) + SIN(X) - -In normal operation, STRUCTR is only a display command. With -SAVESTRUCTR on, you can access the various parts of the expression -produced by STRUCTR. - -The generic system names use the stem ANS. You can change this to your -own stem by the command VARNAME. REDUCE adds integers to this stem -to make unique identifiers. - -\endsection -\xitem[Saving an expression] -Saving an expression (page 111) - -\endsection -\item[SCALAR] -SCALAR (pages 61, 62) - -The SCALAR declaration must be made immediately after a BEGIN (or -other variable declaration such as INTEGER and REAL) and declares -local scalar variables. They are initialised to 0. - - SCALAR identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Scalar variables remain local, and do not share values with variables -of the same name outside the BEGIN...END BLOCK. When the block is -finished, the variables are removed. You may use the words REAL or -INTEGER in the place of SCALAR. REAL and INTEGER do not indicate -type-checking by the current REDUCE; they are only for your own -information. Declaration statements must immediately follow the -BEGIN, without a semicolon between BEGIN and the first variable -declaration. - -Any variables used inside BEGIN...END blocks that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Arrays declared inside a block -are always global. - -\endsection -\xitem[Scalar] -Scalar (page 43) - -\endsection -\xitem[SCALEFACTORS operator] -SCALEFACTORS operator (page 234) - -\endsection -\item[SCIENTIFIC_NOTATION] -SCIENTIFIC_NOTATION (page 34) - - SCIENTIFIC_NOTATION(m) or SCIENTIFIC_NOTATION(m,n) - -m and n are positive integers. SCIENTIFIC_NOTATION controls the -output format of floating point numbers. At the default settings, any -number with five or less digits before the decimal point is printed in -a fixed-point notation, e.g., 12345.6. Numbers with more than five -digits are printed in scientific notation, e.g., 1.234567E+5. -Similarly, by default, any number with eleven or more zeros after the -decimal point is printed in scientific notation. - -When SCIENTIFIC_NOTATION is called with the numerical argument m a -number with more than m digits before the decimal point, or m or more -zeros after the decimal point, is printed in scientific notation. -When SCIENTIFIC_NOTATION is called with a list {m, n}, a number with -more than m digits before the decimal point, or n or more zeros after -the decimal point is printed in scientific notation. - -Examples: - -on rounded; -12345.6; 12345.6 - -123456.5; 1.234565e+5 - -0.00000000000000012; 1.2e-16 - -scientific_notation 20; {5,11} - -5: 123456.7; 123456.7 - -0.00000000000000012; 0.00000000000000012 - -\endsection -\item[SCOPE] -SCOPE (page 185) - -Author: J.A. van Hulzen - -REDUCE Source Code Optimization Package. - -SCOPE is a package for the production of an optimised form of a -set of expressions. It applies an heuristic search for common -(sub)expressions to almost any set of proper REDUCE assignment -statements. The output is obtained as a sequence of assignment -statements. GENTRAN is used to facilitate expression output. - -\endsection -\xitem[SDER(I)] -SDER(I) (page 379) - -\endsection -\item[SEC] -SEC (pages 76, 78) - -The SEC operator returns the secant of its argument. - - SEC(expression) or SEC simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sec abc; SEC(ABC) -sec(pi); -1 -sec 4; SEC(4) -on rounded; -sec(4); - 1.52988565647 -sec log 5; - 25.8852966005 - -SEC returns a numeric value only if ROUNDED is on. Then the secant is -calculated to the current degree of floating point precision. - -\endsection -\item[SECH] -SECH (pages 76, 78) - -The SECH operator returns the hyperbolic secant of its argument. - - SECH(expression) or SECH simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sech abc; SECH(ABC) -sech(0); 1 -sech 4; SECH(4) -on rounded; -sech(4); 0.0366189934737 -sech log 5; 0.384615384615 - -SECH returns a numeric value only if ROUNDED is on. Then the -expression is calculated to the current degree of floating point -precision. - -\endsection -\item[SECOND] -SECOND (page 50) - -The SECOND operator returns the second element of a list. - SECOND(list) or SECOND list - -list must be a list with at least two elements, to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -second alist; B -blist := {x,{aa,bb,cc},z}; BLIST := {X,{AA,BB,CC},Z} -second second blist; BB - -\endsection -\xitem[Selector] -Selector (page 198) - -\endsection -\xitem[Semicolon] -Semicolon (page 53) - -\endsection -\item[SET] -SET (pages 55, 83) - -The SET operator is used for assignments when you want both sides of -the assignment statement to be evaluated. - - SET(restricted_expression,expression) - -expression can be any REDUCE expression; restricted_expression -must be an identifier or an expression that evaluates to an identifier. - -Examples: -a := y; A := Y - 2 -set(a,sin(x^2)); SIN(X ) - 2 -a; SIN(X ) - 2 -y; SIN(X ) - -a := b + c; A := B + C - -set(a-c,z); Z - -b; Z - -Using an ARRAY or MATRIX reference as the first argument to SET has -the result of setting the contents of the designated element to SET's -second argument. You should be careful to avoid unwanted side effects -when you use this facility. - -\endsection -\item[SETMOD] -SETMOD (page 134) - -The SETMOD command sets the modulus value for subsequent MODULAR -arithmetic. - - SETMOD integer - -integer must be positive, and greater than 1. It need not be a prime -number. - -Examples: -setmod 6; 1 -on modular; -16; 4 - 2 -x^2 + 5x + 7; X + 5*X + 1 - X -x/3; --- - 3 -setmod 2; 6 - 4 -(x+1)^4; X + 1 -x/3; X - -SETMOD returns the previous modulus, or 1 if none has been set before. -SETMOD only has effect when MODULAR is on. - -Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error -message, since the operation is equivalent to dividing by 0. However, -dividing by a factor of a non-prime modulus does not produce an error -message. - -\endsection -\xitem[SGN indeterminate sign] -SGN - indeterminate sign (page 257) - -\endsection -\item[SHARE] -SHARE (page 197) - -The SHARE declaration allows access to its arguments by both -algebraic and symbolic modes. - - SHARE identifier{,identifier} - -identifier can be any valid REDUCE identifier. - -Programming in SYMBOLIC as well as algebraic mode allows you a wider -range of techniques than just algebraic mode alone. Expressions do -not cross the boundary since they have different representations, -unless the SHARE declaration is used. For more information on using -symbolic mode, see the REDUCE User's Manual, and the Standard Lisp -Report. - -You should be aware that a previously-declared array is destroyed by -the SHARE declaration. Scalar variables retain their values. You can -share a declared MATRIX that has not yet been dimensioned so that it -can be used by both modes. Values that are later put into the matrix -are accessible from symbolic mode too, but not by the usual matrix -reference mechanism. In symbolic mode, a matrix is stored as a list -whose first element is MAT, and whose next elements are the rows of -the matrix stored as lists of the individual elements. Access in -symbolic mode is by the operators FIRST, SECOND, THIRD and REST. - -\endsection -\item[SHOWRULES] -SHOWRULES (page 150) - - SHOWRULES(expression) or SHOWRULES simple_expression - -SHOWRULES returns in RULE-LIST form any OPERATOR rules associated with -its argument. - -Examples: -showrules log; {log(e) => 1, - - log(1) => 0, - - ~x - log(e ) => ~x, - - 1 - df(log(~x),~x) => ----} - ~x - -Such rules can then be manipulated further as with any LIST. For example -RHS FIRST WS; has the value 1. - -An operator may have properties that cannot be displayed in such a form, -such as the fact it is an odd function, or has a definition defined as a -procedure. - -\endsection -\item[SHOWTIME] -SHOWTIME (page 70) - -The SHOWTIME command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has -not been called before. - -Examples: -showtime; Time: 1020 ms - 2 -factorize(x^4 - 8x^4 + 8x^2 - 136x - 153); {X - 9,X + 17,X + 1} -showtime; Time: 920 ms - -The time printed is either the elapsed cpu time or the elapsed wall -clock time, depending on your system. SHOWTIME allows you to see the -system time resources REDUCE uses in its calculations. Your time -readings will of course vary from this example according to the system -you use. - -\endsection -\item[SHUT] -SHUT (pages 153--155) - -The SHUT command closes output files. - SHUT filename{,filename} - -filename must have been a file opened by OUT. - - -A file that has been opened by OUT must be SHUT before it is -brought in by IN. Files that have been opened by OUT should -always be SHUT before the end of the REDUCE session, to avoid either -loss of information or the printing of extraneous information into the file. -In most systems, terminating a session by BYE closes all open -output files. - -\endsection -\xitem[Side effect] -Side effect (page 48) - -\endsection -\xitem[side relations] -side relations (page 241) - -\endsection -\item[SIGN] -SIGN (page 75) - - SIGN expression - -SIGN tries to evaluate the sign of its argument. If this is possible -SIGN returns one of 1, 0 or -1. Otherwise, the result is the original -form or a simplified variant. - -Examples: - sign(-5) -1 - sign(-a^2*b) -SIGN(B) - -Even powers of formal expressions are assumed to be positive only as long -as the switch COMPLEX is off. - -\endsection -\xitem[SIGNATURE command] -SIGNATURE command (page 271) - -\endsection -\xitem[Simplification] -Simplification (pages 44, 97) - -\endsection -\xitem[SIMPSYS] -SIMPSYS (pages 378, 380, 383) - -\endsection -\item[SIN] -SIN (pages 76, 78) - -The SIN operator returns the sine of its argument. - - SIN(expression) or SIN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sin aa; SIN(AA) -sin(pi/2); 1 -on rounded; -sin 3; 0.14112000806 -sin(pi/2); 1.0 - -SIN returns a numeric value only if ROUNDED is on. Then the sine is -calculated to the current degree of floating point precision. The -argument in this case is assumed to be in radians. - -\endsection -\item[SINH] -SINH (pages 76, 78) - -The SINH operator returns the hyperbolic sine of its argument. The -derivative of SINH and some simple transformations are known to the -system. - - SINH(expression) or SINH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -sinh b; SINH(B) -sinh(0); 0 - 2 -df(sinh(x**2),x); 2*COSH(X )*X - COSH(4*X) -int(sinh(4*x),x); ----------- - 4 -on rounded; -sinh 4; 27.2899171971 - - -You may attach further functionality by defining its inverse (see -ASINH). A numeric value is not returned by SINH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\xitem[SMACRO] -SMACRO (page 196) - -\endsection -\item[SOLVE] -SOLVE (pages 84, 85, 90, 181) - -The SOLVE operator solves a single algebraic EQUATION or a system of -simultaneous equations. - - SOLVE(expression [ , kernel]) or - - SOLVE({expression,...} [ ,{ kernel ,...}] ) - -If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. expression is either a -scalar expression or an EQUATION. When more than one expression is -given, the LIST of expressions is surrounded by curly braces. The -optional list of KERNELs follows, also in curly braces. - -Examples: -sss := solve(x^2 + 7); Unknown: X - SSS := {X= - SQRT(7)*I, - X=SQRT(7)*I} -rhs first sss; - SQRT(7)*I -solve(sin(x^2*y),y); - PI*(2*ARBINT(1) + 1) - {Y=----------------------, - 2 - X - - 2*ARBINT(1)*PI - Y=----------------} - 2 - X - -off allbranch; -solve(sin(x**2*y),y); {Y=0} -solve({3x + 5y = -4,2*x + y = -10},{x,y}); - 46 22 - {{x=-------,y=----}} - 7 7 -solve({x + a*y + z,2x + 5},{x,y}); - 5 - 2*z + 5 - {{x=------,y=------------}} - 2 2*a -ab := (x+2)^2*(x^6 + 17x + 1); - 8 7 6 3 2 - ab := x + 4*x + 4*x + 17*x + 69*x + 72*x + 4 - - 6 -www := solve(ab,x); {X=ROOT_OF(X_ + 17*X_ + 1),X=-2} -root_multiplicities; {1,2} - -Results of the SOLVE operator are returned as EQUATIONS in a LIST. -You can use the usual list access methods (FIRST, SECOND, THIRD, REST -and PART) to extract the desired equation, and then use the operators -RHS and LHS to access the right-hand or left-hand expression of the -equation. When SOLVE is unable to solve an equation, it returns the -unsolved part as the argument of ROOT_OF, with the variable renamed to -avoid confusion, as shown in the last example above. - -For one equation, SOLVE uses square-free factorisation, roots of -unity, and the known inverses of the LOG, SIN, COS, ACOS, ASIN, and -exponentiation operators. The quadratic, cubic and quartic formulas -are used if necessary, but these are applied only when the switch -FULLROOTS is set on; otherwise or when no closed form is available the -result is returned as ROOT_OF expression. The switch TRIGFORM -determines which type of cubic and quartic formula is used. The -multiplicity of each solution is given in a list as the system -variable ROOT_MULTIPLICITIES. For systems of simultaneous linear -equations, matrix inversion is used. For nonlinear systems, the -Groebner basis method is used. - -Linear equation system solving is influenced by the switch CRAMER. - -Singular systems can be solved when the switch SOLVESINGULAR is on, -which is the default setting. A message is given if the system of -equations is inconsistent. - -Related: ALLBRANCH switch, FULLROOTS switch, ROOTS operator, ROOT_OF -operator, TRIGFORM switch. - -\endsection -\item[SOLVESINGULAR] -SOLVESINGULAR (page 89) - -When SOLVESINGULAR is on, singular or under determined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is ON. - -Examples: - - ARBCOMPLEX(1) -solve({2x + y,4x + 2y},{x,y}); {{X=------------------,Y=ARBCOMPLEX(1)}} - 2 - - 8*arbcomplex(2) -solve({7x + 15y - z,x - y - z},{x,y,z});{{x=-----------------, - 11 - - - 3*ARBCOMPLEX(2) - Y=--------------------, - 11 - - Z=ARBCOMPLEX(2)}} - -off solvesingular; -solve({2x + y,4x + 2y},{x,y}); ***** SOLVE given singular equations -solve({7x + 15y - z,x - y - z},{x,y,z});***** SOLVE given singular equations - -The integer following the identifier ARBCOMPLEX above is assigned by -the system, and serves to identify the variable uniquely. It has no other -significance. - -\endsection -\xitem[SORTOUTODE] -SORTOUTODE (page 350) - -\endsection -\xitem[SPACEDIM command] -SPACEDIM command (pages 251, 271) - -\endsection -\item[SPDE] -SPDE (page 185) - -Author: Fritz Schwartz - -The package SPDE provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given system of -partial differential equations. In many cases the determining system is -solved completely automatically. In other cases the user has to provide -additional input information for the solution algorithm to terminate. - - -\endsection -\xitem[SPECFN] -SPECFN (page 185) - -\endsection -\xitem[SPECFN package] -SPECFN package (page 391) - -\endsection -\xitem[SPECFN2] -SPECFN2 (page 187) - -\endsection -\xitem[spherical coordinates] -spherical coordinates (pages 265, 355) - -\endsection -\item[SPLIT_FIELD] -SPLIT_FIELD function (page 227) - -SPLIT_FIELD is part of the ARNUM package for algebraic numbers. It -calculates a primitive element of minimal degree for which a given -polynomial splits into linear factors. The algorithm as described by -Trager. - -Example: - load arnum; - split!_field(x**3-3*x+7); - - *** Splitting field is generated by: - - 6 4 2 - A5 - 18*A5 + 81*A5 + 1215 - - - - 4 2 - {1/126*A5 - 5/42*A5 - 1/2*A5 + 2/7, - - - 4 2 - - (1/63*A5 - 5/21*A5 + 4/7), - - - 4 2 - 1/126*A5 - 5/42*A5 + 1/2*A5 + 2/7} - - - for each j in ws product (x-j); - - 3 - X - 3*X + 7 - - -\endsection -\item[SPUR] -SPUR (page 210) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\xitem[SQFRF] -SQFRF (page 373) - -\endsection -\item[SQRT] -SQRT (pages 76, 78) - -The SQRT operator returns the square root of its argument. - - SQRT(expression) - -expression can be any REDUCE scalar expression. - -Examples: -sqrt(16*a^3); 4*SQRT(A)*A -sqrt(17); SQRT(17) -on rounded; -sqrt(17); 4.12310562562 -off rounded; 2 -sqrt(a*b*c^5*d^3*27); 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D - -SQRT checks its argument for squared factors and removes them. - -Numeric values for square roots that are not exact integers are given -only when ROUNDED is on. - -Please note that SQRT(A**2) is given as A, which may be incorrect if A -eventually has a negative value. If you are programming a calculation -in which this is a concern, you can turn on the PRECISE switch, which -causes the absolute value of the square root to be returned. - -\endsection -\xitem[Standard form] -Standard form (page 198) - -\endsection -\xitem[Standard quotient] -Standard quotient (page 198) - -\endsection -\xitem[Statement] -Statement (page 53) - -\endsection -\xitem[Stirling Numbers] -Stirling Numbers (page 185, 394) - -\endsection -\item[STIRLING1] -STIRLING1 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -first kind, i.e. the number of permutations of n symbols which have -exactly m cycles (divided by (-1)**(n-m)). - - STIRLING1(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling1 (17,4); -87077748875904 - - GAMMA(N + 1) - Stirling1 (n,n-1); ----------------- - 2*GAMMA(N - 1) - -The operator STIRLING1 evaluates the Stirling numbers of the first -kind by rulesets for special cases or by a computing the closed form, -which is a series involving the operators BINOMIAL and STIRLING2. - -\endsection -\item[STIRLING2] -STIRLING2 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. - - STIRLING2(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling2 (17,4); 694337290 - GAMMA(N + 1) - Stirling2 (n,n-1); ---------------- - 2*GAMMA(N - 1) - -The operator STIRLING2 evaluates the Stirling numbers of the second -kind by rulesets for special cases or by a computing the closed form. - -\endsection -\item[String] -String (page 37)) -A STRING is any collection of characters enclosed in double quotation -marks ("). It may be used as an argument for a variety of commands -and operators, such as IN, REDERR and WRITE. -Examples: -write "this is a string"; this is a string -write a, " ", b, " ",c,"!"; A B C! - -\endsection -\item[STRUCTR] -STRUCTR (pages 112, 113) - -The STRUCTR operator breaks its argument expression into named -subexpressions. - - STRUCTR(expression [,identifier[,identifier ...]]) - -expression may be any valid REDUCE scalar expression. identifier may -be any valid REDUCE IDENTIFIER. The first identifier is the stem for -subexpression names, the second is the name to be assigned to the -structured expression. - -Examples: -structr(sqrt(x**2 + 2*x) + sin(x**2*z)); ANS1*ANS3 + ANS2 - - WHERE - - 1/2 - ANS3 := X - - 2 - ANS2 := SIN(X *Z) - - 1/2 - ANS1 := (X + 2) - -ans3; ANS3 -on fort; -structr((x+1)**5 + tan(x*y*z),var,aa); - VAR1=TAN(X*Y*Z) - AA=VAR1+X**5+5.*X**4+10.*X**3+10.*X**2+5.*X+1. - -The second argument to STRUCTR is optional. If it is not given, the -default stem ANS is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does -not store the names and their values unless the switch SAVESTRUCTR is -on. - -If a third argument is given, the structured expression as a whole is -named by this argument, when FORT is on. The expression is not stored -under this name. You can send these structured Fortran expressions to -a file with the OUT command. - -\endsection -\xitem[Structuring] -Structuring (page 97) - -\endsection -\xitem[Struve Functions] -Struve Functions (pages 185, 397) - -\endsection -\item[STRUVEH] -STRUVEH (pages 185, 397) - -The STRUVEH operator returns Struve's H function. - - STRUVEH(order,argument) - -Examples: -load_package specfn; (SPECFN) - - 3 - - BESSELJ(---,X) - 2 -struveh(-3/2,x); ------------------- - I - - -There is currently no numeric support for the operator STRUVEH. - -\endsection -\item[STRUVEL] -STRUVEL (pages 185, 397) - -The STRUVEL operator returns the modified Struve L function . - - STRUVEL(order,argument) - -Examples: - load_package specfn; (SPECFN); - 3 - struvel(-3/2,x); BESSELI(---,X) - 2 - -There is currently no numeric support for the operator STRUVEL. - -\endsection -\xitem[Sturm Sequences] -Sturm Sequences (page 369) - -\endsection -\item[SUB] -SUB (page 137) - -The SUB operator substitutes a new expression for a kernel in an -expression. - - SUB(kernel=expression {,kernel=expression} expression) - or - SUB({kernel=expression, kernel=EXPRESSION},expression}) - -kernel must be a KERNEL, expression can be any REDUCE scalar -expression. - -Examples: -sub(x=3,y=4,(x+y)**3); 343 -x; X -sub({cos=sin,sin=cos},cos a+sin b} COS(B) + SIN(A) - -Note in the second example that operators can be replaced using the -SUB operator. - -\endsection -\xitem[SUCH THAT] -SUCH THAT (page 142) - -\endsection -\item[SUM] -SUM (pages 57, 58, 187) - -The operator SUM returns -the indefinite or definite summation of a given expression. - - -SUM(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be added, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: - 2 2 -sum(4n**3,n); N *(N + 2*N + 1) - -sum(2a+2k*r,k,0,n-1); N*(2*A + N*R - R) - -\endsection -\xitem[SUM-SQ] -SUM-SQ (page 404) - -\endsection -\xitem[SVEC] -SVEC (page 355) - -\endsection -\xitem[Switch] -Switch (pages 68, 69) - -\endsection -\item[SYMBOLIC] -SYMBOLIC (page 191) - -The SYMBOLIC command changes REDUCE's mode of operation to symbolic. -When SYMBOLIC is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the LISP command. - -Examples: -symbolic; NIL -cdr '(a b c); (B C) -algebraic; -x + symbolic car '(y z); X + Y - -\endsection -\xitem[Symbolic mode] -Symbolic mode (pages 191, 193, 197, 198) - -\endsection -\xitem[Symbolic procedure] -Symbolic procedure (page 196) - -\endsection -\item[SYMMETRIC] -SYMMETRIC (page 93) - -When an operator is declared SYMMETRIC, its arguments are reordered -to conform to the internal ordering of the system. - - SYMMETRIC identifier{,identifier} - -identifier is an identifier that has been declared an operator. - -Examples: -operator m,n; -symmetric m,n; -m(y,a,sin(x)); M(SIN(X),A,Y) -n(z,m(b,a,q)); N(M(A,B,Q),Z) - -If identifier has not been declared to be an operator, the flag -SYMMETRIC is still attached to it. When identifier is subsequently -used as an operator, the message - DECLARE identifier OPERATOR ? (Y OR N) -is printed. If the user replies Y, the symmetric property of the -operator is used. - -\endsection -\xitem[system precision] -system precision (page 374) - -\endsection -\item[T] -T (page 37) - -The constant T stands for the truth value true. It cannot be used as -a scalar variable in a BLOCK, as a looping variable in a FOR statement -or as an OPERATOR name. - -\endsection -\item[TAN] -TAN (pages 76, 78, 81) - -The TAN operator returns the tangent of its argument. - - TAN(expression) or TAN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -tan a; TAN(A) -tan(pi/3); SQRT(3) -on rounded; -tan(pi/3); 1.73205080757 - -TAN returns a numeric value only if ROUNDED is on. Then the tangent -is calculated to the current degree of floating point accuracy. - -When ON ROUNDED is in force, no check is made to see if the argument -to TAN is a multiple of pi/2, for which the tangent goes to positive -or negative infinity. (Of course, since REDUCE uses a fixed-point -representation of pi/2, it produces a large but not infinite number). -You need to make a check for multiples of pi/ in any program you use -that might possibly ask for the tangent of such a quantity. - -\endsection -\xitem[tangent vector] -tangent vector (page 252) - -\endsection -\item[TANH] -TANH (pages 76, 78) - -The TANH operator returns the hyperbolic tangent of its argument. The -derivative of TANH and some simple transformations are known to the -system. - - TANH(expression) or TANH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -tanh b; TANH(B) -tanh(0); 0 - 2 -df(tanh(x*y),x); Y*( - TANH(X*Y) + 1) - 2*X -int(tanh(x),x); LOG(E + 1) - X -on rounded; -tanh 2; 0.964027580076 - -You may attach further functionality by defining its inverse (see -ATANH). A numeric value is not returned by TANH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\item[TAYLOR] -TAYLOR (page 188, 406) - -The TAYLOR operator is used for expanding an expression into a Taylor -series. - -TAYLOR(expression, var, expression, number) -TAYLOR(expression, var, expression, number {,var, expression, number}) - -expression can be any valid REDUCE algebraic expression. var must be -a KERNEL, and is the expansion variable. The expression following it -denotes the point about which the expansion is to take place. number -must be a non-negative integer and denotes the maximum expansion -order. If more than one triple is specified TAYLOR will expand its -first argument independently with respect to all the variables. Note -that once the expansion has been done it is not possible to calculate -higher orders. - -Instead of a KERNEL, var may also be a list of kernels. In this case -expansion will take place in a way so that the sum of the degrees of -the kernels does not exceed the maximum expansion order. If the -expansion point evaluates to the special identifier INFINITY, TAYLOR -tries to expand in a series in 1/var. - -The expansion is performed variable per variable, i.e. in the example -below by first expanding exp(x^2+y^2) with respect to x and then -expanding every coefficient with respect to y. - -Examples: - 2 2 2 2 3 3 -taylor(e^(x^2+y^2),x,0,2,y,0,2); 1 + Y + X + Y *X + O(X ,Y ) - - 2 2 3 -taylor(e^(x^2+y^2),{x,y},0,2); 1 + Y + X + O({X,Y} ) - -taylor(x*y/(x+y),x,0,2,y,0,2); ***** Not a unit in argument to quottaylor - -Note that it is not generally possible to apply the standard REDUCE -operators to a Taylor kernel. For example, PART, COEFF, or COEFFN -cannot be used. Instead, the expression at hand has to be converted -to standard form first using the TAYLORTOSTANDARD operator. - -Differentiation of a Taylor expression is possible. If you -differentiate with respect to one of the Taylor variables the order -will decrease by one. - -Substitution is a bit restricted: Taylor variables can only be -replaced by other kernels. There is one exception to this rule: you -can always substitute a Taylor variable by an expression that -evaluates to a constant. Note that REDUCE will not always be able to -determine that an expression is constant: an example is sin(acos(4)). - -Only simple taylor kernels can be integrated. More complicated -expressions that contain Taylor kernels as parts of themselves are -automatically converted into a standard representation by means of the -TAYLORTOSTANDARD operator. In this case a suitable warning is -printed. - -\endsection -\xitem[TAYLOR package] -TAYLOR package (page 405) - -\endsection -\xitem[Taylor series arithmetic] -Taylor series - arithmetic (page 407) - differentiation (page 408) - integration (page 408) - reversion (page 408) - substitution (page 408) - -\endsection -\item[TAYLORAUTOCOMBINE] -TAYLORAUTOCOMBINE switch (page 408) - -If you set TAYLORAUTOCOMBINE to ON, REDUCE automatically combines -Taylor expressions during the simplification process. This is -equivalent to applying TAYLORCOMBINE to every expression that contains -Taylor kernels. Default is ON. - -\endsection -\item[TAYLORAUTOEXPAND] -TAYLORAUTOEXPAND switch (pages 408, 409) - -TAYLORAUTOEXPAND makes Taylor expressions ``contagious'' in the sense -that TAYLORCOMBINE tries to Taylor expand all non-Taylor -subexpressions and to combine the result with the rest. Default is -OFF. - -\endsection -\item[TAYLORCOMBINE] -TAYLORCOMBINE (page 407) - -This operator tries to combine all Taylor kernels found in its -argument into one. Operations currently possible are: - -Addition, subtraction, multiplication, and division. -Roots, exponentials, and logarithms. -Trigonometric and hyperbolic functions and their inverses. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 3 -taylorcombine log hugo; X + O(X ) - - 1 2 3 -taylorcombine(hugo + x); (1 + X + ---*X + O(X )) + X - 2 -on taylorautoexpand; - 1 2 3 -taylorcombine(hugo + x); 1 + 2*X + ---*X + O(X ) - 2 - -Application of unary operators like LOG and ATAN will nearly always -succeed. For binary operations their arguments have to be Taylor -kernels with the same template. This means that the expansion -variable and the expansion point must match. Expansion order is not -so important, different order usually means that one of them is -truncated before doing the operation. - -If TAYLORKEEPORIGINAL is set to ON and if all Taylor kernels in its -argument have their original expressions kept TAYLORCOMBINE will also -combine these and store the result as the original expression of the -resulting Taylor kernel. There is also the switch TAYLORAUTOEXPAND. - -There are a few restrictions to avoid mathematically undefined -expressions: it is not possible to take the logarithm of a Taylor -kernel which has no terms (i.e. is zero), or to divide by such a -beast. There are some provisions made to detect singularities during -expansion: poles that arise because the denominator has zeros at the -expansion point are detected and properly treated, i.e. the Taylor -kernel will start with a negative power. (This is accomplished by -expanding numerator and denominator separately and combining the -results.) Essential singularities of the known functions (see above) -are handled correctly. - -\endsection -\item[TAYLORKEEPORIGINAL] -TAYLORKEEPORIGINAL (pages 406, 407, 409, 411) - -TAYLORKEEPORIGINAL, if set to ON, forces the TAYLOR and all Taylor -kernel manipulation operators to keep the original expression, -i.e. the expression that was Taylor expanded. All operations -performed on the Taylor kernels are also applied to this expression -which can be recovered using the operator TAYLORORIGINAL. Default is -OFF. - -\endsection -\item[TAYLORORIGINAL] -TAYLORORIGINAL (pages 411, 412) - -TAYLORORINAL can recover the original expression (the one that was -expanded) from the Taylor kernel that is given as its argument. - - TAYLORORIGINAL(expression) - TAYLORORIGINAL simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylororiginal hugo; - ***** Taylor kernel doesn't have an original part in taylororiginal - -on taylorkeeporiginal; - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - X -taylororiginal hugo; E - -An error is signalled if the argument is not a Taylor kernel or if the -original expression was not kept, i.e. if TAYLORKEEPORIGINAL was set -OFF during expansion. - -\endsection -\item[TAYLORPRINTORDER] -TAYLORPRINTORDER switch (page 409) - -TAYLORPRINTORDER, if set to ON, causes the remainder to be printed in -big-O notation. Otherwise, three dots are printed. Default is -ON. - -\endsection -\item[TAYLORPRINTTERMS] -TAYLORPRINTTERMS (pages 406, 412) - -Only a certain number of (non-zero) coefficients are printed. If there -are more, an expression of the form N TERMS is printed to indicate how -many non-zero terms have been suppressed. The number of terms printed -is given by the value of the shared algebraic variable -TAYLORPRINTTERMS. Allowed values are integers and the special -identifier ALL. The latter setting specifies that all terms are to be -printed. The default setting is 5. - -Examples: -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 5 5 - 1 + Y + ---*Y + X + Y *X + (4 TERMS) + O(X ,Y ) - 2 -taylorprintterms := all; - ALL -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 1 4 2 1 4 1 2 4 - 1 + y + ---*y + x + y *x + ---*y *x + ---*x + ---*y *x - 2 2 2 2 - - 1 4 4 5 5 - + ---*y *x + O(x ,y ) - 4 - -\endsection -\item[TAYLORREVERT] -TAYLORREVERT (page 411) - -TAYLORREVERT allows reversion of a Taylor series of a function f, -i.e., to compute the first terms of the expansion of the inverse of f -from the expansion of f. - - TAYLORREVERT(expression, var, var) - -The first argument must evaluate to a Taylor kernel with the second -argument being one of its expansion variables. - -Examples: - 2 6 -taylor(u - u**2,u,0,5); U - U + O(U ) - 2 3 4 5 6 -taylorrevert(ws,u,x); X + X + 2*X + 5*X + 14*X + O(X ) - -\endsection -\item[TAYLORSERIESP] -TAYLORSERIESP (page 407) - -The TAYLORSERIESP operator may be used to determine if its argument is -a Taylor kernel. - - TAYLORSERIESP(expression) - TAYLORSERIESP simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -if taylorseriesp hugo then OK; OK -if taylorseriesp(hugo + y) then OK else NO; NO - -Note that this operator is subject to the same restrictions as, e.g., -ORDP or NUMBERP, i.e. it may only be used in boolean expressions in IF -or LET statements. -\endsection -\item[TAYLORTEMPLATE] -TAYLORTEMPLATE (pages 407, 412) - -The template of a Taylor kernel, i.e. the list of all variables with -respect to which expansion took place together with expansion point -and order can be extracted using - - TAYLORTEMPLATE(expression) - TAYLORTEMPLATE simple_expression - -The operator returns a list of lists with the three elements -(VAR,VAR0,ORDER). An error is signalled if the argument is not a -Taylor kernel. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylortemplate hugo; {{X,0,2}} - -\endsection -\item[TAYLORTOSTANDARD] -TAYLORTOSTANDARD (page 407) - -The TAYLORTOSTANDARD operator converts all Taylor kernels in its -argument into standard form and resimplifies the result. - - TAYLORTOSTANDARD(expression) - TAYLORTOSTANDARD simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 2 - X + 2*X + 2 -taylortostandard hugo; -------------- - 2 -\endsection -\xitem[Terminator] -Terminator (page 53) - -\endsection -\item[THIRD] -THIRD (page 50) - -The THIRD operator returns the third item of a LIST. - THIRD(list) or THIRD list - - - -list must be a list containing at least three items to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -third alist; C -blist := {x,{aa,bb,cc},y,z}; BLIST := {X,{AA,BB,CC},Y,Z}; -third second blist; CC -third blist; Y - -\endsection -\item[TIME] -TIME (page 68) - -When TIME is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. - -Examples: -on time; Time: 4940 ms - 2 -df(sin(x**2 + y),y); COS(X + Y ) - Time: 180 ms -solve(x**2 - 6*y,x); {X= - SQRT(Y)*SQRT(6), - X=SQRT(Y)*SQRT(6)} - Time: 320 ms - -When TIME is first turned on, the time since the beginning of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed -after the results of each command. Idle time or time spent typing in -commands is not counted. If TIME is turned off, the first reading -after it is turned on again gives the time elapsed since it was turned -off. The time printed is CPU or wall clock time, depending on the -system. - -\endsection -\item[TORDER] -TORDER (pages 296, 315, 316) - -The operator TORDER sets the actual term order. - -1. simple term order: - TORDER m - -where m is the name of a term order mode LEX term order, GRADLEX term -order, REVGRADLEX term order or another implemented parameterless -mode. - -2. stepped term order: - TORDER m,n - TORDER {m,n} - -where m is the name of a two step term order, one of GRADLEXGRADLEX -term order, GRADLEXREVGRADLEX term order, LEXGRADLEX term order or -LEXREVGRADLEX term order, and n is a positive integer. - -3. weighted term order - TORDER WEIGHTED, n,n,... - TORDER WEIGHTED, {n,n,...} - -where the n are positive integers, see weighted term order. - -TORDER sets the term order mode. The default mode is LEX. The -previous order mode is returned. - -\endsection -\item[TP] -TP (page 165) - -The TP operator returns the transpose of its MATRIX - argument. - TP identifier or TP(identifier) - -identifier must be a matrix, which either has had its dimensions set -in its declaration, or has had values put into it by MAT. - -Examples: -matrix m,n; -m := mat((1,2,3),(4,5,6))$ -n := tp m; N(1,1) := 1 - N(1,2) := 4 - N(2,1) := 2 - N(2,2) := 5 - N(3,1) := 3 - N(3,2) := 6 - -In an assignment statement involving TP, the matrix identifier on the -left-hand side is redimensioned to the correct size for the transpose. - -\endsection -\item[TPS] -TPS (pages 188, 330) - -Authors: Alan Barnes and Julian Padget - -A Truncated Power Series Package. - -This package implements formal Laurent series expansions in one -variable using the domain mechanism of REDUCE. This means that power -series objects can be added, multiplied, differentiated etc., like -other first class objects in the system. A lazy evaluation scheme -is used and thus terms of the series are not evaluated until they -are required for printing or for use in calculating terms in other -power series. The series are extendible giving the user the -impression that the full infinite series is being manipulated. The -errors that can sometimes occur using series that are truncated at -some fixed depth (for example when a term in the required series -depends on terms of an intermediate series beyond the truncation -depth) are thus avoided. - -\endsection -\xitem[TRA] -TRA (page 178) - -\endsection -\item[TRACE] -TRACE (page 166) - -The TRACE operator finds the trace of its MATRIX argument. - TRACE(expression) or TRACE simple_expression - -expression or simple_expression must evaluate to a square -matrix. - -Examples: -matrix a; -a := mat((x1,y1),(x2,y2))$ -trace a; X1 + Y2 - -The trace is the sum of the entries along the diagonal of a square matrix. -Given a non-matrix expression, or a non-square matrix, TRACE returns -an error message. - -\endsection -\xitem[tracing EXCALC] -tracing - EXCALC (page 266) - ODESOLVE (page 351) - ROOTS package (page 373) - SPDE package (page 380) - SUM package (page 404) - -\endsection -\item[TRALLFAC] -TRALLFAC - -When TRALLFAC is on, a more detailed trace of factoriser calls is -generated. - - -The TRALLFAC switch takes precedence over TRFAC if they are -both on. TRFAC gives a factorisation trace with less detail in it. -When the FACTOR switch is on also, all input polynomials are sent to -the factoriser automatically and trace information is generated. The -OUT command saves the results of the factoring, but not the trace. - - -\endsection -\item[TRFAC] -TRFAC (page 122) - -When TRFAC is on, a narrative trace of any calls to the factoriser is -generated. Default is OFF. - - -When the switch FACTOR is on, and TRFAC is on, every input -polynomial is sent to the factoriser, and a trace generated. With -FACTOR off, only polynomials that are explicitly factored with the -command FACTORIZE generate trace information. - -The OUT command saves the results of the factoring, but not -the trace. The TRALLFAC switch gives trace information to a -greater level of detail. - -\endsection -\item[TRGROEB] -TRGROEB (pages 299, 303) - -If TRGROEB is on, intermediate H polynomials are printed during a -GROEBNER or GROEBNERF calculation. - -\endsection -\xitem[TRGROEB1] -TRGROEB1 (pages 299, 303) - -\endsection -\xitem[TRGROEBR] -TRGROEBR (page 304) - -\endsection -\item[TRGROEBS] -TRGROEBS (pages 299, 303) - -If TRGROEBS is on, intermediate H and S polynomials are printed during -a GROEBNER or GROEBNERF calculation. - -\endsection -\item[TRIGFORM] -TRIGFORM (page 87) - -When FULLROOTS is on, SOLVE will compute the -roots of a cubic or quartic polynomial is closed form. When -TRIGFORM is on, the roots will be expressed by trigonometric -forms. Otherwise nested surds are used. Default is ON. - -\endsection -\item[TRINT] -TRINT (page 178) - -When TRINT is on, a narrative tracing various steps in the -integration process is produced. - -The OUT command saves the results of the integration, but not the -trace. - -\endsection -\item[TRNONLNR] -TRNONLNR - -When TRNONLNR is on, a narrative tracing various steps in -the process for solving non-linear equations is produced. - - -TRNONLNR can only be used after the solve package has been loaded -(e.g., by an explicit call of LOAD_PACKAGE). The OUT -command saves the results of the equation solving, but not the trace. - -\endsection -\xitem[TRODE] -TRODE (page 351) - -\endsection -\xitem[TRROOT] -TRROOT (page 373) - -\endsection -\xitem[TRSUM] -TRSUM (page 404) - -\endsection -\xitem[truncated power series] -truncated power series (page 413) - -\endsection -\xitem[TVECTOR command] -TVECTOR command (pages 249, 271) - -\endsection -\xitem[U(ALFA)] -U(ALFA) (page 379) - -\endsection -\xitem[U(ALFA] -U(ALFA,I) (page 379) - -\endsection -\item[UNTIL] -UNTIL (page 57) - -See the FOR loop construction. -\endsection -\xitem[User packages] -User packages (page 177) - -\endsection -\xitem[VARDF] -VARDF (pages 257, 271) - -\endsection -\xitem[Variable] -Variable (page 36) - -\endsection -\xitem[Variable elimination] -Variable elimination (page 181) - -\endsection -\xitem[variational derivative] -variational derivative (page 257) - -\endsection -\item[VARNAME] -VARNAME (pages 111, 112) - -The declaration VARNAME instructs REDUCE to use its argument as the -default Fortran (when FORT is on) or STRUCTR identifier and identifier -stem, rather than using ANS. - - VARNAME identifier - -identifier can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. - -Examples: -varname ident; IDENT -on fort; -x**2 + 1; IDENT=X**2+1. - -off fort,exp; 3 -structr(((x+y)**2 + z)**3); IDENT2 - where - 2 - IDENT2 := IDENT1 + Z - IDENT1 := X + Y - -EXP was turned off so that STRUCTR could show the structure. If EXP -had been on, the expression would have been expanded into a -polynomial. - -\endsection -\xitem[VDF] -VDF (page 359) - -\endsection -\xitem[VEC command] -VEC command (page 232) - -\endsection -\item[VECDIM] -VECDIM (page 212) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\item[VECTOR] -VECTOR (High Energy Physics) (page 208) - -The VECTOR declaration declares that its arguments are of type VECTOR. - VECTOR identifier{,identifier} - -identifier must be a valid REDUCE identifier. It may have already -been used for a matrix, array, operator or scalar variable. After an -identifier has been declared to be a vector, it may not be used as a -scalar variable. - -Vectors are special entities for high-energy physics calculations. -You cannot put values into their coordinates; they do not have -coordinates. They are legal arguments for the high-energy physics -operators EPS, G and . (dot). Vector variables are used to represent -gamma matrices and gamma matrices contracted with Lorentz 4-vectors, -since there are no Dirac variables per se in the system. Vectors do -follow the usual vector rules for arithmetic operations: + and - -operate upon two or more vectors, producing a vector; * and / cannot -be used between vectors; the scalar product is represented by the -. operator; and the product of a scalar and vector expression is well -defined, and is a vector. - -You can represent components of vectors by including representations -of unit vectors in your system. For instance, letting E0 represent -the unit vector (1,0,0,0), the command - -V1.E0 := 0; - -would set up the substitution of zero for the first component of the -vector V1. - -Identifiers that are declared by the INDEX and MASS declarations are -automatically declared to be vectors. - -The following errors can occur in calculations using the high energy -physics package: - -A REPRESENTS ONLY GAMMA5 IN VECTOR EXPRESSIONS -You have tried to use A in some way other than gamma5 in a high-energy -physics expression. - -GAMMA5 NOT ALLOWED UNLESS VECDIM IS 4 -You have used gamma_5 in a high-energy physics computation involving a -vector dimension other than 4. - -ID HAS NO MASS -One of the arguments to MSHELL has had no mass assigned to it, in -high-energy physics calculations. - -MISSING ARGUMENTS FOR G OPERATOR -A line symbol is missing in a gamma matrix expression in high-energy physics -calculations. - -UNMATCHED INDEX list -The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. - -\endsection -\xitem[vector] -vector , integration 233 - addition (page 356) - cross product (page 357) - differentiation (page 233) - division (page 357) - dot product (page 357) - exponentiation (page 357) - inner product (page 357) - modulus (page 357) - multiplication (page 357) - subtraction (page 356) - -\endsection -\xitem[vector algebra] -vector algebra (page 231) - -\endsection -\xitem[VECTORADD] -VECTORADD (page 356) - -\endsection -\xitem[VECTORCROSS] -VECTORCROSS (page 357) - -\endsection -\xitem[VECTORDIFFERENCE] -VECTORDIFFERENCE (page 356) - -\endsection -\xitem[VECTOREXPT] -VECTOREXPT (page 357) - -\endsection -\xitem[VECTORMINUS] -VECTORMINUS (page 356) - -\endsection -\xitem[VECTORPLUS] -VECTORPLUS (page 356) - -\endsection -\xitem[VECTORQUOTIENT] -VECTORQUOTIENT (page 357) - -\endsection -\xitem[VECTORRECIP] -VECTORRECIP (page 357) - -\endsection -\xitem[VECTORTIMES] -VECTORTIMES (page 357) - -\endsection -\xitem[VERBOSELOAD switch] -VERBOSELOAD switch (page 409) - -\endsection -\xitem[VINT] -VINT (page 360) - -\endsection -\xitem[VMOD] -VMOD (page 357) - -\endsection -\xitem[VMOD operator] -VMOD operator (page 233) - -\endsection -\xitem[VOLINT] -VOLINT (page 360) - -\endsection -\xitem[VOLINTEGRAL function] -VOLINTEGRAL function (page 237) - -\endsection -\xitem[VOLINTORDER vector] -VOLINTORDER vector (page 237) - -\endsection -\xitem[VORDER] -VORDER (page 359) - -\endsection -\xitem[VOUT] -VOUT (page 355) - -\endsection -\xitem[VSTART] -VSTART (page 354) - -\endsection -\xitem[VTAYLOR] -VTAYLOR (page 359) - -\endsection -\xitem[wedge] -wedge (page 271) - -\endsection -\item[WEIGHT] -WEIGHT (page 152) - -The WEIGHT command is used to attach weights to kernels for asymptotic -constraints. - - WEIGHT kernel = number - -kernel must be a REDUCE KERNEL, number must be a positive integer, not -0. - -Examples: 4 3 2 2 3 4 -a := (x+y)**4; A := X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -a; X -wtlevel 10; - 2 2 2 -a; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -Weights and WTLEVEL are used for asymptotic constraints, where -higher-order terms are considered insignificant. - -Weights are originally equivalent to 0 until set by a WEIGHT command. -To remove a weight from a kernel, use the CLEAR command. Weights once -assigned cannot be changed without clearing the identifier. Once a -weight is assigned to a kernel, it is no longer a kernel and cannot be -used in any REDUCE commands or operators that require kernels, until -the weight is cleared. Note that terms are ordered by greatest -weight. - -The weight level of the system is set by WTLEVEL, initially at 2. -Since no kernels have weights, no effect from WTLEVEL can be seen. -Once you assign weights to kernels, you must set WTLEVEL correctly for -the desired operation. When weighted variables appear in a term, -their weights are summed for the total weight of the term (powers of -variables multiply their weights). When a term exceeds the weight -level of the system, it is discarded from the result expression. - -\endsection -\xitem[weighted ordering] -weighted ordering (page 316) - -\endsection -\item[WHEN] -WHEN (page 147) - -The WHEN operator is used inside a RULE to make the -execution of the rule depend on a boolean condition which is -evaluated at execution time. For the use see RULE. - -\endsection -\item[WHERE] -WHERE (page 148) - -The WHERE operator provides an infix notation for one-time -substitutions for kernels in expressions. - - expression WHERE kernel = expression{,kernel = expression} - -expression can be any REDUCE scalar expression, kernel must be a -KERNEL. Alternatively a RULE or a RULE LIST can be a member of the -right-hand part of a WHERE expression. - -Examples: -x**2 + 17*x*y + 4*y**2 where x=1,y=2; - 51 -for i := 1:5 collect x**i*q where q= for j := 1:i product j; - 2 3 4 5 - {X,2*X ,6*X ,24*X ,120*X } - 2 3 -x**2 + y + z where z=y**3,y=3; X + Y + 3 - -Substitution inside a WHERE expression has no effect upon the values -of the kernels outside the expression. The WHERE operator has the -lowest precedence of all the infix operators, which are lower than -prefix operators, so that the substitutions apply to the entire -expression preceding the WHERE operator. However, WHERE is applied -before command keywords such as THEN, REPEAT, or DO. - -A RULE or a RULE SET in the right-hand part of the WHERE expression -act as if the rules were activated by LET immediately before the -evaluation of the expression and deactivated by CLEARRULES immediately -afterwards. - -WHERE gives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression -can be a command to be evaluated. The substitute assignments are made -in parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. -WHERE can also be used to define auxiliary variables in PROCEDURE -definitions. - -\endsection -\item[WHILE] -WHILE (pages 59, 61, 63, 65) - -The WHILE command causes a statement to be repeatedly executed until a -given condition is true. If the condition is initially false, the -statement is not executed at all. - - WHILE condition DO statement - -condition is given by a logical operator, statement must be a single -REDUCE statement, or a GROUP (<<...>>) or BEGIN...END block. - -Examples: -a := 10; A := 10 -while a <= 12 do <>; 10 - 11 - 12 -while a < 5 do <>; .... nothing is printed - -\endsection -\xitem[WHITTAKERM] -WHITTAKERM (pages 185, 397) - -\endsection -\item[WHITTAKERW] -WHITTAKERW (pages 185, 397) - -The WHITTAKERW operator returns Whittaker's W function. - - WHITTAKERW(parameter,parameter,argument) - -Examples: -load_package specfn; (SPECFN) - 1 - 4*SQRT(2)*KUMMERU(---,5,2) - 2 -WhittakerW(2,2,2); ---------------------------- - E - -Whittaker's W function is one of the Confluent Hypergeometric functions. -For reference see the HYPERGEOMETRIC operator. - -\endsection -\xitem[Workspace] -Workspace (page 99) - -\endsection -\item[WRITE] -WRITE (page 105)) - -The WRITE command explicitly writes its arguments to the output device -(terminal or file). - - WRITE item{,item} - -item can be an expression, an assignment or a STRING enclosed in -double quotation marks ("). - -Examples: -write a, sin x, "this is a string"; ASIN(X)this is a string -write a," ",sin x," this is a string"; A SIN(X) this is a string -if not numberp(a) then write "the symbol ",a; the symbol A -array m(10); -for i := 1:5 do write m(i) := 2*i; - M(1) := 2 - M(2) := 4 - M(3) := 6 - M(4) := 8 - M(5) := 10 -m(4); 8 - -The items specified by a single WRITE statement print on a single line -unless they are too long. A printed line is always ended with a carriage -return, so the next item printed starts a new line. - -When an assignment statement is printed, the assignment is also made. -This allows you to get feedback on filling slots in an array with a -FOR statement, as shown in the last example above. - -\endsection -\item[WS] -WS (pages 29, 158) - -The WS operator alone returns the last result; WS with a number -argument returns the results of the REDUCE statement executed after -that numbered prompt. - - WS or WS(number) - -number must be an integer between 1 and the current REDUCE prompt number. - -Examples: -(In the following examples, unlike most others, the numbered -prompt is shown.) -1: df(sin y,y); COS(Y) - 2 -2: ws^2; COS(Y) - -3: df(ws 1,y); -SIN(Y) - -WS and WS(number) can be used anywhere the expression they stand for -can be used. Calling a number for which no result was produced, such -as a switch setting, will give an error message. - -The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you -do a differentiation, producing a result expression, then change -several switches, the operator WS; returns the results of the -differentiation. The current workspace (WS) can also be used inside -files, though the numbered workspace contains only the IN command that -input the file. - -There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second -stores parsed input, ready to execute and accessible by INPUT. The -third stores results, when they are produced by statements, which are -accessible by the WS n operator. If your session is very long, -storage space begins to fill up with these expressions, so it is a -good idea to end the session once in a while, saving needed -expressions to files with the SAVEAS and OUT commands. - -An error message is given if a reference number has not yet been used. - -\endsection -\item[WTLEVEL] -WTLEVEL (page 152) - -In conjunction with WEIGHT, WTLEVEL is used to implement asymptotic -constraints. Default value is 2. - - WTLEVEL integer - -integer is a positive integer that is the greatest weight term to be -retained in expressions involving kernels with weight assignments. - -Examples: 4 3 2 2 3 4 -(x+y)**4; X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -(x+y)**4; X -wtlevel 10; - 2 2 2 -(x+y)**4; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -WTLEVEL is used in conjunction with the command WEIGHT to enable -asymptotic constraints. Weight of a term is computed by multiplying -the weights of each variable in it by the power to which it has been -raised, and adding the resulting weights for each variable. If the -weight of the term is greater than WTLEVEL, the term is dropped from -the expression, and not used in any further computation involving the -expression. - -Once a weight has been attached to a KERNEL, it is no longer -recognised by the system as a kernel, though still a variable. It -cannot be used in REDUCE commands and operators that need kernels. -The weight attachment can be undone with a CLEAR command. WTLEVEL can -be changed as desired. - -\endsection -\xitem[X(I)] -X(I) (page 379) - -\endsection -\xitem[XI(I)] -XI(I) (page 379) - -\endsection -\item[XPND command] -XPND command (pages 253, 254, 271) - -(Part of the EXCALC package) - -There are two forms of the XPND command, which controls the use of the -product rule for the d operator and the expansion into partial -derivatives. The default for both these is ON. - - xpnd d; - xpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also NOXPND - -\endsection -\item[ZETA] -ZETA (pages 185, 395) - -The ZETA operator returns Riemann's Zeta function, - - Zeta (z) := sum(1/(k**z),k,1,infinity) - - ZETA(expression) - -Examples: - load_package specfn; (SPECFN) - 2 - PI - Zeta(2); ----- - 6 - on rounded; - Zeta 1.01; 100.577943338 - -Numerical computation for the Zeta function for arguments close to 1 -are tedious, because the series is converging very slowly. In this -case a formula (e.g. found in Bender/Orzag: Advanced Mathematical -Methods for Scientists and Engineers, McGraw-Hill) is used. - -No numerical approximation for complex arguments is done. - -\endsection -\xitem[ZETA(ALFA,I)] -ZETA(ALFA,I) (page 379) - -\endsection DELETED r36/info.ps Index: r36/info.ps ================================================================== --- r36/info.ps +++ /dev/null @@ -1,745 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software -%%Title: info.dvi -%%CreationDate: Sun Sep 17 10:21:28 1995 -%%Pages: 6 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%EndComments -%DVIPSCommandLine: F:\EMTEX\DVIPS32.EXE info -%DVIPSParameters: dpi=300, compressed, comments removed -%DVIPSSource: TeX output 1995.09.17:1021 -%%BeginProcSet: texc.pro -/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N -/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id -gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp -add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add -/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ -dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 -adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 -idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage -userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for -65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 -0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V -{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 -getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} -ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false -RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 -false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform -round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg -rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail -{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} -B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ -4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ -p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p -a}B /bos{/SS save N}B /eos{SS restore}B end -%%EndProcSet -TeXDict begin 39158280 55380996 1000 300 300 (/R36/info.dvi) -@start /Fa 20 122 df<1318137013E0EA01C0EA0380A2EA0700120EA2121E121C123C -A25AA412F85AA97E1278A47EA2121C121E120EA27EEA0380A2EA01C0EA00E0137013180D -2D7DA114>40 D<12C012707E7E7EA27EEA0380A213C0120113E0A2EA00F0A413F81378A9 -13F813F0A4EA01E0A213C012031380A2EA0700120EA25A5A5A12C00D2D7DA114>I68 D76 D<3803FC08380FFF38381E03F8EA38004813781438 -12F01418A26C13007EEA7FC013FE383FFF806C13E06C13F07EC613F81307EB00FC147C14 -3C12C0A36C1338147800F8137038FE01E038E7FFC000811300161F7D9E1D>83 -D85 D98 -DIII<121C123E127FA3123E121CC7FCA6B4 -FCA2121FB0EAFFE0A20B217EA00E>105 D<3AFE0FE03F8090391FF07FC03A1E70F9C3E0 -9039407D01F0EB807E121FEB007CAC3AFFE3FF8FFEA227147D932C>109 -D<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE3FFA218147D931D>I<48B4FC -000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F038 -07FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143F -A6143E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I114 -DII<38FF07F8A2EA -1F00AD1301A2EA0F063807FCFF6C5A18147D931D>I<39FFE07F80A2391F001C00380F80 -18A26C6C5AA26C6C5AA26C6C5AA213F900005B13FF6DC7FCA2133EA2131CA21318A2EA78 -3012FC5BEAC0E0EAE1C0EA7F80001EC8FC191D7F931C>121 D E -/Fb 1 66 df<13101338A3135CA3138EA3EA0107A200031380EA0203A23807FFC0EA0401 -A2380800E0A21218003813F038FE03FE17177F961A>65 D E /Fc -26 119 df65 D<91387FE003903907FF -FC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F48 -5A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C -6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831> -67 DIII73 -D79 D82 D85 DI<3803FF80000F13F0381F01FC383F80FE147F801580EA1F -00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC38 -1FFE0F3803F8031E1B7E9A21>97 DI101 -DI<90387F80F03901FFE3F83907C0FE1C390F807C7C381F003E -151048EB3F00A66C133EA26C6C5A6C6C5A3805FFE0380C7F8048C8FC121CA2121E381FFF -F814FF6C14C06C14E06C14F0120F383E000748EB01F8481300A4007CEB01F0A2003FEB07 -E0390FC01F806CB5120038007FF01E287E9A22>II<1207 -EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B -7EAA12>I108 D<26FFC07FEB1FC0903AC1FF -C07FF0903AC307E0C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05B -B03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0 -EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D9A25>II<38FFC3E0 -EBC7F8EBCC7C380FD8FE13D0A213F0EBE07C1400B0B5FCA3171B7E9A1B>114 -D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C -13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF -C000C11300161B7E9A1B>I<1370A413F0A312011203A21207381FFFE0B5FCA23807F000 -AD1470A7000313E03801F8C0EA00FFEB3F0014267FA51A>I<39FFE07FF0A3000F1307B2 -140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFE07FFA33907F0 -00E0A2EBF801000314C0A23901FC0380A2EBFE07000014006D5AEB7F0EA2EB3F9CA214FC -6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I E /Fd 10 117 df<3801FFF8D8001FC7FC -131EA35BA45BA45BA4485AA315803903C00100A25C140238078006A25C141C380F0078B5 -12F8191F7D9E1D>76 D<903807E04090381C18C09038300580EB600313C0000113010180 -13001203A391C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438A21220A214 -3000601370146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>83 -D97 D<1478EB03F8EB0070A414E0A4EB01C0 -A213F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA70 -3C135C38308C80380F070015207C9F17>100 D<13C0EA01E0A213C0C7FCA7120E123312 -23EA4380130012471287120EA35AA3EA3840138012301270EA31001233121C0B1F7C9E0E ->105 D<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB03 -840038138814081307EB031000701330383001C016147C931A>110 -D<3801C1E0380262183804741C1378EB701EA2EA08E01200A33801C03CA3143838038078 -147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2EAFFC0171D809317>112 -D114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E -130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>II E /Fe 1 16 df15 D E /Ff 78 123 df<90381F83E09038F06E303901 -C07878380380F8903800F03048EB7000A7B612803907007000B2387FE3FF1D20809F1B> -11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2387FC3FE1720 -809F19>II< -90381F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007 -B23A7FE3FE3FF02420809F26>I34 D<132013401380EA0100120212065AA25AA25AA3 -12701260A312E0AC1260A312701230A37EA27EA27E12027EEA0080134013200B2E7DA112 ->40 D<7E12407E7E7E120C7EA27EA2EA0180A313C01200A313E0AC13C0A312011380A3EA -0300A21206A25A12085A5A5A5A0B2E7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D -9A23>43 D<127012F812FCA212741204A31208A21210A212201240060E7C840D>II<127012F8A3127005057C840D>I<13011303A21306A3130CA31318A3 -1330A31360A313C0A3EA0180A3EA0300A31206A35AA35AA35AA35AA35AA3102D7DA117> -IIIII<1306A2130EA2131E132EA2134E138EA2EA010E1202A2 -12041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>II<137CEA0182EA07 -01380E0380EA0C07121C3838030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB03 -80A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240 -387FFFC01480A238400100EA8002A25B485AA25B5BA25BA213C0A212015B1203A41207A7 -6CC7FC121F7D9D17>III<127012F8A312701200AA -127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212781208A3 -1210A31220A21240051D7C930D>I64 D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA3497EA2 -EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07E039FFC03FFE1F207F9F22> -II<90380FC04090387030C03801 -C0093803800538070003000E1301001E1300121C123C007C1440A2127800F81400A91278 -007C1440A2123C121C001E1480120E6CEB0100380380026C6C5A38007038EB0FC01A217D -9F21>IIII<90380FE02090387818609038E0 -04E03803800238070001481300001E1460A25A1520127C127800F81400A7EC7FFCEC03E0 -00781301127C123CA27EA27E7E380380023900E00460903878182090380FE0001E217D9F -24>I<39FFF8FFF8390F800F8000071400AC90B5FCEB800FAE000F148039FFF8FFF81D1F -7E9E22>II<380FFFC038007C00 -133CB3A3122012F8A3EAF038EA40781370EA30E0EA0F8012207E9E17>I<39FFFC0FFC39 -0FC003E03907800180150014025C5C5C5C5C5C0181C7FC1383EB8780138FEB93C0EB91E0 -13A1EBC0F01380147880A280A280EC0780A215C0D80FC013E039FFFC3FFC1E1F7E9E23> -II< -B46CEB1FF8000F158000071500D805C0132FA3D804E0134FA20170138FA3903838010FA3 -EB1C02A3EB0E04A3EB0708A3EB0390A2EB01E0A3380E00C0001FEC1F803AFFE0C1FFF825 -1F7E9E2A>I<39FF803FF83907C007C0EC03803905E00100A2EA04F01378A2133CA2131E -130FA2EB0781A2EB03C1EB01E1A2EB00F1A21479143DA2141FA28080A2000E7F121F38FF -E0011D1F7E9E22>III< -EB1F80EBF0F03801C0383807801E48487E000E7F001E148048EB03C0A2007C14E0A20078 -130100F814F0A9007814E0A2007C1303003C14C0130F391E108780390E204700000F134F -3807A03E3801E0383900F0F010EB1FB0EB0030EC38301570EC3FF0EC1FE0A2EC0FC0EC07 -801C297D9F23>II<3807E080EA0C19EA1007EA3003EA6001A212E01300A36C1300A21278127FEA3FF0 -EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C01380130300E01300EAF006 -EACE0CEA81F812217D9F19>I<007FB512E038780F010060EB006000401420A200C01430 -00801410A400001400B3497E3807FFFE1C1F7E9E21>I<39FFFC3FF8390FC007C0390780 -0380EC0100B3A300031302A2EA01C05C6C6C5AEB7018EB3820EB0FC01D207E9E22>I<39 -FFF003FE391F8000F86CC712607F00071440A26C6C1380A33901E00100A213F000001302 -A2EBF806EB7804A26D5AA36D5AA2EB1F30EB0F20A2EB07C0A36D5AA36DC7FC1F207F9E22 ->I<3BFFF07FF81FF03B1F800FC007C03B0F0007800380EE010015C0D807801402A33A03 -C009E004A39039E010F00C00011508A29038F0207800005DA2EC403C01785CA2ECC03E90 -393C801E40A390391F000F80A3011E1307010E91C7FCA2010C7F010413022C207F9E2F> -I<397FF83FF8390FE00FC03907C00700000313026C6C5AEBF00C00001308EB7810137CEB -3C20EB3E40131E6D5AA213076D7E497E1305EB09F0EB18F8EB1078EB207CEB603CEB401E -EB801F00017F9038000780000214C000071303391F8007E039FFE01FFE1F1F7F9E22>I< -39FFF003FF391F8000F8000F1460000714407F6C6C138012019038F0010000005BEBF802 -EB7C04133CEB3E08131EEB1F10EB0FB0EB07A014C01303AB1307EB7FFE201F7F9E22>I< -387FFFF8EA7C00007013F0386001E0124038C003C0A238800780130F1400EA001EA25BA2 -5B13F85B485AA23803C004A2EA0780120FEB000C121E1408481318A248133838F801F8B5 -FC161F7D9E1C>I92 D97 -D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470A214E0120F38 -0D01C0380CC300EA083E15207F9F19>IIII<137C13C6EA018F1203EA07061300A7EAFFF0EA -0700B2EA7FF01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E -6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF806C13C0383001E0386000704813 -30A4006013606C13C0381C03803803FC00141F7F9417>I<120E12FE120EAA133E1343EB -8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C123EA3121CC7FCA6120E127E12 -0EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A312 -60EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB0FF0EB03C014001302 -5B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014E038FFCFF815207F9F -18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE618618390E81C81C39 -0F00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>IIII<3803E080EA0619EA1C05EA3C07EA38031278127012 -F0A61270127812381307EA1C0BEA0E13EA03E3EA0003A8EB3FF8151D7E9318>III<1202A31206A2120EA2123EEAFFF8EA0E00AB1308A5EA06101203EA01E00D -1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC16147F9319>I<38FF -83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A3 -132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807 -071380130414E039038861001471EBC8733801D032143A3800F03CEBE01CA2EB6018EB40 -081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA01C2EA00E413EC1378 -1338133C137C134E1387EA010738030380380201C0000613E0121E38FF07FE1714809318 ->I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8 -A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>II E /Fg 19 117 df<913A03FF800180023FEBF00349B5EAFC -0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C8127F4848153F000716 -1F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA2 -6C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0 -D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>67 -DII73 D80 D82 D85 D97 D99 D101 DI< -90391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FEC -F000A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9 -FC121EA2121F7F90B57E6C14F015FC6C806C801680000F15C048C7127F007EEC1FE0007C -140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0 -D8001F90C7FC242F7E9F28>I105 D107 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C090388300FE28 -0FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380FFFFCA33E -207D9F43>109 D<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F30001 -F614E013FCA35BB3B500C3B5FCA328207D9F2D>II<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038 -FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114 D<131CA5133CA3137CA213FC -120112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3F -FCEB07F0192E7FAD1F>116 D E end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin -%%PaperSize: a4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 470 83 a Fg(REDUCE)27 b(Information)g(P)n(ac)n(k)l(age)75 -177 y Ff(REDUCE)17 b(is)g(an)g(in)o(teractiv)o(e)h(program)e(designed)i -(for)f(general)g(algebraic)h(computations)f(of)g(in)o(terest)g(to)75 -233 y(mathematicians,)e(scien)o(tists)h(and)f(engineers.)22 -b(Its)15 b(capabilities)i(include:)143 351 y Fe(\017)23 -b Ff(expansion)16 b(and)f(ordering)h(of)e(p)q(olynomials)j(and)f -(rational)f(functions;)143 444 y Fe(\017)23 b Ff(substitutions)16 -b(and)f(pattern)g(matc)o(hing)g(in)h(a)f(wide)h(v)m(ariet)o(y)f(of)g -(forms;)143 537 y Fe(\017)23 b Ff(automatic)14 b(and)i(user)f(con)o -(trolled)h(simpli\014cation)i(of)c(expressions;)143 630 -y Fe(\017)23 b Ff(calculations)16 b(with)g(sym)o(b)q(olic)g(matrices;) -143 723 y Fe(\017)23 b Ff(arbitrary)14 b(precision)j(in)o(teger)e(and)h -(real)f(arithmetic;)143 817 y Fe(\017)23 b Ff(facilities)17 -b(for)d(de\014ning)j(new)f(functions)g(and)f(extending)h(program)e(syn) -o(tax;)143 910 y Fe(\017)23 b Ff(analytic)16 b(di\013eren)o(tiation)g -(and)f(in)o(tegration;)143 1003 y Fe(\017)23 b Ff(factorization)15 -b(of)f(p)q(olynomials;)143 1096 y Fe(\017)23 b Ff(facilities)17 -b(for)d(the)i(solution)g(of)f(a)f(v)m(ariet)o(y)i(of)f(algebraic)h -(equations;)143 1189 y Fe(\017)23 b Ff(facilities)17 -b(for)d(the)i(output)f(of)g(expressions)h(in)g(a)e(v)m(ariet)o(y)i(of)f -(formats;)143 1283 y Fe(\017)23 b Ff(facilities)17 b(for)d(generating)i -(optimized)g(n)o(umerical)h(programs)d(from)g(sym)o(b)q(olic)j(input;) -143 1376 y Fe(\017)23 b Ff(Dirac)15 b(matrix)g(calculations)h(of)f(in)o -(terest)g(to)g(high)h(energy)f(ph)o(ysicists.)75 1493 -y(It)d(is)h(often)f(used)h(as)f(an)g(algebraic)h(calculator)g(for)f -(problems)g(that)g(are)g(p)q(ossible)i(to)e(do)g(b)o(y)g(hand.)19 -b(Ho)o(w)o(ev)o(er,)75 1550 y(the)c(main)h(aim)g(of)f(REDUCE)g(is)h(to) -f(supp)q(ort)g(calculations)i(that)e(are)g(not)g(feasible)i(b)o(y)e -(hand.)21 b(Man)o(y)15 b(suc)o(h)75 1606 y(calculations)g(tak)o(e)e(a)g -(signi\014can)o(t)i(time)f(to)f(set)h(up)g(and)f(can)h(run)g(for)f(min) -o(utes,)h(hours)g(or)f(ev)o(en)h(da)o(ys)f(on)h(the)75 -1662 y(most)g(p)q(o)o(w)o(erful)i(computers.)k(In)15 -b(supp)q(ort)h(of)e(this)i(goal,)f(REDUCE)g(has)g(the)g(follo)o(wing)h -(c)o(haracteristics:)131 1780 y(1.)22 b(Co)q(de)f(stabilit)o(y)l(.)40 -b(V)l(arious)22 b(v)o(ersions)g(of)f(REDUCE)g(ha)o(v)o(e)g(b)q(een)i -(in)f(use)g(for)f(o)o(v)o(er)g(t)o(w)o(en)o(t)o(y)f(y)o(ears.)189 -1836 y(There)g(has)f(b)q(een)i(a)e(steady)h(stream)f(of)g(impro)o(v)o -(emen)o(ts)g(and)h(re\014nemen)o(ts)g(since)h(then,)g(with)f(the)189 -1893 y(source)d(b)q(eing)h(sub)s(ject)e(to)h(wide)g(review)h(b)o(y)f -(the)f(user)h(comm)o(unit)o(y)l(.)25 b(REDUCE)17 b(has)g(th)o(us)g(ev)o -(olv)o(ed)189 1949 y(in)o(to)e(a)g(p)q(o)o(w)o(erful)g(system)g(whose)g -(critical)i(comp)q(onen)o(ts)e(are)g(highly)h(reliable,)h(stable)f(and) -f(e\016cien)o(t.)131 2042 y(2.)22 b(Wide)12 b(user)g(base.)19 -b(A)12 b(particular)h(algebra)f(system)g(is)g(often)g(c)o(hosen)g(for)f -(a)h(giv)o(en)g(calculation)i(b)q(ecause)189 2099 y(of)d(its)i -(widespread)g(use)f(in)h(a)f(particular)h(application)h(area,)e(with)g -(existing)h(pac)o(k)m(ages)f(and)h(templates)189 2155 -y(b)q(eing)19 b(used)g(to)f(sp)q(eed)i(up)f(problem)g(solving.)30 -b(As)19 b(evidenced)h(b)o(y)f(more)f(than)g(800)g(rep)q(orts)g(listed) -189 2212 y(in)d(the)f(curren)o(t)h(bibliograph)o(y)l(,)h(REDUCE)e(has)g -(a)h(large)f(and)h(dedicated)g(user)g(comm)o(unit)o(y)f(w)o(orking)189 -2268 y(in)j(just)f(ab)q(out)h(ev)o(ery)f(branc)o(h)h(of)f -(computational)h(science)h(and)f(engineering.)25 b(A)17 -b(large)g(n)o(um)o(b)q(er)f(of)189 2325 y(sp)q(ecial)g(purp)q(ose)e -(pac)o(k)m(ages)h(are)f(a)o(v)m(ailable)h(in)g(supp)q(ort)g(of)f(this,) -g(with)h(man)o(y)e(con)o(tributed)i(b)o(y)f(users.)131 -2418 y(3.)22 b(F)l(ull)h(source)g(co)q(de)g(a)o(v)m(ailabilit)o(y)l(.) -44 b(F)l(rom)22 b(the)g(b)q(eginning,)k(it)d(has)g(b)q(een)g(p)q -(ossible)h(to)e(obtain)h(the)189 2474 y(complete)e(REDUCE)g(source)g -(co)q(de,)i(including)h(the)d(\\k)o(ernel".)37 b(Consequen)o(tly)l(,)23 -b(REDUCE)e(is)g(a)189 2531 y(v)m(aluable)d(educational)h(resource)e -(and)g(a)g(go)q(o)q(d)f(foundation)i(for)e(exp)q(erimen)o(ts)i(in)g -(the)f(discipline)j(of)189 2587 y(computer)15 b(algebra.)21 -b(Man)o(y)15 b(users)g(do)h(in)g(fact)f(e\013ectiv)o(ely)h(mo)q(dify)g -(the)g(source)g(co)q(de)g(for)e(their)i(o)o(wn)189 2644 -y(purp)q(oses.)1009 2768 y(1)p eop -%%Page: 2 2 -2 1 bop 131 79 a Ff(4.)22 b(Flexible)e(up)q(dating.)29 -b(One)19 b(adv)m(an)o(tage)e(of)h(making)g(all)h(co)q(de)f(accessible)i -(to)d(the)h(user)g(is)h(that)e(it)h(is)189 136 y(relativ)o(ely)c(easy)e -(to)g(incorp)q(orate)h(patc)o(hes)g(to)f(correct)g(small)h(problems)h -(or)e(extend)h(the)g(applicabili)q(t)o(y)189 192 y(of)i(existing)j(co)q -(de)e(to)g(new)g(problem)h(areas.)22 b(An)17 b(electronic)h(mail)f -(service)g(and)f(gopher)g(and)h(W)l(orld)189 249 y(Wide)j(W)l(eb)g -(serv)o(ers)f(allo)o(w)h(users)g(to)f(get)g(suc)o(h)h(up)q(dates)h(and) -f(complete)g(new)g(pac)o(k)m(ages)g(as)f(they)189 305 -y(b)q(ecome)d(a)o(v)m(ailable,)g(without)f(ha)o(ving)h(to)e(w)o(ait)h -(for)g(a)f(formal)h(system)g(release.)131 398 y(5.)22 -b(State-of-the-art)d(algorithms.)34 b(Another)20 b(adv)m(an)o(tage)g -(of)g(an)g(\\op)q(en")g(system)f(is)i(that)e(there)i(is)f(a)189 -454 y(shared)f(dev)o(elopmen)o(t)i(e\013ort)d(in)o(v)o(olving)j(b)q -(oth)f(distributors)g(and)g(users.)34 b(As)20 b(a)f(result,)i(it)f(is)g -(eas-)189 510 y(ier)f(to)f(k)o(eep)g(the)h(co)q(de)g(up-to-date,)g -(with)g(the)g(b)q(est)g(curren)o(t)f(algorithms)g(b)q(eing)i(used)f(so) -q(on)g(after)189 567 y(their)d(dev)o(elopmen)o(t.)21 -b(A)o(t)15 b(the)h(presen)o(t)f(time,)h(w)o(e)f(b)q(eliev)o(e)j(REDUCE) -d(has)h(the)f(b)q(est)h(a)o(v)m(ailable)h(co)q(de)189 -623 y(for)g(solving)h(nonlinear)h(p)q(olynomial)g(equations)f(using)g -(Gro)q(ebner)g(bases,)g(real)g(and)f(complex)i(ro)q(ot)189 -680 y(\014nding)13 b(to)d(an)o(y)i(precision,)h(exterior)f(calculus)h -(calculations)g(and)f(optimized)h(n)o(umerical)g(co)q(de)f(gener-)189 -736 y(ation)g(among)g(others.)18 b(Its)13 b(simpli\014cation)h -(strategy)l(,)e(using)h(a)f(com)o(bination)h(of)f(e\016cien)o(t)h(p)q -(olynomial)189 793 y(manipulation)j(and)f(\015exible)h(pattern)f(matc)o -(hing)f(is)h(fo)q(cussed)h(on)e(giving)i(users)e(as)h(natural)f(a)h -(result)189 849 y(as)f(p)q(ossible)j(without)f(excessiv)o(e)g -(programming.)131 942 y(6.)22 b(Algebraic)15 b(fo)q(cus.)20 -b(REDUCE)15 b(aims)g(at)f(b)q(eing)h(part)g(of)f(a)g(complete)h(scien)o -(ti\014c)i(en)o(vironmen)o(t)e(rather)189 998 y(than)e(b)q(eing)i(the)e -(complete)i(en)o(vironmen)o(t)e(itself.)21 b(As)13 b(a)g(result,)h -(users)g(can)f(tak)o(e)g(adv)m(an)o(tage)g(of)g(other)189 -1055 y(state-of-the-art)i(systems)i(sp)q(ecializing)j(in)e(n)o -(umerical)g(and)f(graphical)h(calculations,)h(rather)d(than)189 -1111 y(dep)q(end)d(on)g(just)f(one)g(system)g(to)f(pro)o(vide)i(ev)o -(erything.)19 b(T)l(o)12 b(this)h(end,)g(REDUCE)f(pro)o(vides)h -(facilities)189 1167 y(for)i(writing)h(results)h(in)g(a)e(form)g -(compatible)i(with)g(common)e(programming)h(n)o(umerical)h(languages) -189 1224 y(\(suc)o(h)e(as)g(F)l(ortran\))e(or)i(do)q(cumen)o(t)h(pro)q -(cessors)f(suc)o(h)g(as)g(T)l(eX.)131 1316 y(7.)22 b(P)o(ortabilit)o(y) -l(.)29 b(Careful)18 b(design)h(for)f(p)q(ortabilit)o(y)h(means)f -(REDUCE)g(is)h(often)f(a)o(v)m(ailable)i(on)e(new)g(or)189 -1373 y(uncommon)c(mac)o(hines)h(so)q(on)f(after)f(their)h(release.)21 -b(This)14 b(has)g(led)h(to)f(signi\014can)o(t)h(user)f(comm)o(unities) -189 1429 y(throughout)j(the)h(w)o(orld.)28 b(A)o(t)17 -b(the)h(presen)o(t)g(time,)h(REDUCE)f(is)g(readily)h(a)o(v)m(ailable)h -(on)d(essen)o(tially)189 1486 y(all)f(w)o(orkstations)e(and)h(high-end) -i(micropro)q(cessor-based)f(mac)o(hines)g(in)g(the)f(mark)o(et.)131 -1578 y(8.)22 b(Uniformit)o(y)l(.)29 b(Ev)o(en)18 b(though)g(REDUCE)g -(is)h(supp)q(orted)g(with)f(di\013eren)o(t)h(Lisps)g(on)f(man)o(y)g -(di\013eren)o(t)189 1635 y(platforms,)10 b(m)o(uc)o(h)h(atten)o(tion)f -(has)g(b)q(een)i(paid)f(to)f(making)h(all)h(v)o(ersions)e(p)q(erform)h -(in)g(the)g(same)f(manner)189 1691 y(regardless)i(of)g(implemen)o -(tation.)20 b(As)12 b(a)g(result,)h(users)f(can)g(ha)o(v)o(e)g -(con\014dence)h(that)f(their)g(calculations)189 1748 -y(will)k(not)f(b)q(eha)o(v)o(e)h(di\013eren)o(tly)g(if)g(they)f(mo)o(v) -o(e)f(them)h(to)g(a)g(di\013eren)o(t)g(mac)o(hine.)131 -1840 y(9.)22 b(Flexible)f(O\013erings.)34 b(T)l(o)19 -b(supp)q(ort)h(the)g(di\013ering)g(needs)h(of)e(the)h(user)f(comm)o -(unit)o(y)l(,)i(REDUCE)e(is)189 1897 y(a)o(v)m(ailable)e(in)f(a)e(n)o -(um)o(b)q(er)i(of)f(di\013eren)o(t)g(con\014gurations:)208 -2001 y(\(a\))22 b(p)q(ersonal)11 b(system,)f(ready)h(to)e(run,)j(a)o(v) -m(ailable)g(for)d(a)i(selection)g(of)f(common)g(p)q(ersonal)h -(computers,)289 2057 y(shipp)q(ed)j(without)e(source)h(and)f(hence)i -(with)e(less)h(easy)f(up)q(databilit)o(y)i(b)q(et)o(w)o(een)f(ma)s(jor) -e(releases,)289 2114 y(but)k(at)g(lo)o(w)o(est)f(cost)h(for)f(a)h -(single)i(user)e(site;)205 2185 y(\(b\))23 b(professional)15 -b(system,)f(whic)o(h)i(comes)f(with)g(source,)f(and)h(is)h(licensed)h -(for)d(use)h(on)g(one)g(CPU)f(or)289 2242 y(\014leserv)o(er)i(and)f(so) -g(can)g(b)q(e)h(esp)q(ecially)i(attractiv)o(e)c(for)g(lab)q(oratories)i -(or)e(w)o(ork-groups;)210 2314 y(\(c\))23 b(site)16 b(licenses,)h(whic) -o(h)f(extend)g(the)g(professional)g(system)f(to)g(co)o(v)o(er)g(all)h -(similar)h(mac)o(hines)f(at)f(a)289 2370 y(single)h(p)q(ostal)g -(address.)108 2474 y(10.)22 b(Cost.)i(The)17 b(cost)g(of)f(the)h -(complete)h(REDUCE)f(system)g(to)f(the)h(end-user)h(is)g(mo)q(derate,)e -(and)i(do)q(es)189 2531 y(not)f(v)m(ary)h(substan)o(tially)i(from)d -(platform)h(to)f(platform.)29 b(In)18 b(addition,)i(the)e(p)q(ersonal)h -(system)f(and)189 2587 y(site)g(licenses)h(are)e(o\013ered)h(on)f(v)o -(ery)h(generous)f(terms.)27 b(Moreo)o(v)o(er,)16 b(since)j(all)g -(systems)e(are)g(deriv)o(ed)189 2644 y(from)f(the)i(same)f(source)g -(base,)h(they)f(are)g(v)o(ery)g(compatible)i(from)d(platform)h(to)g -(platform)g(\(from)f(a)1009 2768 y(2)p eop -%%Page: 3 3 -3 2 bop 189 79 a Ff(PC)12 b(to)g(a)g(Cra)o(y)f(sup)q(ercomputer\).)20 -b(This)13 b(mak)o(es)f(it)h(p)q(ossible)h(to)e(ha)o(v)o(e)g(compatible) -h(v)o(ersions)g(at)f(home)189 136 y(and)j(w)o(ork.)75 -254 y(The)20 b(most)e(recen)o(t)i(release)g(of)f(REDUCE)g(\(V)l(ersion) -h(3.6\))e(is)i(dated)f(15)g(July)i(1995.)31 b(It)20 b(is)g(a)o(v)m -(ailable)h(for)75 311 y(most)12 b(common)g(computing)h(systems,)f(in)i -(some)e(cases)h(in)g(more)f(than)h(one)g(v)o(ersion)f(for)g(the)h(same) -f(mac)o(hine,)75 367 y(through)e(a)g(v)m(ariet)o(y)h(of)f(distributors) -g(listed)i(in)f(this)g(memo.)18 b(REDUCE)10 b(is)h(based)g(on)f(a)g -(dialect)i(of)e(Lisp)h(called)75 424 y Fd(Standar)n(d)i(Lisp)p -Ff(,)f(and)g(the)g(di\013erences)h(b)q(et)o(w)o(een)f(v)o(ersions)g -(are)g(the)g(result)g(of)g(di\013eren)o(t)g(implemen)o(tations)h(of)75 -480 y(this)e(Lisp;)i(in)f(eac)o(h)f(case)g(the)g(source)g(co)q(de)g -(for)f(REDUCE)h(itself)h(remains)f(the)g(same.)18 b(The)11 -b(complete)h(source)75 537 y(co)q(de)19 b(for)e(REDUCE)h(is)g(a)o(v)m -(ailable.)30 b(On-line)20 b(v)o(ersions)e(of)g(the)g(man)o(ual)g(and)g -(other)g(supp)q(ort)g(do)q(cumen)o(ts)75 593 y(and)d(tutorials)h(are)e -(also)i(normally)f(included)j(with)e(the)f(distribution.)75 -675 y(In)g(order)g(to)f(help)i(users)f(c)o(ho)q(ose)g(the)g(b)q(est)g -(v)o(ersion)g(of)f(REDUCE)h(for)f(their)i(purp)q(oses,)f(w)o(e)f(shall) -i(describ)q(e)75 731 y(the)k(general)h(c)o(haracteristics)f(of)g(the)g -(a)o(v)m(ailable)h(Lisps.)36 b(F)l(ollo)o(wing)21 b(this)f(will)i(b)q -(e)f(a)e(table)i(sho)o(wing)f(the)75 787 y(particular)d(v)o(ersions)f -(supp)q(orted)g(on)g(eac)o(h)g(mac)o(hine,)h(and)f(\014nally)i(the)e -(full)h(names)f(and)g(addresses)g(of)g(the)75 844 y(REDUCE)f -(distributors.)75 925 y(Since)j(Standard)f(Lisp)g(includes)i(a)e -(limited)h(n)o(um)o(b)q(er)f(of)f(functions,)h(it)g(is)g(p)q(ossible)i -(to)d(run)h(REDUCE)f(on)75 982 y(most)i(mo)q(dern)h(Lisps,)h(since)g -(they)f(con)o(tain)g(these)g(functions)g(as)f(a)h(subset.)30 -b(Ho)o(w)o(ev)o(er,)19 b(the)f(distributed)75 1038 y(v)o(ersions)d(of)g -(REDUCE)g(are)g(based)h(on)f(t)o(w)o(o)f(easily)i(a)o(v)m(ailable)h -(Lisps,)f(namely:)143 1157 y Fe(\017)23 b Ff(P)o(ortable)18 -b(Standard)g(Lisp)i(\(PSL\).)e(This)i(is)f(curren)o(tly)g(the)g(Lisp)h -(used)f(most)f(widely)i(for)e(running)189 1213 y(REDUCE.)e(It)g(ev)o -(olv)o(ed)h(from)f(the)g(original)h(Standard)g(Lisp)g(de\014nition,)h -(but)f(no)o(w)f(con)o(tains)g(man)o(y)189 1270 y(more)i(facilities.)33 -b(It)19 b(is)g(quite)g(e\016cien)o(t)h(in)f(its)g(use)g(of)g(b)q(oth)g -(space)g(and)g(time,)g(and)g(has)g(b)q(een)h(op-)189 -1326 y(timized)h(for)e(algebraic)i(computation.)35 b(All)21 -b(PSL)g(v)o(ersions)f(of)f(REDUCE)h(are)g(distributed)i(with)189 -1383 y(su\016cien)o(t)15 b(PSL)g(supp)q(ort)g(to)f(run)h(on)g(the)g -(giv)o(en)g(computing)h(system.)j(PSL)c(is)g(supp)q(orted)h(on)e(man)o -(y)189 1439 y(arc)o(hitectures)j(and)h(is)g(an)g(ideal)h(system)e(for)g -(those)g(w)o(an)o(ting)g(to)g(run)h(REDUCE)f(as)g(a)h(standalone)189 -1496 y(system.)h(The)c(curren)o(t)g(principal)i(dev)o(elop)q(er)f(of)f -(PSL)g(is)h(the)f(Konrad)g(Zuse)g(Cen)o(ter,)f(Berlin)j(\(ZIB\).)143 -1589 y Fe(\017)23 b Ff(Co)q(demist)11 b(Standard)h(Lisp)g(\(CSL\).)f -(This)h(is)g(a)g(Lisp)g(system)f(written)h(completely)h(in)f(ANSI)g(C,) -f(whic)o(h)189 1646 y(mak)o(es)17 b(it)h(v)o(ery)f(easy)h(to)f(p)q(ort) -h(to)f(a)h(new)g(mac)o(hine.)28 b(Lik)o(e)19 b(PSL,)f(it)g(is)g(a)g -(faithful)h(implemen)o(tation)189 1702 y(of)d(Standard)g(Lisp)h(and)g -(has)f(b)q(een)i(optimized)f(for)f(running)i(REDUCE.)e(It)g(requires)h -(a)f(v)o(ery)g(small)189 1759 y(memory)g(partition)h(for)f(its)i(Lisp)g -(supp)q(ort.)25 b(F)l(urthermore,)16 b(most)g(of)h(the)f(REDUCE)h -(facilities)i(are)189 1815 y(supp)q(orted)j(as)f(mac)o(hine)h(indep)q -(enden)o(t)i(pseudo)q(co)q(de,)g(whic)o(h)e(is)g(quite)g(compact.)39 -b(In)22 b(the)f(w)o(orst)189 1872 y(case,)f(the)f(p)q(erformance)g(of)g -(this)h(system)f(is)h(ab)q(out)f(a)g(factor)f(of)h(t)o(w)o(o)f(slo)o(w) -o(er)h(than)g(PSL,)g(though)189 1928 y(in)h(man)o(y)g(cases)f(it)h -(matc)o(hes)g(PSL)g(p)q(erformance.)33 b(Ho)o(w)o(ev)o(er,)20 -b(the)g(memory)f(use)h(is)g(smaller.)35 b(All)189 1985 -y(CSL)17 b(v)o(ersions)g(are)f(distributed)j(with)e(su\016cien)o(t)g -(CSL)g(supp)q(ort)g(to)f(run)i(on)e(the)h(giv)o(en)g(computing)189 -2041 y(system.)32 b(This)20 b(is)g(an)f(ideal)i(system)e(for)g(those)g -(wishing)i(to)e(em)o(b)q(ed)h(algebraic)g(calculations)h(in)f(a)189 -2098 y(C-based)e(programming)g(en)o(vironmen)o(t.)31 -b(The)18 b(dev)o(elop)q(er)i(of)e(CSL)h(is)g(Co)q(demist)g(Ltd.)30 -b(A)19 b(v)o(ersion)189 2154 y(with)c(Japanese)h(language)f(supp)q(ort) -h(is)f(also)h(a)o(v)m(ailable)g(from)f(F)l(orbs)g(Ltd.)75 -2322 y Fc(Demonstration)22 b(V)-6 b(ersions)75 2448 y -Ff(Demonstration)15 b(v)o(ersions)h(of)g(the)g(CSL-based)h(REDUCE)f -(for)g(the)g(IBM)g(PC)g(and)g(Macin)o(tosh)g(describ)q(ed)75 -2505 y(b)q(elo)o(w)f(are)f(a)o(v)m(ailable)i(b)o(y)e(anon)o(ymous)g -(ftp)g(from)f(ftp.bath.ac.uk)g(in)i(the)g(directory)f -(pub/jp\013/REDUCE)g(.)1009 2768 y(3)p eop -%%Page: 4 4 -4 3 bop 75 79 a Ff(Demonstration)14 b(v)o(ersions)h(of)f(the)h -(PSL-based)h(REDUCE)f(for)f(the)h(IBM)g(PC)f(describ)q(ed)j(b)q(elo)o -(w)e(are)g(a)o(v)m(ail-)75 136 y(able)h(b)o(y)f(anon)o(ymous)g(ftp)g -(from)f(ftp.zib-b)q(erlin.de)k(as)d(follo)o(ws:)189 251 -y(pub/reduce/demo/msdos:)20 b(MS-DOS)c(and)f(Windo)o(ws)g(3.1)189 -308 y(pub/reduce/demo/lin)o(ux:)22 b(LINUX)75 475 y Fc(Obtaining)i(F)-6 -b(urther)24 b(Information)f(ab)r(out)g(REDUCE)75 602 -y Ff(Y)l(ou)15 b(can)g(obtain)g(a)g(curren)o(t)g(cop)o(y)f(of)h(this)g -(information)g(form)f(at)h(an)o(y)f(time)i(b)o(y)e(including)k(the)d -(line)i(\\send)75 658 y(info-pac)o(k)m(age")g(\(or)g(\\send)g(info-pac) -o(k)m(age.tex")g(for)f(a)h(L)1043 650 y Fb(A)1062 658 -y Ff(T)1087 668 y(E)1113 658 y(X)g(v)o(ersion\))g(in)h(a)f(message)f -(to)h(one)g(of)f(the)h(RE-)75 714 y(DUCE)c(net)o(w)o(ork)f(library)j -(serv)o(ers,)d(namely)j(reduce-netlib@rand.org,)g(reduce-netlib@can.nl) -i(or)c(reduce-)75 771 y(netlib@pi.cc.u-toky)o(o.ac.jp.)42 -b(This)23 b(message)e(is)i(answ)o(ered)f(b)o(y)g(an)g(automated)f(serv) -o(er.)41 b(The)22 b(library)75 827 y(includes)d(pac)o(k)m(ages)d(made)h -(a)o(v)m(ailable)h(since)f(the)g(release)g(of)f(REDUCE)g(3.6)g(and)g -(patc)o(hes)h(to)e(correct)h(an)o(y)75 884 y(bugs)g(that)g(ha)o(v)o(e)g -(b)q(een)h(disco)o(v)o(ered.)24 b(F)l(urther)16 b(information)g(on)g -(this)h(library)l(,)g(as)f(w)o(ell)h(as)f(instructions)h(on)75 -940 y(ho)o(w)h(to)g(join)g(a)g(REDUCE)h(electronic)h(forum,)e(can)g(b)q -(e)h(obtained)h(b)o(y)e(including)j(\\help")e(on)f(a)g(separate)75 -997 y(line)e(in)f(the)f(message.)19 b(Finally)l(,)d(a)e(set)f(of)h(in)o -(tro)q(ductory)g(examples)h(in)g(L)1323 988 y Fb(A)1342 -997 y Ff(T)1367 1006 y(E)1393 997 y(X)f(format)f(can)h(b)q(e)h -(obtained)g(b)o(y)75 1053 y(including)j(\\send)d(in)o(tro.tex")g(on)g -(a)g(line)i(in)f(y)o(our)e(message.)75 1135 y(The)f(same)f(information) -h(is)g(a)o(v)m(ailable)i(from)d(an)g(In)o(ternet)h(gopher)g(serv)o(er)f -(with)h(the)g(address)f(info.rand.org.)75 1191 y(The)17 -b(net)o(w)o(ork)e(library)i(\014les)h(are)e(in)h(a)f(\\REDUCE)g -(Library")h(directory)f(under)i(the)e(directory)h(\\Publicly)75 -1247 y(Av)m(ailable)g(Soft)o(w)o(are".)i(The)c(relev)m(an)o(t)h(URL)g -(is)g(gopher://info.rand.org/11/so)o(ft)o(w)n(are/reduce)d(.)75 -1329 y(A)g(W)l(orld)h(Wide)g(W)l(eb)f(REDUCE)g(serv)o(er)g(with)g(URL)h -(h)o(ttp://www.rrz.uni-k)o(o)q(eln.de/REDUCE/)e(is)i(also)75 -1385 y(supp)q(orted.)40 b(In)23 b(addition)g(to)e(general)h -(information)g(ab)q(out)g(REDUCE,)f(this)h(serv)o(er)g(has)f(p)q(oin)o -(ters)i(to)75 1442 y(the)17 b(net)o(w)o(ork)e(library)l(,)j(the)f -(demonstration)f(v)o(ersions,)h(examples)h(of)e(REDUCE)g(programming,)h -(a)f(set)g(of)75 1498 y(man)o(uals,)f(and)g(the)h(REDUCE)f(online)i -(help)f(system.)75 1580 y(T)l(o)f(register)g(for)g(the)g(electronic)i -(mail)f(forum,)e(or)h(for)f(further)h(information,)g(please)h(con)o -(tact:)189 1695 y(An)o(thon)o(y)f(C.)f(Hearn)189 1751 -y(RAND)189 1808 y(1700)g(Main)h(Street)189 1864 y(P)l(.O.)g(Bo)o(x)f -(2138)189 1921 y(San)o(ta)g(Monica)i(CA)f(90407-2138)189 -1977 y(T)l(elephone:)21 b(+1-310-393-0411)13 b(Ext.)20 -b(6615)189 2034 y(F)l(acsimile:)h(+1-310-393-4818)189 -2090 y(Electronic)16 b(Mail:)21 b(reduce@rand.org)75 -2258 y Fc(V)-6 b(ersions)22 b(Av)l(ailable)75 2384 y -Ff(The)c(follo)o(wing)g(table)g(describ)q(es)h(the)f(v)o(ersions)g(of)f -(REDUCE)g(supp)q(orted)i(b)o(y)e(the)h(v)m(arious)g(distributors.)75 -2440 y(Con)o(tact)c(them)h(for)g(detailed)i(price)f(and)g(a)o(v)m -(ailabilit)o(y)h(information.)k(F)l(or)15 b(some)g(mac)o(hines)h -(REDUCE)f(3.6)75 2497 y(ma)o(y)f(not)h(b)q(e)h(a)o(v)m(ailable,)h(but)e -(3.5)f(still)j(distributed.)75 2578 y(The)f(generic)i(ANSI)f(C)f(v)o -(ersion)g(requires)h(some)f(exp)q(erience)i(with)f(the)f(em)o(b)q -(edding)i(language)e(for)g(instal-)75 2635 y(lation;)f(the)h(mac)o -(hine-sp)q(eci\014c)i(v)o(ersions)d(ha)o(v)o(e)g(more)g(straigh)o -(tforw)o(ard)e(installation)j(pro)q(cedures.)1009 2768 -y(4)p eop -%%Page: 5 5 -5 4 bop 130 35 1780 2 v 129 92 2 57 v 352 75 a Fa(System)17 -b(Description)p 1019 92 V 386 w(Distributors)h(\(Lisp)g(Used\))p -1909 92 V 130 93 1780 2 v 129 150 2 57 v 155 133 a Ff(Generic)e(ANSI)g -(C)f(v)o(ersion)p 1019 150 V 411 w(Co)q(demist)g(\(CSL\))p -1909 150 V 130 151 1780 2 v 129 208 2 57 v 155 191 a(Acorn)g(Arc)o -(himedes)p 1019 208 V 526 w(Co)q(demist)g(\(CSL\))p 1909 -208 V 130 210 1780 2 v 129 266 2 57 v 155 249 a(Apple)i(Macin)o(tosh)p -1019 266 V 552 w(Co)q(demist)e(\(CSL\))p 1909 266 V 130 -268 1780 2 v 129 324 2 57 v 155 307 a(A)o(tari)g(1040ST)f(and)h(Mega)p -1019 324 V 411 w(Co)q(demist)g(\(CSL\))p 1909 324 V 130 -326 1780 2 v 129 382 2 57 v 155 365 a(CDC)g(Cyb)q(er)g(910)p -1019 382 V 569 w(ZIB)g(\(PSL\))p 1909 382 V 130 384 1780 -2 v 129 440 2 57 v 155 423 a(CDC)g(4000)f(series)p 1019 -440 V 562 w(ZIB)h(\(PSL\))p 1909 440 V 130 442 1780 2 -v 129 499 2 57 v 155 482 a(Con)o(v)o(ex)g(C100,)e(C200)i(and)g(C300)f -(series)p 1019 499 V 173 w(ZIB)h(\(PSL\))p 1909 499 V -130 500 1780 2 v 129 557 2 57 v 155 540 a(Cra)o(y)f(X-MP)l(,)h(Y-MP)g -(and)h(C90)p 1019 557 V 328 w(ZIB)f(\(PSL\))p 1909 557 -V 130 558 1780 2 v 129 615 2 57 v 155 598 a(Data)f(General)i(A)-5 -b(ViiON)17 b(series)p 1019 615 V 328 w(ZIB)e(\(PSL\))p -1909 615 V 130 616 1780 2 v 129 673 2 57 v 155 656 a(DEC)f(Alpha)i(PC)e -(running)i(MS)e(Windo)o(ws)h(NT)p 1019 673 V 50 w(ZIB)g(\(PSL\))p -1909 673 V 130 675 1780 2 v 129 787 2 113 v 155 714 a(DEC)f(Alpha)h -(series)g(running)g(OSF-1)f(or)g(Op)q(en)155 770 y(VMS)p -1019 787 V 1045 714 a(ZIB)h(\(PSL\))p 1909 787 V 130 -789 1780 2 v 129 902 2 113 v 155 829 a(DEC)24 b(DECStation)g(series)h -(2000,)g(3000)f(and)155 885 y(5000)p 1019 902 V 1045 -829 a(ZIB)15 b(\(PSL\))p 1909 902 V 130 904 1780 2 v -129 960 2 57 v 155 943 a(DEC)g(V)-5 b(AX)15 b(running)h(V)-5 -b(AX/VMS)16 b(or)e(Ultrix)p 1019 960 V 85 w(ZIB)h(\(PSL\))p -1909 960 V 130 962 1780 2 v 129 1018 2 57 v 155 1001 -a(F)l(ujitsu)h(M)f(Mainframe)f(Unix)j(series)p 1019 1018 -V 232 w(F)l(orbs)e(\(CSL\))p 1909 1018 V 130 1020 1780 -2 v 129 1076 2 57 v 155 1059 a(F)l(ujitsu)h(2400)e(series)i(running)g -(UXP/M)p 1019 1076 V 175 w(ZIB)f(\(PSL\))p 1909 1076 -V 130 1078 1780 2 v 129 1134 2 57 v 155 1118 a(HP)g(9000/300)e(and)j -(400)e(series)p 1019 1134 V 335 w(F)l(orbs)h(\(CSL\);)f(ZIB)i(\(PSL\))p -1909 1134 V 130 1136 1780 2 v 129 1193 2 57 v 155 1176 -a(HP)f(9000/700)e(and)j(800)e(series)p 1019 1193 V 335 -w(F)l(orbs)h(\(CSL\);)f(ZIB)i(\(PSL\))p 1909 1193 V 130 -1194 1780 2 v 129 1364 2 170 v 155 1234 a(IBM-compatible)g(PCs)e(based) -h(on)f(In)o(tel)h(80286)155 1290 y(with)21 b(extended)g(memory)l(,)h -(80386)d(and)h(80486)155 1347 y(running)c(MS-DOS)p 1019 -1364 V 1045 1234 a(Co)q(demist)f(\(CSL\);)g(F)l(orbs)g(\(CSL\))p -1909 1364 V 130 1365 1780 2 v 129 1535 2 170 v 155 1405 -a(IBM-compatible)h(PCs)e(based)h(on)f(In)o(tel)h(80386)155 -1461 y(and)d(80486)d(running)k(MS-DOS,)e(MS-Windo)o(ws)155 -1518 y(3,)k(OS/2)g(or)f(Windo)o(ws)i(NT)p 1019 1535 V -1045 1405 a(ZIB)f(\(PSL\))p 1909 1535 V 130 1536 1780 -2 v 129 1706 2 170 v 155 1576 a(IBM-compatible)h(PCs)e(based)h(on)f(In) -o(tel)h(80386)155 1632 y(and)j(80486)e(running)j(UNIX)f(\(SCO-Unix,)h -(In-)155 1689 y(teractiv)o(e,)c(Solaris)h(or)e(LINUX\))p -1019 1706 V 1045 1576 a(ZIB)h(\(PSL\))p 1909 1706 V 130 -1707 1780 2 v 129 1820 2 113 v 155 1747 a(IBM-compatible)h(PCs)e(based) -h(on)f(In)o(tel)h(80386)155 1803 y(and)g(80486)f(running)j(Next)e(Step) -p 1019 1820 V 1045 1747 a(ZIB)g(\(PSL\))p 1909 1820 V -130 1822 1780 2 v 129 1878 2 57 v 155 1861 a(IBM)h(RISC)g(System/6000)p -1019 1878 V 403 w(ZIB)f(\(PSL\))p 1909 1878 V 130 1880 -1780 2 v 129 1936 2 57 v 155 1920 a(ICL)h(mainframes)f(running)h(VME)p -1019 1936 V 277 w(Co)q(demist)f(\(CSL\))p 1909 1936 V -130 1938 1780 2 v 129 1995 2 57 v 155 1978 a(ICL)h(DRS6000)p -1019 1995 V 612 w(Co)q(demist)f(\(CSL\))p 1909 1995 V -130 1996 1780 2 v 129 2053 2 57 v 155 2036 a(NEC)g(EWS)g(4800)f(series) -p 1019 2053 V 447 w(F)l(orbs)h(\(CSL\))p 1909 2053 V -130 2054 1780 2 v 129 2111 2 57 v 155 2094 a(NEC)g(PC-9800)f(series)p -1019 2111 V 486 w(F)l(orbs)h(\(CSL\))p 1909 2111 V 130 -2112 1780 2 v 129 2169 2 57 v 155 2152 a(NeXTstation)p -1019 2169 V 632 w(ZIB)g(\(PSL\))p 1909 2169 V 130 2171 -1780 2 v 129 2227 2 57 v 155 2210 a(Siemens)i(S400/40)c(series)j -(running)h(UXP/M)p 1019 2227 V 83 w(ZIB)e(\(PSL\))p 1909 -2227 V 130 2229 1780 2 v 129 2285 2 57 v 155 2268 a(Silicon)j(Graphics) -d(IRIS)i(or)e(INDIGO)p 1019 2285 V 216 w(ZIB)g(\(PSL\))p -1909 2285 V 130 2287 1780 2 v 129 2343 2 57 v 155 2326 -a(Son)o(y)g(NEWS)p 1019 2343 V 642 w(F)l(orbs)g(\(CSL\))p -1909 2343 V 130 2345 1780 2 v 129 2401 2 57 v 155 2384 -a(Sun)h(3)p 1019 2401 V 776 w(F)l(orbs)f(\(CSL\);)f(ZIB)i(\(PSL\))p -1909 2401 V 130 2403 1780 2 v 129 2516 2 113 v 155 2443 -a(Sun)52 b(4,)100 b(SP)l(AR)o(CStation)51 b(series)h(and)155 -2499 y(compatibles)p 1019 2516 V 1045 2443 a(F)l(orbs)15 -b(\(CSL\);)f(ZIB)i(\(PSL\))p 1909 2516 V 130 2518 1780 -2 v 129 2574 2 57 v 155 2557 a(Thinking)h(Mac)o(hines)f(CM5)p -1019 2574 V 396 w(ZIB)f(\(PSL\))p 1909 2574 V 130 2576 -1780 2 v 1009 2768 a(5)p eop -%%Page: 6 6 -6 5 bop 75 79 a Fc(REDUCE)22 b(Distributors)100 193 y -Ff(Co)q(demist:)50 b(Co)q(demist)15 b(Limited)351 249 -y(\\Alta",)f(Horsecom)o(b)q(e)h(V)l(ale)351 306 y(Com)o(b)q(e)g(Do)o -(wn)351 362 y(Bath)g(BA2)g(5QR,)g(UNITED)g(KINGDOM)351 -419 y(T)l(elephone:)21 b(+44-1225-837430)351 475 y(F)l(acsimile:)g -(+44-1225-837430)351 532 y(Electronic)16 b(Mail:)21 b -(jp\013@maths.bath.ac.uk)100 636 y(F)l(orbs:)128 b(F)l(orbs)14 -b(System)i(Co.)j(Ltd)351 693 y(Kannai)d(JS)g(Building)351 -749 y(207)e(Y)l(amasitac)o(hou)351 806 y(Nak)m(a-ku)351 -862 y(Y)l(ok)o(ohama)g(231,)g(JAP)l(AN)351 919 y(T)l(elephone:)21 -b(+81-45-212-5020)351 975 y(F)l(acsimile:)g(+81-45-212-5023)100 -1075 y(ZIB:)162 b(Herb)q(ert)15 b(Melenk)351 1131 y(Konrad-Zuse-Zen)o -(trum)g(fuer)g(Informationstec)o(hnik)h(Berlin)h(\(ZIB\))351 -1188 y(Heilbronner)g(Str.)i(10)351 1244 y(D10711)13 b(Berlin,)k -(GERMANY)e(T)l(elephone:)21 b(+49-30-89604-195)351 1301 -y(F)l(acsimile:)g(+49-30-89604-125)351 1357 y(Electronic)16 -b(Mail:)21 b(melenk@sc.zib-b)q(erli)q(n.de)351 1449 y(Ordering)16 -b(information)f(for)g(the)g(ZIB)h(v)o(ersions)f(is)h(a)o(v)m(ailable)h -(from)d(the)h(URL)351 1505 y(h)o(ttp://www.zib-b)q(erlin.de/Sym)o(b)q -(olik/reduce/dist/)g(or)d(b)o(y)g(anon)o(ymous)g(ftp)g(from)351 -1562 y(ftp.zib-b)q(erlin.de)18 b(in)e(pub/reduce/distribution.)1576 -1716 y(Septem)o(b)q(er)g(17,)e(1995)1009 2768 y(6)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF DELETED r36/mkhelp/REDHELP.INF Index: r36/mkhelp/REDHELP.INF ================================================================== --- r36/mkhelp/REDHELP.INF +++ /dev/null @@ -1,25208 +0,0 @@ -This is Info file redhelp.inf, produced by Makeinfo-1.55 from the input -file redhelp.y. - - -File: redhelp, Node: IDENTIFIER, Next: KERNEL, Up: Concepts section - - IDENTIFIER type - - Identifiers in REDUCE consist of one or more alphanumeric -characters, of which the first must be alphabetical. The maximum number -of characters allowed is system dependent, but is usually over 100. -However, printing is simplified if they are kept under 25 characters. - - You can also use special characters in your identifiers, but each -must be preceded by an exclamation point ! as an escape character. -Useful special characters are # $ % ^ & * - + = ? < > ^ / ! and the -space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore _ is special in this regard. It must be preceded by an -escape character in the first position in an identifier, but is treated -like a normal letter within an identifier. - - Other characters, such as ( ) # ; ' " can also be used if preceded -by a ! , but as they have special meanings to the Lisp reader it is -best to avoid them to avoid confusion. - - Many system identifiers have * before or after their names, or - -between words. If you accidentally pick one of these names for your own -identifier, it could have disastrous effects. For this reason it is -wise not to include * or - anywhere in your identifiers. - - You will notice that REDUCE does not use the escape characters when -it prints identifiers containing special characters; however, you still -must use them when you refer to these identifiers. Be careful when -editing statements containing escaped special characters to treat the -character and its escape as an inseparable pair. - - Identifiers are used for variable names, labels for GO TO statements, -and names of arrays, matrices, operators, and procedures. Once an -identifier is used as a matrix, array, scalar or operator identifier, -it may not be used again as a matrix, array or operator. An operator or -array identifier may later be used as a scalar without problems, but a -matrix identifier cannot be used as a scalar. All procedures are -entered into the system as operators, so the name of a procedure may -not be used as a matrix, array, or operator identifier either. - - -File: redhelp, Node: KERNEL, Next: STRING, Prev: IDENTIFIER, Up: Concepts section - - KERNEL type - - A KERNEL is a form that cannot be modified further by the REDUCE -canonical simplifier. Scalar variables are always kernels. The other -important class of kernels are operators with their arguments. Some -examples should help clarify this concept: - - ____________________________________________________________ - - Expression Kernel? - - x Yes - varname Yes - cos(a) Yes - log(sin(x**2)) Yes - a*b No - (x+y)**4 No - matrix-identifier No - ____________________________________________________________ - Many REDUCE operators expect kernels among their arguments. Error -messages result from attempts to use non-kernel expressions for these -arguments. - - -File: redhelp, Node: STRING, Prev: KERNEL, Up: Concepts section - - STRING type - - A STRING is any collection of characters enclosed in double quotation -marks (" ). It may be used as an argument for a variety of commands and -operators, such as IN , REDERR and WRITE . - -examples: - - ____________________________________________________________ - - write "this is a string"; - - this is a string - - - write a, " ", b, " ",c,"!"; - - A B C! - - ____________________________________________________________ - - -File: redhelp, Node: Concepts section, Next: Variables section, Up: Top - - Concepts section - -* Menu: - -* IDENTIFIER:: type -* KERNEL:: type -* STRING:: type - - -File: redhelp, Node: assumptions, Next: CARD_NO, Up: Variables section - - ASSUMPTIONS variable - - After solving a linear or polynomial equation system with -parameters, the variable ASSUMPTIONS contains a list of side relations -for the parameters. The solution is valid only as long as none of these -expression is zero. - -examples: - - ____________________________________________________________ - - solve({a*x-b*y+x,y-c},{x,y}); - - b*c - {{x=-----,y=c}} - a + 1 - - - assumptions; - - {a + 1} - - ____________________________________________________________ - - -File: redhelp, Node: CARD_NO, Next: E, Prev: assumptions, Up: Variables section - - CARD_NO variable - - CARD_NO sets the total number of cards allowed in a Fortran output -statement when FORT is on. Default is 20. - -examples: - - ____________________________________________________________ - - on fort; - - card_no := 4; - - CARD_NO=4. - - - z := (x + y)**15; - - ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y** - . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15 - Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ - . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+ - . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1 - - ____________________________________________________________ - Twenty total cards means 19 continuation cards. You may set it for -more if your Fortran system allows more. Expressions are broken apart -in a Fortran-compatible way if they extend for more than CARD_NO -continuation cards. - - -File: redhelp, Node: E, Next: EVAL_MODE, Prev: CARD_NO, Up: Variables section - - E constant - - The constant E is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch [*note ROUNDED::.] is -on. - - E may be used as an iterative variable in a [*note FOR::.] statement, -or as a local variable or a [*note PROCEDURE::.] . If E is defined as a -local variable inside the procedure, the normal definition as the base -of the natural logarithm would be suspended inside the procedure. - - -File: redhelp, Node: EVAL_MODE, Next: FORT_WIDTH, Prev: E, Up: Variables section - - EVAL_MODE variable - - The system variable EVAL_MODE contains the current mode, either -[*note ALGEBRAIC::.] or [*note SYMBOLIC::.] . - -examples: - - ____________________________________________________________ - - EVAL_MODE; - - ALGEBRAIC - - ____________________________________________________________ - Some commands do not behave the same way in algebraic and symbolic -modes. - - -File: redhelp, Node: FORT_WIDTH, Next: HIGH_POW, Prev: EVAL_MODE, Up: Variables section - - FORT_WIDTH variable - - The FORT_WIDTH variable sets the number of characters in a line of -Fortran-compatible output produced when the [*note FORT::.] switch is -on. Default is 70. - -examples: - - ____________________________________________________________ - - fort_width := 30; - - FORT_WIDTH := 30 - - - on fort; - - df(sin(x**3*y),x); - - ANS=3.*COS(X - . **3*Y)*X**2* - . Y - - ____________________________________________________________ - FORT_WIDTH includes the usually blank characters at the beginning of -the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. - - -File: redhelp, Node: HIGH_POW, Next: I, Prev: FORT_WIDTH, Up: Variables section - - HIGH_POW variable - - The variable HIGH_POW is set by [*note COEFF::.] to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -examples: - - ____________________________________________________________ - - coeff((x+1)^5*(x*(y+3)^2)^2,x); - - {0, - 0, - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81, - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - 4 3 2 - 10*(Y + 12*Y + 54*Y + 108*Y + 81), - 4 3 2 - 5*(Y + 12*Y + 54*Y + 108*Y + 81), - 4 3 2 - Y + 12*Y + 54*Y + 108*Y + 81} - - - high_pow; - - 7 - - ____________________________________________________________ - - -File: redhelp, Node: I, Next: INFINITY, Prev: HIGH_POW, Up: Variables section - - I constant - - REDUCE knows I is the square root of -1, and that i^2 = -1. - -examples: - - ____________________________________________________________ - - (a + b*i)*(c + d*i); - - A*C + A*D*I + B*C*I - B*D - - - i**2; - - -1 - - ____________________________________________________________ - I cannot be used as an identifier. It is all right to use I as an -index variable in a FOR loop, or as a local (SCALAR ) variable inside a -BEGIN...END block, but it loses its definition as the square root of -1 -inside the block in that case. - - Only the simplest properties of i are known by REDUCE unless the -switch [*note COMPLEX::.] is turned on, which implements full complex -arithmetic in factoring, simplification, and functional values. -COMPLEX is ordinarily off. - - -File: redhelp, Node: INFINITY, Next: LOW_POW, Prev: I, Up: Variables section - - INFINITY constant - - The name INFINITY is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator -reflects finite arithmetic, rather than true operations on infinity. - - -File: redhelp, Node: LOW_POW, Next: NIL, Prev: INFINITY, Up: Variables section - - LOW_POW variable - - The variable LOW_POW is set by [*note COEFF::.] to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. - -examples: - - ____________________________________________________________ - - coeff((x+2*y)**6,y); - - 6 - {X , - 5 - 12*X , - 4 - 60*X , - 3 - 160*X , - 2 - 240*X , - 192*X, - 64} - - - low_pow; - - 0 - - - coeff(x**2*(x*sin(y) + 1),x); - - - - {0,0,1,SIN(Y)} - - - low_pow; - - 2 - - ____________________________________________________________ - - -File: redhelp, Node: NIL, Next: PI, Prev: LOW_POW, Up: Variables section - - NIL constant - - NIL represents the truth value false in symbolic mode, and is a -synonym for 0 in algebraic mode. It cannot be used for any other -purpose, even inside procedures or [*note FOR::.] loops. - - -File: redhelp, Node: PI, Next: requirements, Prev: NIL, Up: Variables section - - PI constant - - The identifier PI is reserved for use as the circular constant. Its -value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. - - PI may be used as a looping variable in a [*note FOR::.] statement, -or as a local variable in a [*note PROCEDURE::.] . Its value in such -cases will be taken from the local environment. - - -File: redhelp, Node: requirements, Next: ROOT_MULTIPLICITIES, Prev: PI, Up: Variables section - - REQUIREMENTS variable - - After an attempt to solve an inconsistent equation system with -parameters, the variable REQUIREMENTS contains a list of expressions. -These expressions define a set of conditions implicitly equated with -zero. Any solution to this system defines a setting for the parameters -sufficient to make the original system consistent. - -examples: - - ____________________________________________________________ - - solve({x-a,x-y,y-1},{x,y}); - - {} - - - requirements; - - {a - 1} - - ____________________________________________________________ - - -File: redhelp, Node: ROOT_MULTIPLICITIES, Next: T, Prev: requirements, Up: Variables section - - ROOT_MULTIPLICITIES variable - - The ROOT_MULTIPLICITIES variable is set to the list of the -multiplicities of the roots of an equation by the [*note SOLVE::.] -operator. - - [*note SOLVE::.] returns its solutions in a list. The multiplicities -of each solution are put in the corresponding locations of the list -ROOT_MULTIPLICITIES . - - -File: redhelp, Node: T, Prev: ROOT_MULTIPLICITIES, Up: Variables section - - T constant - - The constant T stands for the truth value true. It cannot be used as -a scalar variable in a [*note block::.] , as a looping variable in a -[*note FOR::.] statement or as an [*note OPERATOR::.] name. - - -File: redhelp, Node: Variables section, Next: Syntax section, Prev: Concepts section, Up: Top - - Variables section - -* Menu: - -* assumptions:: variable -* CARD_NO:: variable -* E:: -* EVAL_MODE:: variable -* FORT_WIDTH:: variable -* HIGH_POW:: variable -* I:: -* INFINITY:: -* LOW_POW:: variable -* NIL:: -* PI:: -* requirements:: variable -* ROOT_MULTIPLICITIES:: variable -* T:: - - -File: redhelp, Node: semicolon, Next: dollar, Up: Syntax section - - ; SEMICOLON command - - The semicolon is a statement delimiter, indicating results are to be -printed when used in interactive mode. - -examples: - - ____________________________________________________________ - - (x+1)**2; - - 2 - X + 2*X + 1 - - - df(x**2 + 1,x); - - 2*X - - ____________________________________________________________ - Entering a RETURN without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can be added -at this point to execute the statement. In interactive mode, a -statement that is ended with a semicolon and RETURN has its results -printed on the screen. - - Inside a group statement << ...>> or a BEGIN ...END block, a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a block without a specific RETURN -statement, there is no difference between using the semicolon or dollar -sign. In a group statement, the last value produced is the value -returned by the group statement. Thus, if a semicolon or dollar sign is -placed between the last statement and the ending brackets, the group -statement returns the value 0 or nil, rather than the value of the last -statement. - - -File: redhelp, Node: dollar, Next: percent, Prev: semicolon, Up: Syntax section - - $ DOLLAR command - - The dollar sign is a statement delimiter, indicating results are not -to be printed when used in interactive mode. - -examples: - - ____________________________________________________________ - - - (x+1)**2$ - ____________________________________________________________ - The workspace is set to x^2 + 2x + 1 but nothing shows on the screen - ____________________________________________________________ - - - - ws; - - 2 - X + 2*X + 1 - - ____________________________________________________________ - - Entering a RETURN without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can be added -at this point to execute the statement. In interactive mode, a -statement that ends with a dollar sign $ and a RETURN is executed, but -the results not printed. - - Inside a [*note group::.] statement << ...>> or a BEGIN ...END -[*note block::.] , a semicolon or dollar sign separates individual -REDUCE statements. Since results are not printed from a [*note -block::.] without a specific [*note RETURN::.] statement, there is no -difference between using the semicolon or dollar sign. - - In a group statement, the last value produced is the value returned -by the group statement. Thus, if a semicolon or dollar sign is placed -between the last statement and the ending brackets, the group statement -returns the value 0 or nil, rather than the value of the last statement. - - -File: redhelp, Node: percent, Next: dot, Prev: dollar, Up: Syntax section - - % PERCENT command - - The percent sign is used to precede comments; everything from a -percent to the end of the line is ignored. - -examples: - - ____________________________________________________________ - - - df(x**3 + y,x);% This is a comment (Key){Return} - - - 2 - 3*X - - - int(3*x**2,x) %This is a comment; (Key){Return} - ____________________________________________________________ - A prompt is given, waiting for the semicolon that was not detected -in the comment - ____________________________________________________________ - ____________________________________________________________ - - Statement delimiters ; and $ are not detected between a percent sign -and the end of the line. - - -File: redhelp, Node: dot, Next: assign, Prev: percent, Up: Syntax section - - . DOT operator - - The . (dot) infix binary operator adds a new item to the beginning -of an existing [*note LIST::.] . In high energy physics expressions, it -can also be used to represent the scalar product of two Lorentz -four-vectors. - -syntax: - - . - - can be any REDUCE scalar expression, including a list; -must be a [*note LIST::.] to avoid producing an error message. The dot -operator is right associative. - -examples: - - ____________________________________________________________ - - - liss := a . {}; - - LISS := {A} - - - liss := b . liss; - - LISS := {B,A} - - - newliss := liss . liss; - - NEWLISS := {{B,A},B,A} - - - firstlis := a . b . {c}; - - FIRSTLIS := {A,B,C} - - - secondlis := x . y . {z}; - - SECONDLIS := {X,Y,Z} - - - for i := 1:3 sum part(firstlis,i)*part(secondlis,i); - - - - A*X + B*Y + C*Z - - ____________________________________________________________ - - -File: redhelp, Node: assign, Next: equalsign, Prev: dot, Up: Syntax section - - := ASSIGN operator - - The := is the assignment operator, assigning the value on the -right-hand side to the identifier or other valid expression on the -left-hand side. - -syntax: - - := - - is ordinarily a single identifier, though -simple expressions may be used (see Comments below). is any -valid REDUCE expression. If is a [*note MATRIX::.] -identifier, then can be a matrix identifier -(redimensioned if necessary) which has each element set to the -corresponding elements of the identifier on the right-hand side. - -examples: - - ____________________________________________________________ - - a := x**2 + 1; - - 2 - A := X + 1 - - - a; - - 2 - X + 1 - - - first := second := third; - - FIRST := SECOND := THIRD - - - first; - - THIRD - - - second; - - THIRD - - - b := for i := 1:5 product i; - - B := 120 - - - b; - - 120 - - - w + (c := x + 3) + z; - - W + X + Z + 3 - - - c; - - X + 3 - - - y + b := c; - - Y + B := C - - - y; - - - (B - C) - - ____________________________________________________________ - The assignment operator is right associative, as shown in the second -and third examples. A string of such assignments has all but the last -item set to the value of the last item. Embedding an assignment -statement in another expression has the side effect of making the -assignment, as well as causing the given replacement in the expression. - - Assignments of values to expressions rather than simple identifiers -(such as in the last example above) can also be done, subject to the -following remarks: - - (i) If the left-hand side is an identifier, an operator, or a power, -the substitution rule is added to the rule table. - - (ii) If the operators - + / appear on the left-hand side, all but -the first term of the expression is moved to the right-hand side. - - (iii) If the operator * appears on the left-hand side, any constant -terms are moved to the right-hand side, but the symbolic factors remain. - - Assignment is valid for [*note ARRAY::.] elements, but not for -entire arrays. The assignment operator can also be used to attach -functionality to operators. - - A recursive construction such as A := A + B is allowed, but when A -is referenced again, the process of resubstitution continues until the -expression stack overflows (you get an error message). Recursive -assignments can be done safely inside controlled loop expressions, such -as [*note FOR::.] ... or [*note REPEAT::.] ...UNTIL . - - -File: redhelp, Node: equalsign, Next: replace, Prev: assign, Up: Syntax section - - = EQUALSIGN operator - - The = operator is a prefix or infix equality comparison operator. - -syntax: - - = (, ) or = - - can be any REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - a := 4; - - A := 4 - - - if =(a,10) then write "yes" else write "no"; - - - - no - - - b := c; - - B := C - - - if b = c then write "yes" else write "no"; - - - - yes - - - on rounded; - - if 4.0 = 4 then write "yes" else write "no"; - - - - yes - - ____________________________________________________________ - This logical equality operator can only be used inside a conditional -statement, such as [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] -...UNTIL . In other places the equal sign establishes an algebraic -object of type [*note EQUATION::.] . - - -File: redhelp, Node: replace, Next: plussign, Prev: equalsign, Up: Syntax section - - => REPLACE operator - - The => operator is a binary operator used in [*note RULE::.] lists to -denote replacements. - -examples: - - ____________________________________________________________ - - operator f; - - let f(x) => x^2; - - f(x); - - 2 - x - - ____________________________________________________________ - - -File: redhelp, Node: plussign, Next: minussign, Prev: replace, Up: Syntax section - - + PLUSSIGN operator - - The + operator is a prefix or infix n-ary addition operator. - -syntax: - - + + - - or + ( ,+) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - x**4 + 4*x**2 + 17*x + 1; - - 4 2 - X + 4*X + 17*X + 1 - - - 14 + 15 + x; - - X + 29 - - - +(1,2,3,4,5); - - 15 - - ____________________________________________________________ - + is also valid as an addition operator for [*note MATRIX::.] -variables that are of the same dimensions and for [*note EQUATION::.] s. - - -File: redhelp, Node: minussign, Next: asterisk, Prev: plussign, Up: Syntax section - - - MINUSSIGN operator - - The - operator is a prefix or infix binary subtraction operator, as -well as the unary minus operator. - -syntax: - - - or - (,) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - 15 - 4; - - 11 - - - x*(-5); - - - 5*X - - - a - b - 15; - - A - B - 15 - - - -(a,4); - - A - 4 - - ____________________________________________________________ - The subtraction operator is left associative, so that a - b - c is -equivalent to (a - b) - c, as shown in the third example. The -subtraction operator is also valid with [*note MATRIX::.] expressions -of the correct dimensions and with [*note EQUATION::.] s. - - -File: redhelp, Node: asterisk, Next: slash, Prev: minussign, Up: Syntax section - - * ASTERISK operator - - The * operator is a prefix or infix n-ary multiplication operator. - -syntax: - - * + - - or * ( ,+) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - 15*3; - - 45 - - - 24*x*yvalue*2; - - 48*X*YVALUE - - - *(6,x); - - 6*X - - - on rounded; - - 3*1.5*x*x*x; - - 3 - 4.5*X - - - off rounded; - - 2x**2; - - 2 - 2*X - - ____________________________________________________________ - REDUCE assumes you are using an implicit multiplication operator -when an identifier is preceded by a number, as shown in the last line -above. Since no valid identifiers can begin with numbers, there is no -ambiguity in making this assumption. - - The multiplication operator is also valid with [*note MATRIX::.] -expressions of the proper dimensions: matrices A and B can be -multiplied if A is n x m and B is m x p. Matrices and [*note -EQUATION::.] s can also be multiplied by scalars: the result is as if -each element was multiplied by the scalar. - - -File: redhelp, Node: slash, Next: power, Prev: asterisk, Up: Syntax section - - / SLASH operator - - The / operator is a prefix or infix binary division operator or -prefix unary [*note RECIP::.] rocal operator. - -syntax: - - / or / - - or / (,) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - 20/5; - - 4 - - - 100/6; - - 50 - -- - 3 - - - 16/2/x; - - 8 - - - X - - - /b; - - 1 - - - B - - - /(y,5); - - Y - - - 5 - - - on rounded; - - 35/4; - - 8.75 - - - /20; - - 0.05 - - ____________________________________________________________ - The division operator is left associative, so that A/B/C is -equivalent to (A/B)/C . The division operator is also valid with square -[*note MATRIX::.] expressions of the same dimensions: With A and B -both n x n matrices and B invertible, A/B is given by A*B^-1. Division -of a matrix by a scalar is defined, with the results being the division -of each element of the matrix by the scalar. Division of a scalar by a -matrix is defined if the matrix is invertible, and has the effect of -multiplying the scalar by the inverse of the matrix. When / is used as -a reciprocal operator for a matrix, the inverse of the matrix is -returned if it exists. - - -File: redhelp, Node: power, Next: caret, Prev: slash, Up: Syntax section - - ** POWER operator - - The ** operator is a prefix or infix binary exponentiation operator. - -syntax: - - ** or ** (,) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - x**15; - - 15 - X - - - x**y**z; - - Y*Z - X - - - x**(y**z); - - Z - Y - X - - - **(y,4); - - 4 - Y - - - on rounded; - - 2**pi; - - 8.82497782708 - - ____________________________________________________________ - The exponentiation operator is left associative, so that A**B**C is -equivalent to (A**B)**C , as shown in the second example. Note that -this is not A**(B**C) , which would be right associative. - - When [*note NAT::.] is on (the default), REDUCE output produces -raised exponents, as shown. The symbol ^ , which is the upper-case 6 on -most keyboards, may be used in the place of ** . - - A square [*note MATRIX::.] may also be raised to positive and -negative powers with the exponentiation operator (negative powers -require the matrix to be invertible). Scalar expressions and [*note -EQUATION::.] s may be raised to fractional and floating-point powers. - - -File: redhelp, Node: caret, Next: geqsign, Prev: power, Up: Syntax section - - ^ CARET operator - - The ^ operator is a prefix or infix binary exponentiation operator. -It is equivalent to [*note power::.] or **. - -syntax: - - ^ or ^ (,) - - may be any valid REDUCE expression. - -examples: - - ____________________________________________________________ - - x^15; - - 15 - X - - - x^y^z; - - Y*Z - X - - - x^(y^z); - - Z - Y - X - - - ^(y,4); - - 4 - Y - - - on rounded; - - 2^pi; - - 8.82497782708 - - ____________________________________________________________ - The exponentiation operator is left associative, so that A^B^C is -equivalent to (A^B)^C , as shown in the second example. Note that this -is A^(B^C) , which would be right associative. - - When [*note NAT::.] is on (the default), REDUCE output produces -raised exponents, as shown. - - A square [*note MATRIX::.] may also be raised to positive and -negative powers with the exponentiation operator (negative powers -require the matrix to be invertible). Scalar expressions and [*note -EQUATION::.] s may be raised to fractional and floating-point powers. - - -File: redhelp, Node: geqsign, Next: greater, Prev: caret, Up: Syntax section - - >= GEQSIGN operator - - >= is an infix binary comparison operator, which returns true if -its first argument is greater than or equal to its second argument. - -syntax: - - >= - - must evaluate to an integer or floating-point number. - -examples: - - ____________________________________________________________ - - if (3 >= 2) then yes; - - yes - - - a := 15; - - A := 15 - - - if a >= 20 then big else small; - - - small - - ____________________________________________________________ - The binary comparison operators can only be used for comparisons -between numbers or variables that evaluate to numbers. The truth values -returned by such a comparison can only be used inside programming -constructs, such as [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] -...UNTIL or [*note WHILE::.] ...DO . - - -File: redhelp, Node: greater, Next: leqsign, Prev: geqsign, Up: Syntax section - - > GREATER operator - - The > is an infix binary comparison operator that returns true if -its first argument is strictly greater than its second. - -syntax: - - > - - must evaluate to a number, e.g., integer, rational or -floating point number. - -examples: - - ____________________________________________________________ - - on rounded; - - if 3.0 > 3 then write "different" else write "same"; - - - same - - - off rounded; - - a := 20; - - A := 20 - - - if a > 20 then write "bigger" else write "not bigger"; - - - not bigger - - ____________________________________________________________ - The binary comparison operators can only be used for comparisons -between numbers or variables that evaluate to numbers. The truth values -returned by such a comparison can only be used inside programming -constructs, such as [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] -...UNTIL or [*note WHILE::.] ...DO . - - -File: redhelp, Node: leqsign, Next: less, Prev: greater, Up: Syntax section - - <= LEQSIGN operator - - <= is an infix binary comparison operator that returns true if its -first argument is less than or equal to its second argument. - -syntax: - - <= - - must evaluate to a number, e.g., integer, rational or -floating point number. - -examples: - - ____________________________________________________________ - - a := 10; - - A := 10 - - - if a <= 10 then true; - - true - - ____________________________________________________________ - The binary comparison operators can only be used for comparisons -between numbers or variables that evaluate to numbers. The truth values -returned by such a comparison can only be used inside programming -constructs, such as [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] -...UNTIL or [*note WHILE::.] ...DO . - - -File: redhelp, Node: less, Next: tilde, Prev: leqsign, Up: Syntax section - - < LESS operator - - < is an infix binary logical comparison operator that returns true -if its first argument is strictly less than its second argument. - -syntax: - - < - - must evaluate to a number, e.g., integer, rational or -floating point number. - -examples: - - ____________________________________________________________ - - f := -3; - - F := -3 - - - if f < -3 then write "yes" else write "no"; - - - no - - ____________________________________________________________ - The binary comparison operators can only be used for comparisons -between numbers or variables that evaluate to numbers. The truth values -returned by such a comparison can only be used inside programming -constructs, such as [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] -...UNTIL or [*note WHILE::.] ...DO . - - -File: redhelp, Node: tilde, Next: group, Prev: less, Up: Syntax section - - ~ TILDE operator - - The ^ is used as a unary prefix operator in the left-hand sides of -[*note RULE::.] s to mark [*note Free Variable::.] s. A double tilde -marks an optional [*note Free Variable::.] . - - -File: redhelp, Node: group, Next: AND, Prev: tilde, Up: Syntax section - - << GROUP command - - The << ...>> command is a group statement, used to group statements -together where REDUCE expects a single statement. - -syntax: - - << ; OR * >> - - may be any valid REDUCE statement or expression. - -examples: - - ____________________________________________________________ - - a := 2; - - A := 2 - - - if a < 5 then <>; - - - 12 - - - <>; - - - 2 - C + 90*C + 202 - ---------------- - 225 - - ____________________________________________________________ - The value returned from a group statement is the value of the last -individual statement executed inside it. Note that when a semicolon is -placed between the last statement and the closing brackets, 0 or nil -is returned. Group statements are often used in the consequence -portions of [*note IF::.] ...THEN , [*note REPEAT::.] ...UNTIL , and -[*note WHILE::.] ...DO clauses. They may also be used in interactive -operation to execute several statements at one time. Statements inside -the group statement are separated by semicolons or dollar signs. - - -File: redhelp, Node: AND, Next: BEGIN, Prev: group, Up: Syntax section - - AND operator - - The AND binary logical operator returns true if both of its -arguments are true. - -syntax: - - AND - - must evaluate to true or nil. - -examples: - - ____________________________________________________________ - - a := 12; - - A := 12 - - - if numberp a and a < 15 then write a**2 else write "no"; - - - - 144 - - - clear a; - - if numberp a and a < 15 then write a**2 else write "no"; - - - - no - - ____________________________________________________________ - Logical operators can only be used inside conditional statements, -such as [*note WHILE::.] ...DO or [*note IF::.] ...THEN ...ELSE . AND -examines each of its arguments in order, and quits, returning nil, on -finding an argument that is not true. An error results if it is used in -other contexts. - - AND is left associative: X AND Y AND Z is equivalent to (X AND Y) -AND Z . - - -File: redhelp, Node: BEGIN, Next: block, Prev: AND, Up: Syntax section - - BEGIN command - - BEGIN is used to start a [*note block::.] statement, which is -closed with END . - -syntax: - - BEGIN ; * END - - is any valid REDUCE statement. - -examples: - - ____________________________________________________________ - - begin for i := 1:3 do write i end; - - - 1 - 2 - 3 - - - begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end; - - - - 1 - - - b; - - 4 3 2 - X - 10*X + 35*X - 50*X + 24 - - ____________________________________________________________ - A BEGIN ...END block can do actions (such as WRITE ), but does not -return a value unless instructed to by a [*note RETURN::.] statement, -which must be the last statement executed in the block. It is -unnecessary to insert a semicolon before the END . - - Local variables, if any, are declared in the first statement -immediately after BEGIN , and may be defined as SCALAR, INTEGER, or -REAL . [*note ARRAY::.] variables declared within a BEGIN ...END block -are global in every case, and [*note LET::.] statements have global -effects. A [*note LET::.] statement involving a formal parameter affects -the calling parameter that corresponds to it. [*note LET::.] statements -involving local variables make global assignments, overwriting outside -variables by the same name or creating them if they do not exist. You -can use this feature to affect global variables from procedures, but be -careful that you do not do it inadvertently. - - -File: redhelp, Node: block, Next: COMMENT, Prev: BEGIN, Up: Syntax section - - BLOCK command - - A BLOCK is a sequence of statements enclosed by commands [*note -BEGIN::.] and [*note END::.] . - -syntax: - - BEGIN ; * END - - For more details see [*note BEGIN::.] . - - -File: redhelp, Node: COMMENT, Next: CONS, Prev: block, Up: Syntax section - - COMMENT command - - Beginning with the word COMMENT , all text until the next statement -terminator (; or $ ) is ignored. - -examples: - - ____________________________________________________________ - - - x := a**2 comment--a is the velocity of the particle;; - - - - 2 - X := A - - ____________________________________________________________ - Note that the first semicolon ends the comment and the second one -terminates the original REDUCE statement. - - Multiple-line comments are often needed in interactive files. The -COMMENT command allows a normal-looking text to accompany the REDUCE -statements in the file. - - -File: redhelp, Node: CONS, Next: END, Prev: COMMENT, Up: Syntax section - - CONS operator - - The CONS operator adds a new element to the beginning of a [*note -LIST::.] . Its operation is identical to the symbol [*note dot::.] -(dot). It can be used infix or prefix. - -syntax: - - CONS (,) or CONS - - can be any REDUCE scalar expression, including a list; -must be a list. - -examples: - - ____________________________________________________________ - - - liss := cons(a,{b}); - - {A,B} - - - - liss := c cons liss; - - {C,A,B} - - - - newliss := for each y in liss collect cons(y,list x); - - - - NEWLISS := {{C,X},{A,X},{B,X}} - - - - for each y in newliss sum (first y)*(second y); - - - - X*(A + B + C) - - ____________________________________________________________ - If you want to use CONS to put together two elements into a new list, -you must make the second one into a list with curly brackets or the LIST -command. You can also start with an empty list created by [] . - - The CONS operator is right associative: A CONS B CONS C is valid if -C is a list; B need not be a list. The list produced is [A,B,C] . - - -File: redhelp, Node: END, Next: EQUATION, Prev: CONS, Up: Syntax section - - END command - - The command END has two main uses: - - (i) as the ending of a [*note BEGIN::.] ...END [*note block::.] ; -and - - (ii) to end input from a file. - - In a BEGIN ...END [*note block::.] , there need not be a delimiter -(; or $ ) before the END , though there must be one after it, or a -right bracket matching an earlier left bracket. - - Files to be read into REDUCE should end with END; , which must be -preceded by a semicolon (usually the last character of the previous -line). The additional semicolon avoids problems with mistakes in the -files. If you have suspended file operation by answering N to a PAUSE -command, you are still, technically speaking, "in" the file. Use END -to exit the file. - - An END at the top level of a program is ignored. - - -File: redhelp, Node: EQUATION, Next: FIRST, Prev: END, Up: Syntax section - - EQUATION type - - An EQUATION is an expression where two algebraic expressions are -connected by the (infix) operator [*note EQUAL::.] or by = . For -access to the components of an EQUATION the operators [*note LHS::.] , -[*note RHS::.] or [*note PART::.] can be used. The evaluation of the -left-hand side of an EQUATION is controlled by the switch [*note -EVALLHSEQP::.] , while the right-hand side is evaluated -unconditionally. When an EQUATION is part of a logical expression, e.g. -in a [*note IF::.] or [*note WHILE::.] statement, the equation is -evaluated by subtracting both sides can comparing the result with zero. - - Equations occur in many contexts, e.g. as arguments of the [*note -SUB::.] operator and in the arguments and the results of the operator -[*note SOLVE::.] . An equation can be member of a [*note LIST::.] and -you may assign an equation to a variable. Elementary arithmetic is -supported for equations: if [*note EVALLHSEQP::.] is on, you may add -and subtract equations, and you can combine an equation with a scalar -expression by addition, subtraction, multiplication, division and raise -an equation to a power. - -examples: - - ____________________________________________________________ - - on evallhseqp; - - u:=x+y=1$ - - v:=2x-y=0$ - - 2*u-v; - - - 3*y=-2 - - - ws/3; - - 2 - y=-- - 3 - - ____________________________________________________________ - - Important: the equation must occur in the leftmost term of such an -expression. For other operations, e.g. taking function values of both -sides, use the [*note MAP::.] operator. - - -File: redhelp, Node: FIRST, Next: FOR, Prev: EQUATION, Up: Syntax section - - FIRST operator - - The FIRST operator returns the first element of a [*note LIST::.] . - -syntax: - - FIRST () or FIRST - - must be a non-empty list to avoid an error message. - -examples: - - ____________________________________________________________ - - alist := {a,b,c,d}; - - ALIST := {A,B,C,D} - - - first alist; - - A - - - blist := {x,y,{ww,aa,qq},z}; - - BLIST := {X,Y,{WW,AA,QQ},Z} - - - first third blist; - - WW - - ____________________________________________________________ - - -File: redhelp, Node: FOR, Next: FOREACH, Prev: FIRST, Up: Syntax section - - FOR command - - The FOR command is used for iterative loops. There are many possible -forms it can take. - - ____________________________________________________________ - - / - / |STEP UNTIL| - |:=| || - FOR| | : | | - | / | - |EACH IN | - / - - where ::= DO|PRODUCT|SUM|COLLECT|JOIN. - ____________________________________________________________ - can be any valid REDUCE identifier except T or NIL , , - and can be any expression that evaluates to a positive -or negative integer. must be a valid [*note LIST::.] structure. -The action taken must be one of the actions shown above, each of which -is followed by a single REDUCE expression, statement or a [*note -group::.] (<< ...>> ) or [*note block::.] ([*note BEGIN::.] ...[*note -END::.] ) statement. - -examples: - - ____________________________________________________________ - - for i := 1:10 sum i; - - - - 55 - - - for a := -2 step 3 until 6 product a; - - - - -8 - - - a := 3; - - A := 3 - - - for iter := 4:a do write iter; - - m := 0; - - M := 0 - - - for s := 10 step -1 until 3 do <>; - - m; - - 520 - - - for each x in {q,r,s} sum x**2; - - 2 2 2 - Q + R + S - - - for i := 1:4 collect 1/i; - - - - 1 1 1 - {1,-,-,-} - 2 3 4 - - - for i := 1:3 join list solve(x**2 + i*x + 1,x); - - - - SQRT(3)*I + 1 - {{X= --------------, - 2 - SQRT(3)*I - 1 - X= --------------} - 2 - {X=-1}, - SQRT(5) + 3 SQRT(5) - 3 - {X= - -----------,X=-----------}} - 2 2 - - ____________________________________________________________ - The behavior of each of the five action words follows: - - ____________________________________________________________ - - Action Word Behavior - Keyword Argument Type Action - do statement, command, group Evaluates its argument once - or block for each iteration of the loop, - not saving results - collect expression, statement, Evaluates its argument once for - command, group, block, list each iteration of the loop, - storing the results in a list - which is returned by the for - statement when done - join list or an operator which Evaluates its argument once for - produces a list each iteration of the loop, - appending the elements in each - individual result list onto the - overall result list - product expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - multiplying the results together - and returning the overall product - sum expression, statement, Evaluates its argument once for - command, group or block each iteration of the loop, - adding the results together and - returning the overall sum - ____________________________________________________________ - For number-driven FOR statements, if the ending limit is smaller -than the beginning limit (larger in the case of negative steps) the -action statement is not executed at all. The iterative variable is -local to the FOR statement, and does not affect the value of an -identifier with the same name. For list-driven FOR statements, if the -list is empty, the action statement is not executed, but no error -occurs. - - You can use nested FOR statements, with the inner FOR statement -after the action keyword. You must make sure that your inner statement -returns an expression that the outer statement can handle. - - -File: redhelp, Node: FOREACH, Next: GEQ, Prev: FOR, Up: Syntax section - - FOREACH command - - FOREACH is a synonym for the FOR EACH variant of the [*note FOR::.] -construct. It is designed to iterate down a list, and an error will -occur if a list is not used. The use of FOR EACH is preferred to -FOREACH . - -syntax: - - FOREACH in - - where ::= DO PRODUCT SUM COLLECT JOIN - -examples: - - ____________________________________________________________ - - foreach x in {q,r,s} sum x**2; - - 2 2 2 - Q + R + S - - ____________________________________________________________ - - -File: redhelp, Node: GEQ, Next: GOTO, Prev: FOREACH, Up: Syntax section - - GEQ operator - - The GEQ operator is a binary infix or prefix logical operator. It -returns true if its first argument is greater than or equal to its -second argument. As an infix operator it is identical with >= . - -syntax: - - GEQ (,) or GEQ - - can be any valid REDUCE expression that evaluates to a -number. - -examples: - - ____________________________________________________________ - - a := 20; - - A := 20 - - - if geq(a,25) then write "big" else write "small"; - - - - small - - - if a geq 20 then write "big" else write "small"; - - - - big - - - if (a geq 18) then write "big" else write "small"; - - - - big - - ____________________________________________________________ - Logical operators can only be used in conditional statements such as - - [*note IF::.] ...THEN ...ELSE or [*note REPEAT::.] ...UNTIL . - - -File: redhelp, Node: GOTO, Next: GREATERP, Prev: GEQ, Up: Syntax section - - GOTO command - - Inside a BEGIN ...END [*note block::.] , GOTO , or preferably, GO -TO , transfers flow of control to a labeled statement. - -syntax: - - GO TO or GOTO - - is of the form >; - - - - 46 - - - max(-5,-10,-a); - - -5 - - ____________________________________________________________ - - -File: redhelp, Node: MIN, Next: MINUS, Prev: MAX, Up: Arithmetic Operations section - - MIN operator - - The operator MIN is an n-ary prefix operator, which returns the -smallest value in its arguments. - -syntax: - - MIN (,*) - - must evaluate to a number. MIN of an empty list returns -0. - -examples: - - ____________________________________________________________ - - min(-3,0,17,2); - - -3 - - - <>; - - - - 16 - - - min(5,10,a); - - 5 - - ____________________________________________________________ - - -File: redhelp, Node: MINUS, Next: NEXTPRIME, Prev: MIN, Up: Arithmetic Operations section - - MINUS operator - - The MINUS operator is a unary minus, returning the negative of its -argument. It is equivalent to the unary - . - -syntax: - - MINUS () - - may be any scalar REDUCE expression. - -examples: - - ____________________________________________________________ - - minus(a); - - - A - - - minus(-1); - - 1 - - - minus((x+1)**4); - - 4 3 2 - - (X + 4*X + 6*X + 4*X + 1) - - ____________________________________________________________ - - -File: redhelp, Node: NEXTPRIME, Next: NOCONVERT, Prev: MINUS, Up: Arithmetic Operations section - - NEXTPRIME operator - -syntax: - - NEXTPRIME () - - If the argument of NEXTPRIME is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. - -examples: - - ____________________________________________________________ - - nextprime 5001; - - 5003 - - - nextprime(10^30); - - 1000000000000000000000000000057 - - - nextprime a; - - ***** A invalid as integer - - ____________________________________________________________ - - -File: redhelp, Node: NOCONVERT, Next: NORM, Prev: NEXTPRIME, Up: Arithmetic Operations section - - NOCONVERT switch - - Under normal circumstances when ROUNDED is on, REDUCE converts the -number 1.0 to the integer 1. If this is not desired, the switch -NOCONVERT can be turned on. - -examples: - - ____________________________________________________________ - - on rounded; - - 1.0000000000001; - - 1 - - - on noconvert; - - 1.0000000000001; - - 1.0 - - ____________________________________________________________ - - -File: redhelp, Node: NORM, Next: PERM, Prev: NOCONVERT, Up: Arithmetic Operations section - - NORM operator - -syntax: - - NORM () - - If ROUNDED is on, and the argument is a real number, returns -its absolute value. If COMPLEX is also on, returns the square -root of the sum of squares of the real and imaginary parts of the -argument. In all other cases, a result is returned in terms of the -original operator. - -examples: - - ____________________________________________________________ - - norm (-2); - - NORM(-2) - - - on rounded; - - ws; - - 2.0 - - - norm(3+4i); - - NORM(4*I+3) - - - on complex; - - ws; - - 5.0 - - ____________________________________________________________ - - -File: redhelp, Node: PERM, Next: PLUS, Prev: NORM, Up: Arithmetic Operations section - - PERM operator - -syntax: - - perm(,) - - If and evaluate to positive integers, -PERM returns the number of permutations possible in selecting - objects from objects. In other cases, an -expression in the original operator is returned. - -examples: - - ____________________________________________________________ - - perm(1,1); - - 1 - - - perm(3,5); - - 60 - - - perm(-3,5); - - PERM(-3,5) - - - perm(a,b); - - PERM(A,B) - - ____________________________________________________________ - - -File: redhelp, Node: PLUS, Next: QUOTIENT, Prev: PERM, Up: Arithmetic Operations section - - PLUS operator - - The PLUS operator is both an infix and prefix n-ary addition -operator. It exists because of the way in which REDUCE handles such -operators internally, and is not recommended for use in algebraic mode -programming. [*note plussign::.] , which has the identical effect, -should be used instead. - -syntax: - - PLUS (,, *) or - - PLUS PLUS * - - can be any valid REDUCE expression, including matrix -expressions of the same dimensions. - -examples: - - ____________________________________________________________ - - a plus b plus c plus d; - - A + B + C + D - - - 4.5 plus 10; - - 29 - -- - 2 - - - - plus(x**2,y**2); - - 2 2 - X + Y - - ____________________________________________________________ - - -File: redhelp, Node: QUOTIENT, Next: RAD2DEG, Prev: PLUS, Up: Arithmetic Operations section - - QUOTIENT operator - - The QUOTIENT operator is both an infix and prefix binary operator -that returns the quotient of its first argument divided by its second. -It is also a unary [*note RECIP::.] rocal operator. It is identical to -/ and [*note slash::.] . - -syntax: - - QUOTIENT (,) or QUOTIENT - or QUOTIENT () or QUOTIENT - - can be any valid REDUCE scalar expression. Matrix -expressions can also be used if the second expression is invertible and -the matrices are of the correct dimensions. - -examples: - - ____________________________________________________________ - - quotient(a,x+1); - - A - ----- - X + 1 - - - 7 quotient 17; - - 7 - -- - 17 - - - on rounded; - - 4.5 quotient 2; - - 2.25 - - - quotient(x**2 + 3*x + 2,x+1); - - X + 2 - - - matrix m,inverse; - - m := mat((a,b),(c,d)); - - M(1,1) := A; - M(1,2) := B; - M(2,1) := C - M(2,2) := D - - - - inverse := quotient m; - - D - INVERSE(1,1) := ---------- - A*D - B*C - B - INVERSE(1,2) := - ---------- - A*D - B*C - C - INVERSE(2,1) := - ---------- - A*D - B*C - A - INVERSE(2,2) := ---------- - A*D - B*C - - ____________________________________________________________ - - The QUOTIENT operator is left associative: A QUOTIENT B QUOTIENT C -is equivalent to (A QUOTIENT B) QUOTIENT C . - - If a matrix argument to the unary QUOTIENT is not invertible, or if -the second matrix argument to the binary quotient is not invertible, an -error message is given. - - -File: redhelp, Node: RAD2DEG, Next: RAD2DMS, Prev: QUOTIENT, Up: Arithmetic Operations section - - RAD2DEG operator - -syntax: - - RAD2DEG () - - In [*note ROUNDED::.] mode, if is a real number, the -operator RAD2DEG will interpret it as radians, and convert it to the -equivalent degrees. In all other cases, an expression in terms of the -original operator is returned. - -examples: - - ____________________________________________________________ - - rad2deg 1; - - RAD2DEG(1) - - - on rounded; - - ws; - - 57.2957795131 - - - rad2deg a; - - RAD2DEG(A) - - ____________________________________________________________ - - -File: redhelp, Node: RAD2DMS, Next: RECIP, Prev: RAD2DEG, Up: Arithmetic Operations section - - RAD2DMS operator - -syntax: - - RAD2DMS () - - In [*note ROUNDED::.] mode, if is a real number, the -operator RAD2DMS will interpret it as radians, and convert it to a list -containing the equivalent degrees, minutes and seconds. In all other -cases, an expression in terms of the original operator is returned. - -examples: - - ____________________________________________________________ - - rad2dms 1; - - RAD2DMS(1) - - - on rounded; - - ws; - - {57,17,44.8062470964} - - - rad2dms a; - - RAD2DMS(A) - - ____________________________________________________________ - - -File: redhelp, Node: RECIP, Next: REMAINDER, Prev: RAD2DMS, Up: Arithmetic Operations section - - RECIP operator - - RECIP is the alphabetical name for the division operator / or -[*note slash::.] used as a unary operator. The use of / is preferred. - -examples: - - ____________________________________________________________ - - recip a; - - 1 - - - A - - - recip 2; - - 1 - -- - 2 - - ____________________________________________________________ - - -File: redhelp, Node: REMAINDER, Next: ROUND, Prev: RECIP, Up: Arithmetic Operations section - - REMAINDER operator - - The REMAINDER operator returns the remainder after its first -argument is divided by its second argument. - -syntax: - - REMAINDER (,) - - can be any valid REDUCE polynomial, and is not limited -to numeric values. - -examples: - - ____________________________________________________________ - - remainder(13,6); - - 1 - - - remainder(x**2 + 3*x + 2,x+1); - - 0 - - - remainder(x**3 + 12*x + 4,x**2 + 1); - - - 11*X + 4 - - - remainder(sin(2*x),x*y); - - SIN(2*X) - - ____________________________________________________________ - In the default case, remainders are calculated over the integers. If -you need the remainder with respect to another domain, it must be -declared explicitly. - - If the first argument to REMAINDER contains a denominator not equal -to 1, an error occurs. - - -File: redhelp, Node: ROUND, Next: SETMOD, Prev: REMAINDER, Up: Arithmetic Operations section - - ROUND operator - -syntax: - - ROUND () - - If its argument has a numerical value, ROUND rounds it to the -nearest integer. For non-numeric arguments, the value is an expression -in the original operator. - -examples: - - ____________________________________________________________ - - round 3.4; - - 3 - - - round 3.5; - - 4 - - - round a; - - ROUND(A) - - ____________________________________________________________ - - -File: redhelp, Node: SETMOD, Next: SIGN, Prev: ROUND, Up: Arithmetic Operations section - - SETMOD command - - The SETMOD command sets the modulus value for subsequent [*note -MODULAR::.] arithmetic. - -syntax: - - SETMOD - - must be positive, and greater than 1. It need not be a -prime number. - -examples: - - ____________________________________________________________ - - setmod 6; - - 1 - - - on modular; - - 16; - - 4 - - - x^2 + 5x + 7; - - 2 - X + 5*X + 1 - - - x/3; - - X - - - 3 - - - setmod 2; - - 6 - - - (x+1)^4; - - 4 - X + 1 - - - x/3; - - X - - ____________________________________________________________ - SETMOD returns the previous modulus, or 1 if none has been set -before. SETMOD only has effect when [*note MODULAR::.] is on. - - Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error message, -since the operation is equivalent to dividing by 0. However, dividing -by a factor of a non-prime modulus does not produce an error message. - - -File: redhelp, Node: SIGN, Next: SQRT, Prev: SETMOD, Up: Arithmetic Operations section - - SIGN operator - -syntax: - - SIGN - - SIGN tries to evaluate the sign of its argument. If this is possible -SIGN returns one of 1, 0 or -1. Otherwise, the result is the original -form or a simplified variant. - -examples: - - ____________________________________________________________ - - sign(-5) - - -1 - - - sign(-a^2*b) - - -SIGN(B) - - ____________________________________________________________ - Even powers of formal expressions are assumed to be positive only as -long as the switch [*note COMPLEX::.] is off. - - -File: redhelp, Node: SQRT, Next: TIMES, Prev: SIGN, Up: Arithmetic Operations section - - SQRT operator - - The SQRT operator returns the square root of its argument. - -syntax: - - SQRT () - - can be any REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - sqrt(16*a^3); - - 4*SQRT(A)*A - - - sqrt(17); - - SQRT(17) - - - on rounded; - - sqrt(17); - - 4.12310562562 - - - off rounded; - - sqrt(a*b*c^5*d^3*27); - - 2 - 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D - - ____________________________________________________________ - SQRT checks its argument for squared factors and removes them. - - Numeric values for square roots that are not exact integers are -given only when [*note ROUNDED::.] is on. - - Please note that SQRT(A**2) is given as A , which may be incorrect -if A eventually has a negative value. If you are programming a -calculation in which this is a concern, you can turn on the [*note -PRECISE::.] switch, which causes the absolute value of the square root -to be returned. - - -File: redhelp, Node: TIMES, Prev: SQRT, Up: Arithmetic Operations section - - TIMES operator - - The TIMES operator is an infix or prefix n-ary multiplication -operator. It is identical to * . - -syntax: - - TIMES TIMES * - - or TIMES (, ,*) - - can be any valid REDUCE scalar or matrix expression. -Matrix expressions must be of the correct dimensions. Compatible scalar -and matrix expressions can be mixed. - -examples: - - ____________________________________________________________ - - var1 times var2; - - VAR1*VAR2 - - - times(6,5); - - 30 - - - matrix aa,bb; - - aa := mat((1),(2),(x))$ - - bb := mat((0,3,1))$ - - aa times bb times 5; - - [0 15 5 ] - [ ] - [0 30 10 ] - [ ] - [0 15*X 5*X] - - ____________________________________________________________ - - -File: redhelp, Node: Arithmetic Operations section, Next: Boolean Operators section, Prev: Syntax section, Up: Top - - Arithmetic Operations section - -* Menu: - -* ARITHMETIC_OPERATIONS:: introduction -* ABS:: operator -* ADJPREC:: switch -* ARG:: operator -* CEILING:: operator -* CHOOSE:: operator -* DEG2DMS:: operator -* DEG2RAD:: operator -* DIFFERENCE:: operator -* DILOG:: operator -* DMS2DEG:: operator -* DMS2RAD:: operator -* FACTORIAL:: operator -* FIX:: operator -* FIXP:: operator -* FLOOR:: operator -* EXPT:: operator -* GCD:: operator -* LN:: operator -* LOG:: operator -* LOGB:: operator -* MAX:: operator -* MIN:: operator -* MINUS:: operator -* NEXTPRIME:: operator -* NOCONVERT:: switch -* NORM:: operator -* PERM:: operator -* PLUS:: operator -* QUOTIENT:: operator -* RAD2DEG:: operator -* RAD2DMS:: operator -* RECIP:: operator -* REMAINDER:: operator -* ROUND:: operator -* SETMOD:: command -* SIGN:: operator -* SQRT:: operator -* TIMES:: operator - - -File: redhelp, Node: boolean value, Next: EQUAL, Up: Boolean Operators section - - BOOLEAN VALUE - - There are no extra symbols for the truth values true and false. -Instead, [*note NIL::.] and the number zero are interpreted as truth -value false in algebraic programs (see [*note false::.] ), while any -different value is considered as true (see [*note TRUE::.] ). - - -File: redhelp, Node: EQUAL, Next: EVENP, Prev: boolean value, Up: Boolean Operators section - - EQUAL operator - - The operator EQUAL is an infix binary comparison operator. It is -identical with = . It returns [*note TRUE::.] if its two arguments are -equal. - -syntax: - - EQUAL - - Equality is given between floating point numbers and integers that -have the same value. - -examples: - - ____________________________________________________________ - - on rounded; - - a := 4; - - A := 4 - - - b := 4.0; - - B := 4.0 - - - if a equal b then write "true" else write "false"; - - - - true - - - if a equal 5 then write "true" else write "false"; - - - - false - - - if a equal sqrt(16) then write "true" else write "false"; - - - - true - - ____________________________________________________________ - Comparison operators can only be used as conditions in conditional -commands such as IF ...THEN and REPEAT ...UNTIL . can also be -used as a prefix operator. However, this use is not encouraged. - - -File: redhelp, Node: EVENP, Next: false, Prev: EQUAL, Up: Boolean Operators section - - EVENP operator - - The EVENP logical operator returns [*note TRUE::.] if its argument -is an even integer, and [*note NIL::.] if its argument is an odd -integer. An error message is returned if its argument is not an integer. - -syntax: - - EVENP () or EVENP - - must evaluate to an integer. - -examples: - - ____________________________________________________________ - - aa := 1782; - - AA := 1782 - - - if evenp aa then yes else no; - - YES - - - if evenp(-3) then yes else no; - - NO - - ____________________________________________________________ - Although you would not ordinarily enter an expression such as the -last example above, note that the negative term must be enclosed in -parentheses to be correctly parsed. The EVENP operator can only be used -in conditional statements such as IF ...THEN ...ELSE or WHILE ...DO . - - -File: redhelp, Node: false, Next: FREEOF, Prev: EVENP, Up: Boolean Operators section - - FALSE - - The symbol [*note NIL::.] and the number zero are considered as -[*note boolean value::.] false if used in a place where a boolean value -is required. Most builtin operators return [*note NIL::.] as false -value. Algebraic programs use better zero. Note that NIL is not -printed when returned as result to a top level evaluation. - - -File: redhelp, Node: FREEOF, Next: LEQ, Prev: false, Up: Boolean Operators section - - FREEOF operator - - The FREEOF logical operator returns [*note TRUE::.] if its first -argument does not contain its second argument anywhere in its structure. - -syntax: - - FREEOF (,) or FREEOF - - can be any valid scalar REDUCE expression, must -be a kernel expression (see KERNEL ). - -examples: - - ____________________________________________________________ - - a := x + sin(y)**2 + log sin z; - - - - 2 - A := LOG(SIN(Z)) + SIN(Y) + X - - - if freeof(a,sin(y)) then write "free" else write "not free"; - - - - not free - - - if freeof(a,sin(x)) then write "free" else write "not free"; - - - - free - - - if a freeof sin z then write "free" else write "not free"; - - - - not free - - ____________________________________________________________ - Logical operators can only be used in conditional expressions such as - - IF ...THEN or WHILE ...DO . - - -File: redhelp, Node: LEQ, Next: LESSP, Prev: FREEOF, Up: Boolean Operators section - - LEQ operator - - The LEQ operator is a binary infix or prefix logical operator. It -returns [*note TRUE::.] if its first argument is less than or equal to -its second argument. As an infix operator it is identical with <= . - -syntax: - - LEQ (,) or LEQ - - can be any valid REDUCE expression that evaluates to a -number. - -examples: - - ____________________________________________________________ - - a := 15; - - A := 15 - - - if leq(a,25) then write "yes" else write "no"; - - - - yes - - - if leq(a,15) then write "yes" else write "no"; - - - - yes - - - if leq(a,5) then write "yes" else write "no"; - - - - no - - ____________________________________________________________ - Logical operators can only be used in conditional statements such as - - IF ...THEN ...ELSE or WHILE ...DO . - - -File: redhelp, Node: LESSP, Next: MEMBER, Prev: LEQ, Up: Boolean Operators section - - LESSP operator - - The LESSP operator is a binary infix or prefix logical operator. It -returns [*note TRUE::.] if its first argument is strictly less than its -second argument. As an infix operator it is identical with < . - -syntax: - - LESSP (,) or LESSP - - can be any valid REDUCE expression that evaluates to a -number. - -examples: - - ____________________________________________________________ - - a := 15; - - A := 15 - - - if lessp(a,25) then write "yes" else write "no"; - - - - yes - - - if lessp(a,15) then write "yes" else write "no"; - - - - no - - - if lessp(a,5) then write "yes" else write "no"; - - - - no - - ____________________________________________________________ - Logical operators can only be used in conditional statements such as - - IF ...THEN ...ELSE or WHILE ...DO . - - -File: redhelp, Node: MEMBER, Next: NEQ, Prev: LESSP, Up: Boolean Operators section - - MEMBER operator - -syntax: - - MEMBER - - MEMBER is an infix binary comparison operator that evaluates to -[*note TRUE::.] if is [*note EQUAL::.] to a member of the -[*note LIST::.] . - -examples: - - ____________________________________________________________ - - if a member {a,b} then 1 else 0; - - 1 - - - if 1 member(1,2,3) then a else b; - - a - - - if 1 member(1.0,2) then a else b; - - b - - ____________________________________________________________ - Logical operators can only be used in conditional statements such as - - IF ...THEN ...ELSE or WHILE ...DO . can also be used as a -prefix operator. However, this use is not encouraged. Finally, [*note -EQUAL::.] (= ) is used for the test within the list, so expressions -must be of the same type to match. - - -File: redhelp, Node: NEQ, Next: NOT, Prev: MEMBER, Up: Boolean Operators section - - NEQ operator - - The operator NEQ is an infix binary comparison operator. It returns -[*note TRUE::.] if its two arguments are not [*note EQUAL::.] . - -syntax: - - NEQ - - An inequality is satisfied between floating point numbers and -integers that have the same value. - -examples: - - ____________________________________________________________ - - on rounded; - - a := 4; - - A := 4 - - - b := 4.0; - - B := 4.0 - - - if a neq b then write "true" else write "false"; - - - - false - - - if a neq 5 then write "true" else write "false"; - - - - true - - ____________________________________________________________ - Comparison operators can only be used as conditions in conditional -commands such as IF ...THEN and REPEAT ...UNTIL . can also be -used as a prefix operator. However, this use is not encouraged. - - -File: redhelp, Node: NOT, Next: NUMBERP, Prev: NEQ, Up: Boolean Operators section - - NOT operator - - The NOT operator returns [*note TRUE::.] if its argument evaluates to -[*note NIL::.] , and NIL if its argument is TRUE . - -syntax: - - NOT () - -examples: - - ____________________________________________________________ - - if not numberp(a) then write "indeterminate" else write a; - - - - indeterminate; - - - a := 10; - - A := 10 - - - if not numberp(a) then write "indeterminate" else write a; - - - - 10 - - - if not(numberp(a) and a < 0) then write "positive number"; - - - - positive number - - ____________________________________________________________ - Logical operators can only be used in conditional statements such as - - IF ...THEN ...ELSE or WHILE ...DO . - - -File: redhelp, Node: NUMBERP, Next: ORDP, Prev: NOT, Up: Boolean Operators section - - NUMBERP operator - - The NUMBERP operator returns [*note TRUE::.] if its argument is a -number, and [*note NIL::.] otherwise. - -syntax: - - NUMBERP () or NUMBERP - - can be any REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - cc := 15.3; - - CC := 15.3 - - - if numberp(cc) then write "number" else write "nonnumber"; - - - number - - - if numberp(cb) then write "number" else write "nonnumber"; - - - nonnumber - - ____________________________________________________________ - Logical operators can only be used in conditional expressions, such -as - - IF ...THEN ...ELSE and WHILE ...DO . - - -File: redhelp, Node: ORDP, Next: PRIMEP, Prev: NUMBERP, Up: Boolean Operators section - - ORDP operator - - The ORDP logical operator returns [*note TRUE::.] if its first -argument is ordered ahead of its second argument in canonical internal -ordering, or is identical to it. - -syntax: - - ORDP (,) - - and can be any valid REDUCE scalar -expression. - -examples: - - ____________________________________________________________ - - if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no"; - - - - no - - - if ordp(101,100) then write "yes" else write "no"; - - - - yes - - - if ordp(x,x) then write "yes" else write "no"; - - - - yes - - ____________________________________________________________ - Logical operators can only be used in conditional expressions, such -as - - IF ...THEN ...ELSE and WHILE ...DO . - - -File: redhelp, Node: PRIMEP, Next: TRUE, Prev: ORDP, Up: Boolean Operators section - - PRIMEP operator - -syntax: - - PRIMEP () or PRIMEP - - If evaluates to a integer, PRIMEP returns [*note -TRUE::.] if is a prime number and [*note NIL::.] otherwise. -If does not have an integer value, a type error occurs. - -examples: - - ____________________________________________________________ - - if primep 3 then write "yes" else write "no"; - - - YES - - - if primep a then 1; - - ***** A invalid as integer - - ____________________________________________________________ - - -File: redhelp, Node: TRUE, Prev: PRIMEP, Up: Boolean Operators section - - TRUE - - Any value of the boolean part of a logical expression which is -neither [*note NIL::.] nor 0 is considered as TRUE . Most builtin test -and compare functions return [*note T::.] for TRUE and [*note NIL::.] -for FALSE . - -examples: - - ____________________________________________________________ - - if member(3,{1,2,3}) then 1 else -1; - - - 1 - - - if floor(1.7) then 1 else -1; - - 1 - - - if floor(0.7) then 1 else -1; - - -1 - - ____________________________________________________________ - - -File: redhelp, Node: Boolean Operators section, Next: General Commands section, Prev: Arithmetic Operations section, Up: Top - - Boolean Operators section - -* Menu: - -* boolean value:: concept -* EQUAL:: operator -* EVENP:: operator -* false:: concept -* FREEOF:: operator -* LEQ:: operator -* LESSP:: operator -* MEMBER:: operator -* NEQ:: operator -* NOT:: operator -* NUMBERP:: operator -* ORDP:: operator -* PRIMEP:: operator -* TRUE:: concept - - -File: redhelp, Node: BYE, Next: CONT, Up: General Commands section - - BYE command - - The BYE command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the BYE command exits REDUCE. QUIT is a synonym for BYE . - - -File: redhelp, Node: CONT, Next: DISPLAY, Prev: BYE, Up: General Commands section - - CONT command - - The command CONT returns control to an interactive file after a -[*note PAUSE::.] command that has been answered with N . - -examples: - - ____________________________________________________________ - ____________________________________________________________ - Suppose you are in the middle of an interactive file. - ____________________________________________________________ - - - - - factorize(x**2 + 17*x + 60); - - - - - {X + 5,X + 12} - - - pause; - - Cont? (Y or N) - - - n - - saveas results; - - factor1 := first results; - - FACTOR1 := X + 5 - - - factor2 := second results; - - FACTOR2 := X + 12 - - - cont; - ____________________________________________________________ - the file resumes - ____________________________________________________________ - - - ____________________________________________________________ - - A [*note PAUSE::.] allows you to enter your own REDUCE commands, -change switch values, inquire about results, or other such activities. -When you wish to resume operation of the interactive file, use CONT . - - -File: redhelp, Node: DISPLAY, Next: LOAD_PACKAGE, Prev: CONT, Up: General Commands section - - DISPLAY command - - When given a numeric argument , DISPLAY prints the most -recent input statements, identified by prompt numbers. If an empty pair -of parentheses is given, or if is greater than the current number -of statements, all the input statements since the beginning of the -session are printed. - -syntax: - - DISPLAY () or DISPLAY () - - should be a positive integer. However, if it is a real number, -the truncated integer value is used, and if a non-numeric argument is -used, all the input statements are printed. - - The statements are displayed in upper case, with lines split at -semicolons or dollar signs, as they are in editing. If long files have -been input during the session, the DISPLAY command is slow to format -these for printing. - - -File: redhelp, Node: LOAD_PACKAGE, Next: PAUSE, Prev: DISPLAY, Up: General Commands section - - LOAD_PACKAGE command - - The LOAD_PACKAGE command is used to load REDUCE packages, such as -GENTRAN that are not automatically loaded by the system. - -syntax: - - LOAD_PACKAGE " " - - A package is only loaded once; subsequent calls of LOAD_PACKAGE for -the same package name are ignored. - - -File: redhelp, Node: PAUSE, Next: QUIT, Prev: LOAD_PACKAGE, Up: General Commands section - - PAUSE command - - The PAUSE command, given in an interactive file, stops operation and -asks if you want to continue or not. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - An interactive file is running, and at some point you see the -question - ____________________________________________________________ - - - Cont? (Y or N) - ____________________________________________________________ - If you type - ____________________________________________________________ - - - y(Key){Return} - ____________________________________________________________ - the file continues to run until the next pause or the end. - ____________________________________________________________ - - ____________________________________________________________ - If you type - ____________________________________________________________ - - - n(Key){Return} - ____________________________________________________________ - you will get a numbered REDUCE prompt, and be allowed to enter and -execute any REDUCE statements. If you later wish to continue with the -file, type - ____________________________________________________________ - - - cont; - ____________________________________________________________ - and the file resumes. - ____________________________________________________________ - ____________________________________________________________ - - To use PAUSE in your own interactive files, type - - PAUSE; in the file wherever you want it. - - PAUSE does not allow you to continue without typing either Y or N . -Its use is to slow down scrolling of interactive files, or to let you -change parameters or switch settings for the calculations. - - If you have stopped an interactive file at a PAUSE, and do not wish -to resume the file, type END; . This does not end the REDUCE session, -but stops input from the file. A second END; ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an END; -brings you back to the top level, not the file directly above. - - A PAUSE typed from the terminal has no effect. - - -File: redhelp, Node: QUIT, Next: RECLAIM, Prev: PAUSE, Up: General Commands section - - QUIT command - - The QUIT command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the QUIT command exits REDUCE. [*note BYE::.] is a -synonym for QUIT . - - -File: redhelp, Node: RECLAIM, Next: REDERR, Prev: QUIT, Up: General Commands section - - RECLAIM operator - - REDUCE's memory is in a storage structure called a heap. As REDUCE -statements execute, chunks of memory are used up. When these chunks are -no longer needed, they remain idle. When the memory is almost full, the -system executes a garbage collection, reclaiming space that is no -longer needed, and putting all the free space at one end. Depending on -the size of the image REDUCE is using, garbage collection needs to be -done more or less often. A larger image means fewer but longer garbage -collections. Regardless of memory size, if you ask REDUCE to do -something ridiculous, like FACTORIAL(2000) , it may garbage collect -many times. - - -File: redhelp, Node: REDERR, Next: RETRY, Prev: RECLAIM, Up: General Commands section - - REDERR command - - The REDERR command allows you to print an error message from inside -a [*note PROCEDURE::.] or a [*note block::.] statement. The -calculation is gracefully terminated. - -syntax: - - REDERR - - is an error message, usually inside double quotation marks -(a [*note STRING::.] ). - -examples: - - ____________________________________________________________ - - procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - - - fac - - - fac a; - - ***** Choose nonneg. integer only - - - fac 5; - - 120 - - ____________________________________________________________ - The above procedure finds the factorial of its argument. If n is -not a positive integer or 0, an error message is returned. - - If your procedure is executed in a file, the usual error message is -printed, followed by CONT? (Y OR N) , just as any other error does from -a file. Although the procedure is gracefully terminated, any switch -settings or variable assignments you made before the error occurred are -not undone. If you need to clean up such items before exiting, use a -group statement, with the REDERR command as its last statement. - - -File: redhelp, Node: RETRY, Next: SAVEAS, Prev: REDERR, Up: General Commands section - - RETRY command - - The RETRY command allows you to retry the latest statement that -resulted in an error message. - -examples: - - ____________________________________________________________ - - matrix a; - - det a; - - ***** Matrix A not set - - - a := mat((1,2),(3,4)); - - A(1,1) := 1 - A(1,2) := 2 - A(2,1) := 3 - A(2,2) := 4 - - - retry; - - -2 - - ____________________________________________________________ - RETRY remembers only the most recent statement that resulted in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. - - -File: redhelp, Node: SAVEAS, Next: SHOWTIME, Prev: RETRY, Up: General Commands section - - SAVEAS command - - The SAVEAS command saves the current workspace under the name of its -argument. - -syntax: - - SAVEAS - - can be any valid REDUCE identifier. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - (The numbered prompts are shown below, unlike in most examples) - ____________________________________________________________ - - - 1: solve(x^2-3); - - {x=sqrt(3),x= - sqrt(3)} - - - 2: saveas rts(0)$ - - 3: rts(0); - - {x=sqrt(3),x= - sqrt(3)} - - ____________________________________________________________ - - SAVEAS works only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that you -did not assign to an identifier when you originally typed the input. -For access to previous output use [*note WS::.] . - - -File: redhelp, Node: SHOWTIME, Next: WRITE, Prev: SAVEAS, Up: General Commands section - - SHOWTIME command - - The SHOWTIME command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has -not been called before. - -examples: - - ____________________________________________________________ - - showtime; - - Time: 1020 ms - - - factorize(x^4 - 8x^4 + 8x^2 - 136x - 153); - - - - 2 - {X - 9,X + 17,X + 1} - - - showtime; - - Time: 920 ms - - ____________________________________________________________ - The time printed is either the elapsed cpu time or the elapsed wall -clock time, depending on your system. SHOWTIME allows you to see the -system time resources REDUCE uses in its calculations. Your time -readings will of course vary from this example according to the system -you use. - - -File: redhelp, Node: WRITE, Prev: SHOWTIME, Up: General Commands section - - WRITE command - - The WRITE command explicitly writes its arguments to the output -device (terminal or file). - -syntax: - - WRITE ,* - - can be an expression, an assignment or a [*note STRING::.] -enclosed in double quotation marks (" ). - -examples: - - ____________________________________________________________ - - write a, sin x, "this is a string"; - - - ASIN(X)this is a string - - - write a," ",sin x," this is a string"; - - - A SIN(X) this is a string - - - if not numberp(a) then write "the symbol ",a; - - - - the symbol A - - - array m(10); - - for i := 1:5 do write m(i) := 2*i; - - - M(1) := 2 - M(2) := 4 - M(3) := 6 - M(4) := 8 - M(5) := 10 - - - m(4); - - 8 - - ____________________________________________________________ - The items specified by a single WRITE statement print on a single -line unless they are too long. A printed line is always ended with a -carriage return, so the next item printed starts a new line. - - When an assignment statement is printed, the assignment is also -made. This allows you to get feedback on filling slots in an array with -a [*note FOR::.] statement, as shown in the last example above. - - -File: redhelp, Node: General Commands section, Next: Algebraic Operators section, Prev: Boolean Operators section, Up: Top - - General Commands section - -* Menu: - -* BYE:: command -* CONT:: command -* DISPLAY:: command -* LOAD_PACKAGE:: command -* PAUSE:: command -* QUIT:: command -* RECLAIM:: operator -* REDERR:: command -* RETRY:: command -* SAVEAS:: command -* SHOWTIME:: command -* WRITE:: command - - -File: redhelp, Node: APPEND, Next: ARBINT, Up: Algebraic Operators section - - APPEND operator - - The APPEND operator constructs a new [*note LIST::.] from the -elements of its two arguments (which must be lists). - -syntax: - - APPEND (,) - - must be a list, though it may be the empty list ([] ). Any -arguments beyond the first two are ignored. - -examples: - - ____________________________________________________________ - - alist := {1,2,{a,b}}; - - ALIST := {1,2,{A,B}} - - - blist := {3,4,5,sin(y)}; - - BLIST := {3,4,5,SIN(Y)} - - - append(alist,blist); - - {1,2,{A,B},3,4,5,SIN(Y)} - - - append(alist,{}); - - {1,2,{A,B}} - - - append(list z,blist); - - {Z,3,4,5,SIN(Y)} - - ____________________________________________________________ - The new list consists of the elements of the second list appended to -the elements of the first list. You can APPEND new elements to the -beginning or end of an existing list by putting the new element in a -list (use curly braces or the operator LIST ). This is particularly -helpful in an iterative loop. - - -File: redhelp, Node: ARBINT, Next: ARBCOMPLEX, Prev: APPEND, Up: Algebraic Operators section - - ARBINT operator - - The operator ARBINT is used to express arbitrary integer parts of an -expression, e.g. in the result of [*note SOLVE::.] when [*note -ALLBRANCH::.] is on. - -examples: - - ____________________________________________________________ - - - solve(log(sin(x+3)),x); - - {X=2*ARBINT(1)*PI - ASIN(1) - 3, - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3} - - ____________________________________________________________ - - -File: redhelp, Node: ARBCOMPLEX, Next: ARGLENGTH, Prev: ARBINT, Up: Algebraic Operators section - - ARBCOMPLEX operator - - The operator ARBCOMPLEX is used to express arbitrary scalar parts of -an expression, e.g. in the result of [*note SOLVE::.] when the solution -is parametric in one of the variable. - -examples: - - ____________________________________________________________ - - - solve({x+3=y-2z,y-3x=0},{x,y,z}); - - - 2*ARBCOMPLEX(1) + 3 - {X=-------------------, - 2 - 3*ARBCOMPLEX(1) + 3 - Y=-------------------, - 2 - Z=ARBCOMPLEX(1)} - - ____________________________________________________________ - - -File: redhelp, Node: ARGLENGTH, Next: COEFF, Prev: ARBCOMPLEX, Up: Algebraic Operators section - - ARGLENGTH operator - - The operator ARGLENGTH returns the number of arguments of the -top-level operator in its argument. - -syntax: - - ARGLENGTH () - - can be any valid REDUCE algebraic expression. - -examples: - - ____________________________________________________________ - - arglength(a + b + c + d); - - 4 - - - arglength(a/b/c); - - 2 - - - arglength(log(sin(df(r**3*x,x)))); - - - 1 - - ____________________________________________________________ - In the first example, + is an n-ary operator, so the number of terms -is returned. In the second example, since / is a binary operator, the -argument is actually (a/b)/c, so there are two terms at the top level. -In the last example, no matter how deeply the operators are nested, -there is still only one argument at the top level. - - -File: redhelp, Node: COEFF, Next: COEFFN, Prev: ARGLENGTH, Up: Algebraic Operators section - - COEFF operator - - The COEFF operator returns the coefficients of the powers of the -specified variable in the given expression, in a [*note LIST::.] . - -syntax: - - COEFF (, ) - - is expected to be a polynomial expression, not a -rational expression. Rational expressions are accepted when the switch -[*note RATARG::.] is on. must be a kernel. The results are -returned in a list. - -examples: - - ____________________________________________________________ - - coeff((x+y)**3,x); - - 3 2 - {Y ,3*Y ,3*Y,1} - - - coeff((x+2)**4 + sin(x),x); - - {SIN(X) + 16,32,24,8,1} - - - high_pow; - - 4 - - - low_pow; - - 0 - - - ab := x**9 + sin(x)*x**7 + sqrt(y); - - - - 7 9 - AB := SQRT(Y) + SIN(X)*X + X - - - coeff(ab,x); - - {SQRT(Y),0,0,0,0,0,0,SIN(X),0,1} - - ____________________________________________________________ - The variables [*note HIGH_POW::.] and [*note LOW_POW::.] are set to -the highest and lowest powers of the variable, respectively, appearing -in the expression. - - The coefficients are put into a list, with the coefficient of the -lowest (constant) term first. You can use the usual list access methods -(FIRST , SECOND , THIRD , REST , LENGTH , and PART ) to extract them. -If a power does not appear in the expression, the corresponding element -of the list is zero. Terms involving functions of the specified -variable but not including powers of it (for example in the expression -X**4 + 3*X**2 + TAN(X) ) are placed in the constant term. - - Since the COEFF command deals with the expanded form of the -expression, you may get unexpected results when [*note EXP::.] is off, -or when [*note FACTOR::.] or [*note IFACTOR::.] are on. - - If you want only a specific coefficient rather than all of them, use -the [*note COEFFN::.] operator. - - -File: redhelp, Node: COEFFN, Next: CONJ, Prev: COEFF, Up: Algebraic Operators section - - COEFFN operator - - The COEFFN operator takes three arguments: an expression, a kernel, -and a non-negative integer. It returns the coefficient of the kernel to -that integer power, appearing in the expression. - -syntax: - - COEFFN (,,) - - must be a polynomial, unless [*note RATARG::.] is on -which allows rational expressions. must be a kernel, and - must be a non-negative integer. - -examples: - - ____________________________________________________________ - - - ff := x**7 + sin(y)*x**5 + y**4 + x + 7; - - - 5 7 4 - FF := SIN(Y)*X + X + X + Y + 7 - - - coeffn(ff,x,5); - - SIN(Y) - - - coeffn(ff,z,3); - - 0 - - - coeffn(ff,y,0); - - 5 7 - SIN(Y)*X + X + X + 7 - - - - rr := 1/y**2+y**3+sin(y); - - 2 5 - SIN(Y)*Y + Y + 1 - RR := -------------------- - 2 - Y - - - on ratarg; - - - coeffn(rr,y,-2); - - ***** -2 invalid as COEFFN index - - - - coeffn(rr,y,5); - - 1 - --- - 2 - Y - - ____________________________________________________________ - If the given power of the kernel does not appear in the expression, -COEFFN returns 0. Negative powers are never detected, even if they -appear in the expression and [*note RATARG::.] are on. COEFFN with an -integer argument of 0 returns any terms in the expression that do not -contain the given kernel. - - -File: redhelp, Node: CONJ, Next: CONTINUED_FRACTION, Prev: COEFFN, Up: Algebraic Operators section - - CONJ operator - -syntax: - - CONJ () or CONJ - - This operator returns the complex conjugate of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators [*note REPART::.] and [*note IMPART::.] . - -examples: - - ____________________________________________________________ - - conj(1+i); - - 1-I - - - conj(a+i*b); - - REPART(A) - REPART(B)*I - IMPART(A)*I - IMPART(B) - - ____________________________________________________________ - - -File: redhelp, Node: CONTINUED_FRACTION, Next: DECOMPOSE, Prev: CONJ, Up: Algebraic Operators section - - CONTINUED_FRACTION operator - -syntax: - - CONTINUED_FRACTION () or CONTINUED_FRACTION ( ,) - - This operator approximates the real number ( [*note -RATIONAL::.] number, [*note ROUNDED::.] number) into a continued -fraction. The result is a list of two elements: the first one is the -rational value of the approximation, the second one is the list of -terms of the continued fraction which represents the same value -according to the definition T0 +1/(T1 + 1/(T2 + ...)) . Precision: the -second optional parameter is an upper bound for the absolute -value of the result denominator. If omitted, the approximation is -performed up to the current system precision. - -examples: - - ____________________________________________________________ - - continued_fraction pi; - - - 1146408 - {-------,{3,7,15,1,292,1,1,1,2,1}} - 364913 - - - continued_fraction(pi,100); - - - 22 - {--,{3,7}} - 7 - - ____________________________________________________________ - - -File: redhelp, Node: DECOMPOSE, Next: DEG, Prev: CONTINUED_FRACTION, Up: Algebraic Operators section - - DECOMPOSE operator - - The DECOMPOSE operator takes a multivariate polynomial as argument, -and returns an expression and a [*note LIST::.] of [*note EQUATION::.] -s from which the original polynomial can be found by composition. - -syntax: - - DECOMPOSE () or DECOMPOSE - -examples: - - ____________________________________________________________ - - decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4- - 218900*x^3+65690*x^2-7700*x+234) - - - - 2 2 2 - U + 35*U + 234, U=V + 10*V, V=X - 22*X - - - decompose(u^2+v^2+2u*v+1) - - 2 - W + 1, W=U + V - - ____________________________________________________________ - Unlike factorization, this decomposition is not unique. Further -details can be found in V.S. Alagar, M.Tanh, , Proc. EUROCAL 1985, pp 150-153 (Springer) and J. von zur -Gathen, , J. -Symbolic Computation (1990) 9, 281-299. - - -File: redhelp, Node: DEG, Next: DEN, Prev: DECOMPOSE, Up: Algebraic Operators section - - DEG operator - - The operator DEG returns the highest degree of its variable argument -found in its expression argument. - -syntax: - - DEG (,) - - is expected to be a polynomial expression, not a -rational expression. Rational expressions are accepted when the switch -[*note RATARG::.] is on. must be a [*note KERNEL::.] . The -results are returned in a list. - -examples: - - ____________________________________________________________ - - - deg((x+y)**5,x); - - 5 - - - - deg((a+b)*(c+2*d)**2,d); - - 2 - - - - deg(x**2 + cos(y),sin(x)); - - - deg((x**2 + sin(x))**5,sin(x)); - - 5 - - ____________________________________________________________ - - -File: redhelp, Node: DEN, Next: DF, Prev: DEG, Up: Algebraic Operators section - - DEN operator - - The DEN operator returns the denominator of its argument. - -syntax: - - DEN () - - is ordinarily a rational expression, but may be any -valid scalar REDUCE expression. - -examples: - - ____________________________________________________________ - - - a := x**3 + 3*x**2 + 12*x; - - 2 - A := X*(X + 3*X + 12) - - - - b := 4*x*y + x*sin(x); - - B := X*(SIN(X) + 4*Y) - - - - den(a/b); - - SIN(X) + 4*Y - - - - den(aa/4 + bb/5); - - 20 - - - - den(100/6); - - 3 - - - - den(sin(x)); - - 1 - - ____________________________________________________________ - DEN returns the denominator of the expression after it has been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression does not have any -other denominator, 1 is returned. - - Switch settings, such as [*note MCD::.] or [*note RATIONAL::.] , -have an effect on the denominator of an expression. - - -File: redhelp, Node: DF, Next: EXPAND_CASES, Prev: DEN, Up: Algebraic Operators section - - DF operator - - The DF operator finds partial derivatives with respect to one or -more variables. - -syntax: - - DF (, [, ] , [ , ] -) - - can be any valid REDUCE algebraic expression. -must be a [*note KERNEL::.] , and is the differentiation variable. - must be a non-negative integer. - -examples: - - ____________________________________________________________ - - - df(x**2,x); - - 2*X - - - - df(x**2*y + sin(y),y); - - 2 - COS(Y) + X - - - - df((x+y)**10,z); - - 0 - - - - - df(1/x**2,x,2); - - 6 - --- - 4 - X - - - - df(x**4*y + sin(y),y,x,3); - - 24*X - - - - for all x let df(tan(x),x) = sec(x)**2; - - - df(tan(3*x),x); - - 2 - 3*SEC(3*X) - - ____________________________________________________________ - An error message results if a non-kernel is entered as a -differentiation operator. If the optional number is omitted, it is -assumed to be 1. See the declaration [*note DEPEND::.] to establish -dependencies for implicit differentiation. - - You can define your own differentiation rules, expanding REDUCE's -capabilities, using the [*note LET::.] command as shown in the last -example above. Note that once you add your own rule for differentiating -a function, it supersedes REDUCE's normal handling of that function for -the duration of the REDUCE session. If you clear the rule ([*note -CLEARRULES::.] ), you don't get back to the previous rule. - - -File: redhelp, Node: EXPAND_CASES, Next: EXPREAD, Prev: DF, Up: Algebraic Operators section - - EXPAND_CASES operator - - When a [*note ROOT_OF::.] form in a result of [*note SOLVE::.] has -been converted to a [*note ONE_OF::.] form, EXPAND_CASES can be used to -convert this into form corresponding to the normal explicit results of -[*note SOLVE::.] . See [*note ROOT_OF::.] . - - -File: redhelp, Node: EXPREAD, Next: FACTORIZE, Prev: EXPAND_CASES, Up: Algebraic Operators section - - EXPREAD operator - -syntax: - - EXPREAD () - - EXPREAD reads one well-formed expression from the current input -buffer and returns its value. - -examples: - - ____________________________________________________________ - - expread(); a+b; - - A + B - - ____________________________________________________________ - - -File: redhelp, Node: FACTORIZE, Next: HYPOT, Prev: EXPREAD, Up: Algebraic Operators section - - FACTORIZE operator - - The FACTORIZE operator factors a given expression. - -syntax: - - FACTORIZE () - - should be a polynomial, otherwise an error will result. - -examples: - - ____________________________________________________________ - - - fff := factorize(x^3 - y^3); - - 2 2 - {X - Y,X + X*Y + Y } - - - fac1 := first fff; - - FAC1 := X - Y - - - factorize(x^15 - 1); - - {X - 1, - 2 - X + X + 1, - 4 3 2 - X + X + X + X + 1, - 8 7 6 5 4 - X - X + X - X + X - X + 1} - - - lastone := part(ws,length ws); - - 8 7 6 5 4 - LASTONE := X - X + X - X + X - X + 1 - - - setmod 2; - - 1 - - - on modular; - - factorize(x^15 - 1); - - {X + 1, - 2 - X + X + 1, - 4 - X + X + 1, - 4 3 - X + X + 1, - 4 3 2 - X + X + X + X + 1} - - ____________________________________________________________ - The FACTORIZE command returns the factors it finds as a [*note -LIST::.] . You can therefore use the usual list access methods ([*note -FIRST::.] , [*note SECOND::.] , [*note THIRD::.] , [*note REST::.] , -[*note LENGTH::.] and [*note PART::.] ) to extract the factors. - - If the given to FACTORIZE is an integer, it will be -factored into its prime components. To factor any integer factor of a -non-numerical expression, the switch [*note IFACTOR::.] should be -turned on. Its default is off. [*note IFACTOR::.] has effect only when -factoring is explicitly done by FACTORIZE , not when factoring is -automatically done with the [*note FACTOR::.] switch. If full -factorization is not needed the switch [*note LIMITEDFACTORS::.] allows -you to reduce the computing time of calls to FACTORIZE . - - Factoring can be done in a modular domain by calling FACTORIZE when -[*note MODULAR::.] is on. You can set the modulus with the [*note -SETMOD::.] command. The last example above shows factoring modulo 2. - - For general comments on factoring, see comments under the switch -[*note FACTOR::.] . - - -File: redhelp, Node: HYPOT, Next: IMPART, Prev: FACTORIZE, Up: Algebraic Operators section - - HYPOT operator - -syntax: - - hypot(,) - - If ROUNDED is on, and the two arguments evaluate to numbers, this -operator returns the square root of the sums of the squares of the -arguments in a manner that avoids intermediate overflow. In other cases, -an expression in the original operator is returned. - -examples: - - ____________________________________________________________ - - hypot(3,4); - - HYPOT(3,4) - - - on rounded; - - ws; - - 5.0 - - - hypot(a,b); - - HYPOT(A,B) - - ____________________________________________________________ - - -File: redhelp, Node: IMPART, Next: INT, Prev: HYPOT, Up: Algebraic Operators section - - IMPART operator - -syntax: - - IMPART () or IMPART - - This operator returns the imaginary part of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators [*note REPART::.] and IMPART . - -examples: - - ____________________________________________________________ - - impart(1+i); - - 1 - - - impart(a+i*b); - - REPART(B) + IMPART(A) - - ____________________________________________________________ - - -File: redhelp, Node: INT, Next: INTERPOL, Prev: IMPART, Up: Algebraic Operators section - - INT operator - - The INT operator performs analytic integration on a variety of -functions. - -syntax: - - INT (,) - - can be any scalar expression. involving polynomials, log -functions, exponential functions, or tangent or arctangent expressions. -INT attempts expressions involving error functions, dilogarithms and -other trigonometric expressions. Integrals involving algebraic -extensions (such as square roots) may not succeed. must be a -REDUCE [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - int(x**3 + 3,x); - - 3 - X*(X + 12) - ----------- - 4 - - - - int(sin(x)*exp(2*x),x); - - - 2*X - E *(COS(X) - 2*SIN(X)) - - ------------------------ - 5 - - - int(1/(x^2-2),x); - - - SQRT(2)*(LOG( - SQRT(2) + X) - LOG(SQRT(2) + X)) - ------------------------------------------------ - 4 - - - int(sin(x)/(4 + cos(x)**2),x); - - - COS(X) - ATAN(------) - 2 - - ------------ - 2 - - - - int(1/sqrt(x^2-x),x); - - SQRT(X)*SQRT(X - 1) - INT(-------------------,X) - 2 - X -X - - ____________________________________________________________ - Note that REDUCE couldn't handle the last integral with its default -integrator, since the integrand involves a square root. However, the -integral can be found using the [*note ALGINT::.] package. -Alternatively, you could add a rule using the [*note LET::.] statement -to evaluate this integral. - - The arbitrary constant of integration is not shown. Definite -integrals can be found by evaluating the result at the limits of -integration (use [*note ROUNDED::.] ) and subtracting the lower from -the higher. Evaluation can be easily done by the [*note SUB::.] -operator. - - When INT cannot find an integral it returns an expression involving -formal INT expressions unless the switch [*note FAILHARD::.] has been -set. If not all of the expression can be integrated, the switch [*note -NOLNR::.] controls whether a partially integrated result should be -returned or not. - - -File: redhelp, Node: INTERPOL, Next: LCOF, Prev: INT, Up: Algebraic Operators section - - INTERPOL operator - - INTERPOL generates an interpolation polynomial. - -syntax: - - interpol(,,) - - and are [*note LIST::.] s of equal length and - is an algebraic expression (preferably a [*note KERNEL::.] ). -The interpolation polynomial is generated in the given variable of -degree length()-1. The unique polynomial F is defined by the -property that for corresponding elements V of and P of - the relation F(P)=V holds. - -examples: - - ____________________________________________________________ - - f := for i:=1:4 collect(i**3-1); - - F := 0,7,26,63 - - - p := {1,2,3,4}; - - P := 1,2,3,4 - - - interpol(f,x,p); - - 3 - X - 1 - - ____________________________________________________________ - The Aitken-Neville interpolation algorithm is used which guarantees a -stable result even with rounded numbers and an ill-conditioned problem. - - -File: redhelp, Node: LCOF, Next: LENGTH, Prev: INTERPOL, Up: Algebraic Operators section - - LCOF operator - - The LCOF operator returns the leading coefficient of a given -expression with respect to a given variable. - -syntax: - - LCOF (,) - - is ordinarily a polynomial. If [*note RATARG::.] is on, -a rational expression may also be used, otherwise an error results. - must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - lcof((x+2*y)**5,y); - - 32 - - - lcof((x + y*sin(x))**2 + cos(x)*sin(x)**2,sin(x)); - - - - 2 - COS(X) + Y - - - lcof(x**2 + 3*x + 17,y); - - 2 - X + 3*X + 17 - - ____________________________________________________________ - If the kernel does not appear in the expression, LCOF returns the -expression. - - -File: redhelp, Node: LENGTH, Next: LHS, Prev: LCOF, Up: Algebraic Operators section - - LENGTH operator - - The LENGTH operator returns the number of items in a [*note LIST::.] -, the number of terms in an expression, or the dimensions of an array -or matrix. - -syntax: - - LENGTH () or LENGTH - - can be a list structure, an array, a matrix, or a scalar -expression. - -examples: - - ____________________________________________________________ - - alist := {a,b,{ww,xx,yy,zz}}; - - ALIST := {A,B,{WW,XX,YY,ZZ}} - - - length alist; - - 3 - - - length third alist; - - 4 - - - dlist := {d}; - - DLIST := {D} - - - length rest dlist; - - 0 - - - matrix mmm(4,5); - - length mmm; - - {4,5} - - - array aaa(5,3,2); - - length aaa; - - {6,4,3} - - - eex := (x+3)**2/(x-y); - - 2 - X + 6*X + 9 - EEX := ------------ - X - Y - - - length eex; - - 5 - - ____________________________________________________________ - An item in a list that is itself a list only counts as one item. An -error message will be printed if LENGTH is called on a matrix which has -not had its dimensions set. The LENGTH of an array includes the zeroth -element of each dimension, showing the full number of elements -allocated. (Declaring an array A with n elements allocates -A(0),A(1),...,A(n).) The LENGTH of an expression is the total number -of additive terms appearing in the numerator and denominator of the -expression. Note that subtraction of a term is represented internally -as addition of a negative term. - - -File: redhelp, Node: LHS, Next: LIMIT, Prev: LENGTH, Up: Algebraic Operators section - - LHS operator - - The LHS operator returns the left-hand side of an [*note -EQUATION::.] , such as those returned in a list by [*note SOLVE::.] . - -syntax: - - LHS () or LHS - - must be an equation of the form - - LEFT-HAND SIDE = RIGHT-HAND SIDE . - -examples: - - ____________________________________________________________ - - polly := (x+3)*(x^4+2x+1); - - 5 4 2 - POLLY := X + 3*X + 2*X + 7*X + 3 - - - pollyroots := solve(polly,x); - - POLLYROOTS := {X=ROOT F(X3 - X2 + X + 1,X , - O ) - X=-1, - X=-3} - - - variable := lhs first pollyroots; - - VARIABLE := X - - ____________________________________________________________ - - -File: redhelp, Node: LIMIT, Next: LPOWER, Prev: LHS, Up: Algebraic Operators section - - LIMIT operator - - LIMITS is a fast limit package for REDUCE for functions which are -continuous except for computable poles and singularities, based on some -earlier work by Ian Cohen and John P. Fitch. The Truncated Power Series -package is used for non-critical points, at which the value of the -function is the constant term in the expansion around that point. -l'Hopital's rule is used in critical cases, with preprocessing of 1-1 -forms and reformatting of product forms in order to apply l'Hopital's -rule. A limited amount of bounded arithmetic is also employed where -applicable. - -syntax: - - LIMIT (,,) or - - LIMIT!+ (,,) or - - LIMIT!- (,,) - - where is an expression depending of the variable (a -[*note KERNEL::.] ) and is the limit point. If the limit -depends upon the direction of approach to the , the operators -LIMIT!+ and LIMIT!- may be used. - -examples: - - ____________________________________________________________ - - limit(x*cot(x),x,0); - - 0 - - - limit((2x+5)/(3x-2),x,infinity); - - 2 - -- - 3 - - ____________________________________________________________ - - -File: redhelp, Node: LPOWER, Next: LTERM, Prev: LIMIT, Up: Algebraic Operators section - - LPOWER operator - - The LPOWER operator returns the leading power of an expression with -respect to a kernel. 1 is returned if the expression does not depend on -the kernel. - -syntax: - - LPOWER (,) - - is ordinarily a polynomial. If [*note RATARG::.] is on, -a rational expression may also be used, otherwise an error results. - must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - lpower((x+2*y)**6,y); - - 6 - Y - - - lpower((x + cos(x))**8 + df(x**2,x),cos(x)); - - - - 8 - COS(X) - - - lpower(x**3 + 3*x,y); - - 1 - - ____________________________________________________________ - - -File: redhelp, Node: LTERM, Next: MAINVAR, Prev: LPOWER, Up: Algebraic Operators section - - LTERM operator - - The LTERM operator returns the leading term of an expression with -respect to a kernel. The expression is returned if it does not depend on -the kernel. - -syntax: - - LTERM (,) - - is ordinarily a polynomial. If [*note RATARG::.] is on, -a rational expression may also be used, otherwise an error results. - must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - lterm((x+2*y)**6,y); - - 6 - 64*Y - - - lterm((x + cos(x))**8 + df(x**2,x),cos(x)); - - - - 8 - COS(X) - - - lterm(x**3 + 3*x,y); - - 3 - X + 3X - - ____________________________________________________________ - - -File: redhelp, Node: MAINVAR, Next: MAP, Prev: LTERM, Up: Algebraic Operators section - - MAINVAR operator - - The MAINVAR operator returns the main variable (in the system's -internal representation) of its argument. - -syntax: - - MAINVAR () - - is usually a polynomial, but may be any valid REDUCE -scalar expression. In the case of a rational function, the main variable -of the numerator is returned. The main variable returned is a [*note -KERNEL::.] . - -examples: - - ____________________________________________________________ - - test := (a + b + c)**2; - - 2 2 2 - TEST := A + 2*A*B + 2*A*C + B + 2*B*C + C - - - mainvar(test); - - A - - - korder c,b,a; - - mainvar(test); - - C - - - mainvar(2*cos(x)**2); - - COS(X) - - - mainvar(17); - - 0 - - ____________________________________________________________ - The main variable is the first variable in the canonical ordering of -kernels. Generally, alphabetically ordered functions come first, then -alphabetically ordered identifiers (variables). Numbers come last, and -as far as MAINVAR is concerned belong in the family 0 . The canonical -ordering can be changed by the declaration [*note KORDER::.] , as shown -above. - - -File: redhelp, Node: MAP, Next: MKID, Prev: MAINVAR, Up: Algebraic Operators section - - MAP operator - - The MAP operator applies a uniform evaluation pattern to all members -of a composite structure: a [*note MATRIX::.] , a [*note LIST::.] or -the arguments of an [*note OPERATOR::.] expression. The evaluation -pattern can be a unary procedure, an operator, or an algebraic -expression with one free variable. - -syntax: - - MAP (,) - - is a list, a matrix or an operator expression. - - is the name of an operator for a single argument: the -operator is evaluated once with each element of as its single -argument, - - or an algebraic expression with exactly one [*note Free Variable::.] -, that is a variable preceded by the tilde symbol: the expression is -evaluated for each element of where the element is -substituted for the free variable, - - or a replacement [*note RULE::.] of the form - -syntax: - - VAR => REP - - where is a variable (a without subscript) and -is an expression which contains . Here REP is evaluated for each -element of where the element is substituted for VAR . VAR may -be optionally preceded by a tilde. - - The rule form for is needed when more than one free -variable occurs. - -examples: - - ____________________________________________________________ - - map(abs,{1,-2,a,-a}); - - 1,2,abs(a),abs(a) - - - map(int(~w,x), mat((x^2,x^5),(x^4,x^5))); - - - [ 3 6 ] - [ x x ] - [---- ----] - [ 3 6 ] - [ ] - [ 5 6 ] - [ x x ] - [---- ----] - [ 5 6 ] - - - map(~w*6, x^2/3 = y^3/2 -1); - - 2 3 - 2*x =3*(y -2) - - ____________________________________________________________ - You can use MAP in nested expressions. It is not allowed to apply -MAP for a non-composed object, e.g. an identifier or a number. - - -File: redhelp, Node: MKID, Next: NPRIMITIVE, Prev: MAP, Up: Algebraic Operators section - - MKID command - - The MKID command constructs an identifier, given a stem and an -identifier or an integer. - -syntax: - - MKID (,) - - can be any valid REDUCE identifier that does not include -escaped special characters. may be an integer, including one -given by a local variable in a [*note FOR::.] loop, or any other legal -group of characters. - -examples: - - ____________________________________________________________ - - mkid(x,3); - - X3 - - - factorize(x^15 - 1); - - {X - 1, - 2 - X + X + 1, - 4 3 2 - X + X + X + X + 1, - 8 7 5 4 3 - X - X + X - X + X - X + 1} - - - - for i := 1:length ws do write set(mkid(f,i),part(ws,i)); - - - - 8 7 5 4 3 - X - X + X - X + X - X + 1 - 4 3 2 - X + X + X + X + 1 - 2 - X + X + 1 - X - 1 - - ____________________________________________________________ - You can use MKID to construct identifiers from inside procedures. -This allows you to handle an unknown number of factors, or deal with -variable amounts of data. It is particularly helpful to attach -identifiers to the answers returned by FACTORIZE and SOLVE . - - -File: redhelp, Node: NPRIMITIVE, Next: NUM, Prev: MKID, Up: Algebraic Operators section - - NPRIMITIVE operator - -syntax: - - NPRIMITIVE () or NPRIMITIVE - - This operator returns the numerically-primitive part of any scalar -expression. In other words, any overall integer factors in the -expression are removed. - -examples: - - ____________________________________________________________ - - nprimitive((2x+2y)^2); - - 2 2 - X + 2*X*Y + Y - - - nprimitive(3*a*b*c); - - 3*A*B*C - - ____________________________________________________________ - - -File: redhelp, Node: NUM, Next: ODESOLVE, Prev: NPRIMITIVE, Up: Algebraic Operators section - - NUM operator - - The NUM operator returns the numerator of its argument. - -syntax: - - NUM () or NUM - - can be any valid REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - num(100/6); - - 50 - - - num(a/5 + b/6); - - 6*A + 5*B - - - num(sin(x)); - - SIN(X) - - ____________________________________________________________ - NUM returns the numerator of the expression after it has been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression is not a rational -expression, it is returned unchanged. - - -File: redhelp, Node: ODESOLVE, Next: ONE_OF, Prev: NUM, Up: Algebraic Operators section - - ODESOLVE operator - - The ODESOLVE package is a solver for ordinary differential -equations. At the present time it has still limited capabilities: - - 1. it can handle only a single scalar equation presented as an -algebraic expression or equation, and - - 2. it can solve only first-order equations of simple types, linear -equations with constant coefficients and Euler equations. - - These solvable types are exactly those for which Lie symmetry -techniques give no useful information. - -syntax: - - ODESOLVE (,,) - - is a single scalar expression such that =0 is the -ordinary differential equation (ODE for short) to be solved, or is an -equivalent [*note EQUATION::.] . - - is the name of the dependent variable, is the name of -the independent variable. - - A differential in is expressed using the [*note DF::.] -operator. Note that in most cases you must declare explicitly to -depend of using a [*note DEPEND::.] declaration - otherwise the -derivative might be evaluated to zero on input to ODESOLVE . - - The returned value is a list containing the equation giving the -general solution of the ODE (for simultaneous equations this will be a -list of equations eventually). It will contain occurrences of the -operator ARBCONST for the arbitrary constants in the general solution. -The arguments of ARBCONST should be new. A counter !!ARBCONST is used -to arrange this. - -examples: - - ____________________________________________________________ - - depend y,x; - - % A first-order linear equation, with an initial condition - - ode:=df(y,x) + y * sin x/cos x - 1/cos x$ - - odesolve(ode,y,x); - - {y=arbconst(1)*cos(x) + sin(x)} - - ____________________________________________________________ - - -File: redhelp, Node: ONE_OF, Next: PART, Prev: ODESOLVE, Up: Algebraic Operators section - - ONE_OF type - - The operator ONE_OF is used to represent an indefinite choice of one -element from a finite set of objects. - -examples: - - ____________________________________________________________ - - x=one_of{1,2,5} - ____________________________________________________________ - this equation encodes that x can take one of the values 1,2 or 5 - ____________________________________________________________ - - ____________________________________________________________ - - REDUCE generates a ONE_OF form in cases when an implicit ROOT_OF -expression could be converted to an explicit solution set. A ONE_OF -form can be converted to a SOLVE solution using [*note EXPAND_CASES::.] -. See [*note ROOT_OF::.] . - - -File: redhelp, Node: PART, Next: PF, Prev: ONE_OF, Up: Algebraic Operators section - - PART operator - - The operator PART permits the extraction of various parts or -operators of expressions and [*note LIST::.] S . - -syntax: - - PART (,*) - - can be any valid REDUCE expression or a list, integer -may be an expression that evaluates to a positive or negative integer -or 0. A positive integer picks up the n th term, counting from the -first term toward the end. A negative integer n picks up the n th term, -counting from the back toward the front. The integer 0 picks up the -operator (which is LIST when the expression is a [*note LIST::.] ). - -examples: - - ____________________________________________________________ - - part((x + y)**5,4); - - 2 3 - 10*X *Y - - - part((x + y)**5,4,2); - - 2 - X - - - part((x + y)**5,4,2,1); - - X - - - part((x + y)**5,0); - - PLUS - - - part((x + y)**5,-5); - - 4 - 5*X *Y - - - part((x + y)**5,4) := sin(x); - - 5 4 3 2 4 5 - X + 5*X *Y + 10*X *Y + SIN(X) + 5*X*Y + Y - - - alist := {x,y,{aa,bb,cc},x**2*sqrt(y)}; - - - 2 - ALIST := {X,Y,{AA,BB,CC},SQRT(Y)*X } - - - part(alist,3,2); - - BB - - - part(alist,4,0); - - TIMES - - ____________________________________________________________ - Additional integer arguments after the first one examine the terms -recursively, as shown above. In the third line, the fourth term is -picked from the original polynomial, 10x^2y^3, then the second term -from that, x^2, and finally the first component, x. If an integer's -absolute value is too large for the appropriate expression, a message -is given. - - PART works on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind the -current switch settings. It is important to realize that the switch -settings change the operation of PART . [*note PRI::.] must be on when -PART is used. - - When PART is used on a polynomial expression that has minus signs, -the + is always returned as the top-level operator. The minus is found -as a unary operator attached to the negative term. - - PART can also be used to change the relevant part of the expression -or list as shown in the sixth example line. The PART operator returns -the changed expression, though original expression is not changed. You -can also use PART to change the operator. - - -File: redhelp, Node: PF, Next: PROD, Prev: PART, Up: Algebraic Operators section - - PF operator - -syntax: - - pf(,) - - PF transforms into a [*note LIST::.] of partial fraction -s with respect to the main variable, . PF does a complete -partial fraction decomposition, and as the algorithms used are fairly -unsophisticated (factorization and the extended Euclidean algorithm), -the code may be unacceptably slow in complicated cases. - -examples: - - ____________________________________________________________ - - pf(2/((x+1)^2*(x+2)),x); - - 2 -2 2 - {-----,-----,------------} - X + 2 X + 1 2 - X + 2*X + 1 - - - off exp; - - pf(2/((x+1)^2*(x+2)),x); - - - 2 - 2 2 - {-----,-----,--------} - X + 2 X + 1 2 - (X + 1) - - - for each j in ws sum j; - - 2 - ---------------- - 2 - ( + 2)*(X + 1) - - ____________________________________________________________ - - If you want the denominators in factored form, turn [*note EXP::.] -off, as shown in the second example above. As shown in the final -example, the [*note FOR::.] EACH construct can be used to recombine -the terms. Alternatively, one can use the operations on lists to -extract any desired term. - - -File: redhelp, Node: PROD, Next: REDUCT, Prev: PF, Up: Algebraic Operators section - - PROD operator - - The operator PROD returns the indefinite or definite product of a -given expression. - -syntax: - - PROD (,[, [, ]]) - - where is the expression to be multiplied, is the control -variable (a [*note KERNEL::.] ), and and uplim are the -optional lower and upper limits. If is not supplied the upper -limit is taken as . The Gosper algorithm is used. If there is no -closed form solution, the operator returns the input unchanged. - -examples: - - ____________________________________________________________ - - prod(k/(k-2),k); - - k*( - k + 1) - - ____________________________________________________________ - - -File: redhelp, Node: REDUCT, Next: REPART, Prev: PROD, Up: Algebraic Operators section - - REDUCT operator - - The REDUCT operator returns the remainder of its expression after the -leading term with respect to the kernel in the second argument is -removed. - -syntax: - - REDUCT (,) - - is ordinarily a polynomial. If [*note RATARG::.] is on, -a rational expression may also be used, otherwise an error results. - must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - reduct((x+y)**3,x); - - 2 2 - Y*(3*X + 3*X*Y + Y ) - - - reduct(x + sin(x)**3,sin(x)); - - X - - - reduct(x + sin(x)**3,y); - - 0 - - ____________________________________________________________ - If the expression does not contain the kernel, REDUCT returns 0. - - -File: redhelp, Node: REPART, Next: RESULTANT, Prev: REDUCT, Up: Algebraic Operators section - - REPART operator - -syntax: - - REPART () or REPART - - This operator returns the real part of an expression, if that -argument has an numerical value. A non-numerical argument is returned -as an expression in the operators REPART and [*note IMPART::.] . - -examples: - - ____________________________________________________________ - - repart(1+i); - - 1 - - - repart(a+i*b); - - REPART(A) - IMPART(B) - - ____________________________________________________________ - - -File: redhelp, Node: RESULTANT, Next: RHS, Prev: REPART, Up: Algebraic Operators section - - RESULTANT operator - - The RESULTANT operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials have -a root in common. - -syntax: - - RESULTANT (,,) - - must be a polynomial containing ; -must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - resultant(x**2 + 2*x + 1,x+1,x); - - 0 - - - resultant(x**2 + 2*x + 1,x-3,x); - - 16 - - - resultant(z**3 + z**2 + 5*z + 5, - z**4 - 6*z**3 + 16*z**2 - 30*z + 55, - z); - - - 0 - - - resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); - - - 6 5 4 3 2 - Y + 18*Y + 120*Y + 360*Y + 480*Y + 288*Y + 64 - - ____________________________________________________________ - The resultant is the determinant of the Sylvester matrix, formed -from the coefficients of the two polynomials in the following way: - - Given two polynomials: - - ____________________________________________________________ - - n n-1 - a x + a1 x + ... + an - - ____________________________________________________________ - and - - ____________________________________________________________ - - m m-1 - b x + b1 x + ... + bm - - ____________________________________________________________ - form the (m+n)x(m+n-1) Sylvester matrix by the following means: - - ____________________________________________________________ - - 0.......0 a a1 .......... an - 0....0 a a1 .......... an 0 - . . . . - a0 a1 .......... an 0.......0 - 0.......0 b b1 .......... bm - 0....0 b b1 .......... bm 0 - . . . . - b b1 .......... bm 0.......0 - - ____________________________________________________________ - If the determinant of this matrix is 0, the two polynomials have a -common root. Finding the resultant of large expressions is -time-consuming, due to the time needed to find a large determinant. - - The sign conventions RESULTANT uses are those given in the article, -"Computing in Algebraic Extensions," by R. Loos, appearing in , 2nd ed., edited by B. -Buchberger, G.E. Collins and R. Loos, and published by Springer-Verlag, -1983. These are: - - ____________________________________________________________ - - resultant(p(x),q(x),x) = (-1)^{deg p(x)*deg q(x)} * resultant(q(x),p(x),x), - resultant(a,p(x),x) = a^{deg p(x)}, - resultant(a,b,x) = 1 - ____________________________________________________________ - where p(x) and q(x) are polynomials which have x as a variable, and -a and b are free of x. - - Error messages are given if RESULTANT is given a non-polynomial -expression, or a non-kernel variable. - - -File: redhelp, Node: RHS, Next: ROOT_OF, Prev: RESULTANT, Up: Algebraic Operators section - - RHS operator - - The RHS operator returns the right-hand side of an [*note -EQUATION::.] , such as those returned in a [*note LIST::.] by [*note -SOLVE::.] . - -syntax: - - RHS () or RHS - - must be an equation of the form left-hand side = -right-hand side. - -examples: - - ____________________________________________________________ - - roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); - - - 2 - SQRT(24*Y + 60*Y + 25) + 6*Y + 5 - ROOTS := {X= - ---------------------------------, - 2 - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - X= ---------------------------------} - 2 - - - root1 := rhs first roots; - - 2 - SQRT(24*Y + 60*Y + 25) + 6*Y + 5 - ROOT1 := - --------------------------------- - 2 - - - root2 := rhs second roots; - - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - ROOT2 := ---------------------------------- - 2 - - ____________________________________________________________ - An error message is given if RHS is applied to something other than -an equation. - - -File: redhelp, Node: ROOT_OF, Next: SELECT, Prev: RHS, Up: Algebraic Operators section - - ROOT_OF operator - - When the operator [*note SOLVE::.] is unable to find an explicit -solution or if that solution would be too complicated, the result is -presented as formal root expression using the internal operator ROOT_OF -and a new local variable. An expression with a top level ROOT_OF is -implicitly a list with an unknown number of elements since we can't -always know how many solutions an equation has. If a substitution is -made into such an expression, closed form solutions can emerge. If this -occurs, the ROOT_OF construct is replaced by an operator [*note -ONE_OF::.] . At this point it is of course possible to transform the -result if the original SOLVE operator expression into a standard SOLVE -solution. To effect this, the operator [*note EXPAND_CASES::.] can be -used. - -examples: - - ____________________________________________________________ - - solve(a*x^7-x^2+1,x); - - 7 2 - {x=root_of(a*x_ - x_ + 1,x_)} - - - sub(a=0,ws); - - {x=one_of(1,-1)} - - - expand_cases ws; - - x=1,x=-1 - - ____________________________________________________________ - The components of ROOT_OF and ONE_OF expressions can be processed as -usual with operators [*note ARGLENGTH::.] and [*note PART::.] . A -higher power of a ROOT_OF expression with a polynomial as first -argument is simplified by using the polynomial as a side relation. - - -File: redhelp, Node: SELECT, Next: SHOWRULES, Prev: ROOT_OF, Up: Algebraic Operators section - - SELECT operator - - The SELECT operator extracts from a list or from the arguments of an -n-ary operator elements corresponding to a boolean predicate. The -predicate pattern can be a unary procedure, an operator or an algebraic -expression with one [*note Free Variable::.] . - -syntax: - - SELECT (,) - - is a [*note LIST::.] . - - is the name of an operator for a single argument: the -operator is evaluated once with each element of as its single -argument, - - or an algebraic expression with exactly one [*note Free Variable::.] -, that is a variable preceded by the tilde symbol: the expression is -evaluated for each element of where the element is -substituted for the free variable, - - or a replacement [*note RULE::.] of the form - -syntax: - - VAR => REP - - where is a variable (a without subscript) and -is an expression which contains . Here REP is evaluated for each -element of where the element is substituted for VAR . VAR may -be optionally preceded by a tilde. - - The rule form for is needed when more than one free -variable occurs. The evaluation result of is interpreted as -[*note boolean value::.] corresponding to the conventions of REDUCE. -The result value is built with the leading operator of the input -expression. - -examples: - - ____________________________________________________________ - - select( ~w>0 , {1,-1,2,-3,3}) - - {1,2,3} - - - q:=(part((x+y)^5,0):=list) - - select(evenp deg(~w,y),q); - - 5 3 2 4 - {x ,10*x *y ,5*x*y } - - - select(evenp deg(~w,x),2x^2+3x^3+4x^4); - - - 2 4 - 2x +4x - - ____________________________________________________________ - - -File: redhelp, Node: SHOWRULES, Next: SOLVE, Prev: SELECT, Up: Algebraic Operators section - - SHOWRULES operator - -syntax: - - SHOWRULES () or SHOWRULES - - SHOWRULES returns in [*note RULE::.] -LIST form any [*note -OPERATOR::.] rules associated with its argument. - -examples: - - ____________________________________________________________ - - showrules log; - - {LOG(E) => 1, - LOG(1) => 0, - ~X - LOG(E ) => ~X, - 1 - DF(LOG(~X),~X) => --} - ~X - - ____________________________________________________________ - Such rules can then be manipulated further as with any [*note -LIST::.] . For example RHS FIRST WS; has the value 1. - - An operator may have properties that cannot be displayed in such a -form, such as the fact it is an [*note ODD::.] function, or has a -definition defined as a procedure. - - -File: redhelp, Node: SOLVE, Next: SORT, Prev: SHOWRULES, Up: Algebraic Operators section - - SOLVE operator - - The SOLVE operator solves a single algebraic [*note EQUATION::.] or a -system of simultaneous equations. - -syntax: - - SOLVE ( [ , ]) or - - SOLVE (,... [ , ,...] ) - - If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. is either a -scalar expression or an [*note EQUATION::.] . When more than one -expression is given, the [*note LIST::.] of expressions is surrounded -by curly braces. The optional list of [*note KERNEL::.] s follows, -also in curly braces. - -examples: - - ____________________________________________________________ - - sss := solve(x^2 + 7); - - Unknown: X - SSS := {X= - SQRT(7)*I, - X=SQRT(7)*I} - - - rhs first sss; - - - SQRT(7)*I - - - solve(sin(x^2*y),y); - - 2*ARBINT(1)*PI - {Y=--------------- - 2 - X - PI*(2*ARBINT(1) + 1) - Y=--------------------} - 2 - X - - - off allbranch; - - solve(sin(x**2*y),y); - - {Y=0} - - - solve({3x + 5y = -4,2*x + y = -10},{x,y}); - - - - 22 46 - {{X= - --,Y=--}} - 7 7 - - - solve({x + a*y + z,2x + 5},{x,y}); - - - - 5 2*Z - 5 - {{X= - -,Y= - -------}} - 2 2*A - - - ab := (x+2)^2*(x^6 + 17x + 1); - - - 8 7 6 3 2 - AB := X + 4*X + 4*X + 17*X + 69*X + 72*X + 4 - - - www := solve(ab,x); - - {X=ROOT F(X6 + 17*X + 1),X=-2} - O - - - root_multiplicities; - - {1,2} - - ____________________________________________________________ - Results of the SOLVE operator are returned as [*note EQUATION::.] S -in a [*note LIST::.] . You can use the usual list access methods -([*note FIRST::.] , [*note SECOND::.] , [*note THIRD::.] , [*note -REST::.] and [*note PART::.] ) to extract the desired equation, and -then use the operators [*note RHS::.] and [*note LHS::.] to access the -right-hand or left-hand expression of the equation. When SOLVE is -unable to solve an equation, it returns the unsolved part as the -argument of ROOT_OF , with the variable renamed to avoid confusion, as -shown in the last example above. - - For one equation, SOLVE uses square-free factorization, roots of -unity, and the known inverses of the [*note LOG::.] , [*note SIN::.] , -[*note COS::.] , [*note ACOS::.] , [*note ASIN::.] , and exponentiation -operators. The quadratic, cubic and quartic formulas are used if -necessary, but these are applied only when the switch [*note -FULLROOTS::.] is set on; otherwise or when no closed form is available -the result is returned as [*note ROOT_OF::.] expression. The switch -[*note TRIGFORM::.] determines which type of cubic and quartic formula -is used. The multiplicity of each solution is given in a list as the -system variable [*note ROOT_MULTIPLICITIES::.] . For systems of -simultaneous linear equations, matrix inversion is used. For nonlinear -systems, the Groebner basis method is used. - - Linear equation system solving is influenced by the switch [*note -CRAMER::.] . - - Singular systems can be solved when the switch [*note -SOLVESINGULAR::.] is on, which is the default setting. An empty list is -returned the system of equations is inconsistent. For a linear -inconsistent system with parameters the variable [*note -requirements::.] constraints conditions for the system to become -consistent. - - For a solvable linear and polynomial system with parameters the -variable [*note assumptions::.] contains a list side relations for the -parameters: the solution is valid only as long as none of these -expressions is zero. - - If the switch [*note VAROPT::.] is on (default), the system -rearranges the variable sequence for minimal computation time. Without -VAROPT the user supplied variable sequence is maintained. - - If the solution has free variables (dimension of the solution is -greater than zero), these are represented by [*note ARBCOMPLEX::.] -expressions as long as the switch [*note ARBVARS::.] is on (default). -Without ARBVARS no explicit equations are generated for free variables. - -related: - - [*note ALLBRANCH::.] switch - - [*note ARBVARS::.] switch - - [*note assumptions::.] variable - - [*note FULLROOTS::.] switch - - [*note requirements::.] variable - - [*note ROOTS::.] operator - - [*note ROOT_OF::.] operator - - [*note TRIGFORM::.] switch - - [*note VAROPT::.] switch - - -File: redhelp, Node: SORT, Next: STRUCTR, Prev: SOLVE, Up: Algebraic Operators section - - SORT operator - - The SORT operator sorts the elements of a list according to an -arbitrary comparison operator. - -syntax: - - SORT (,) - - is a [*note LIST::.] of algebraic expressions. is a -comparison operator which defines a partial ordering among the members -of . may be one of the builtin comparison operators like < -([*note LESSP::.] ), <= ([*note LEQ::.] ) etc., or may be the -name of a comparison procedure. Such a procedure has two arguments, -and it returns [*note TRUE::.] if the first argument ranges before the -second one, and 0 or [*note NIL::.] otherwise. The result of SORT is a -new list which contains the elements of in a sequence -corresponding to . - -examples: - - ____________________________________________________________ - - procedure ce(a,b); - - if evenp a and not evenp b then 1 else 0; - - for i:=1:10 collect random(50)$ - - sort(ws,>=); - - {41,38,33,30,28,25,20,17,8,5} - - - sort(ws,<); - - {5,8,17,20,25,28,30,33,38,41} - - - sort(ws,ce); - - {8,20,28,30,38,5,17,25,33,41} - - - procedure cd(a,b); - - if deg(a,x)>deg(b,x) then 1 else - - if deg(a,x)deg(b,y) then 1 else 0; - - sort({x^2,y^2,x*y},cd); - - 2 2 - {x ,x*y,y } - - ____________________________________________________________ - - -File: redhelp, Node: STRUCTR, Next: SUB, Prev: SORT, Up: Algebraic Operators section - - STRUCTR operator - - The STRUCTR operator breaks its argument expression into named -subexpressions. - -syntax: - - STRUCTR ( [,[, ...]]) - - may be any valid REDUCE scalar expression. - may be any valid REDUCE IDENTIFIER . The first identifier -is the stem for subexpression names, the second is the name to be -assigned to the structured expression. - -examples: - - ____________________________________________________________ - - structr(sqrt(x**2 + 2*x) + sin(x**2*z)); - - - ANS1 + ANS2 - where - 2 - ANS2 := SIN(X *Z) - 1/2 - ANS1 := ((X + 2)*X) - - - ans3; - - ANS3 - - - on fort; - - structr((x+1)**5 + tan(x*y*z),var,aa); - - - VAR1=TAN(X*Y*Z) - AA=VAR1+X**5+5.*X**4+10.*X**3+10.X**2+5.*X+1 - - ____________________________________________________________ - The second argument to STRUCTR is optional. If it is not given, the -default stem ANS is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does not -store the names and their values unless the switch [*note -SAVESTRUCTR::.] is on. - - If a third argument is given, the structured expression as a whole -is named by this argument, when [*note FORT::.] is on. The expression -is not stored under this name. You can send these structured Fortran -expressions to a file with the OUT command. - - -File: redhelp, Node: SUB, Next: SUM, Prev: STRUCTR, Up: Algebraic Operators section - - SUB operator - - The SUB operator substitutes a new expression for a kernel in an -expression. - -syntax: - - SUB (= ,= *, - ) or - - SUB (= *, = EXPRESSION -,) - - must be a [*note KERNEL::.] , can be any REDUCE -scalar expression. - -examples: - - ____________________________________________________________ - - sub(x=3,y=4,(x+y)**3); - - 343 - - - x; - - X - - - sub({cos=sin,sin=cos},cos a+sin b} - - - COS(B) + SIN(A) - - ____________________________________________________________ - Note in the second example that operators can be replaced using the -SUB operator. - - -File: redhelp, Node: SUM, Next: WS, Prev: SUB, Up: Algebraic Operators section - - SUM operator - - The operator SUM returns the indefinite or definite summation of a -given expression. - -syntax: - - SUM (,[, [, ]]) - - where is the expression to be added, is the control -variable (a [*note KERNEL::.] ), and and are the -optional lower and upper limits. If is not supplied the upper -limit is taken as . The Gosper algorithm is used. If there is no -closed form solution, the operator returns the input unchanged. - -examples: - - ____________________________________________________________ - - sum(4n**3,n); - - 2 2 - n *(n + 2*n + 1) - - - sum(2a+2k*r,k,0,n-1); - - n*(2*a + n*r - r) - - ____________________________________________________________ - - -File: redhelp, Node: WS, Prev: SUM, Up: Algebraic Operators section - - WS operator - - The WS operator alone returns the last result; WS with a number -argument returns the results of the REDUCE statement executed after -that numbered prompt. - -syntax: - - WS or WS () - - must be an integer between 1 and the current REDUCE prompt -number. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - (In the following examples, unlike most others, the numbered prompt -is shown.) - ____________________________________________________________ - - - 1: df(sin y,y); - - COS(Y) - - - 2: ws^2; - - 2 - COS(Y) - - - 3: df(ws 1,y); - - -SIN(Y) - - ____________________________________________________________ - - WS and WS ( ) can be used anywhere the expression they -stand for can be used. Calling a number for which no result was -produced, such as a switch setting, will give an error message. - - The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you do -a differentiation, producing a result expression, then change several -switches, the operator WS; returns the results of the differentiation. -The current workspace (WS ) can also be used inside files, though the -numbered workspace contains only the IN command that input the file. - - There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second stores -parsed input, ready to execute and accessible by [*note INPUT::.] . The -third stores results, when they are produced by statements, which are -accessible by the WS < n> operator. If your session is very long, -storage space begins to fill up with these expressions, so it is a good -idea to end the session once in a while, saving needed expressions to -files with the [*note SAVEAS::.] and [*note OUT::.] commands. - - An error message is given if a reference number has not yet been -used. - - -File: redhelp, Node: Algebraic Operators section, Next: Declarations section, Prev: General Commands section, Up: Top - - Algebraic Operators section - -* Menu: - -* APPEND:: operator -* ARBINT:: operator -* ARBCOMPLEX:: operator -* ARGLENGTH:: operator -* COEFF:: operator -* COEFFN:: operator -* CONJ:: operator -* CONTINUED_FRACTION:: operator -* DECOMPOSE:: operator -* DEG:: operator -* DEN:: operator -* DF:: operator -* EXPAND_CASES:: operator -* EXPREAD:: operator -* FACTORIZE:: operator -* HYPOT:: operator -* IMPART:: operator -* INT:: operator -* INTERPOL:: operator -* LCOF:: operator -* LENGTH:: operator -* LHS:: operator -* LIMIT:: operator -* LPOWER:: operator -* LTERM:: operator -* MAINVAR:: operator -* MAP:: operator -* MKID:: command -* NPRIMITIVE:: operator -* NUM:: operator -* ODESOLVE:: operator -* ONE_OF:: type -* PART:: operator -* PF:: operator -* PROD:: operator -* REDUCT:: operator -* REPART:: operator -* RESULTANT:: operator -* RHS:: operator -* ROOT_OF:: operator -* SELECT:: operator -* SHOWRULES:: operator -* SOLVE:: operator -* SORT:: operator -* STRUCTR:: operator -* SUB:: operator -* SUM:: operator -* WS:: operator - - -File: redhelp, Node: ALGEBRAIC, Next: ANTISYMMETRIC, Up: Declarations section - - ALGEBRAIC command - - The ALGEBRAIC command changes REDUCE's mode of operation to -algebraic. When ALGEBRAIC is used as an operator (with an argument -inside parentheses) that argument is evaluated in algebraic mode, but -REDUCE's mode is not changed. - -examples: - - ____________________________________________________________ - - algebraic; - - symbolic; - - NIL - - - algebraic(x**2); - - 2 - X - - - x**2; - - ***** The symbol X has no value. - - ____________________________________________________________ - REDUCE's symbolic mode does not know about most algebraic commands. -Error messages in this mode may also depend on the particular Lisp used -for the REDUCE implementation. - - -File: redhelp, Node: ANTISYMMETRIC, Next: ARRAY, Prev: ALGEBRAIC, Up: Declarations section - - ANTISYMMETRIC declaration - - When an operator is declared ANTISYMMETRIC , its arguments are -reordered to conform to the internal ordering of the system. If an odd -number of argument interchanges are required to do this ordering, the -sign of the expression is changed. - -syntax: - - ANTISYMMETRIC , * - - is an identifier that has been declared as an operator. - -examples: - - ____________________________________________________________ - - operator m,n; - - antisymmetric m,n; - - m(x,n(1,2)); - - - M( - N(2,1),X) - - - operator p; - - antisymmetric p; - - p(a,b,c); - - P(A,B,C) - - - p(b,a,c); - - - P(A,B,C) - - ____________________________________________________________ - If has not been declared an operator, the flag -ANTISYMMETRIC is still attached to it. When is -subsequently used as an operator, the message DECLARE -OPERATOR? (Y OR N) is printed. If the user replies Y , the -antisymmetric property of the operator is used. - - Note in the first example, identifiers are customarily ordered -alphabetically, while numbers are ordered from largest to smallest. -The operators may have any desired number of arguments (less than 128). - - -File: redhelp, Node: ARRAY, Next: CLEAR, Prev: ANTISYMMETRIC, Up: Declarations section - - ARRAY declaration - - The ARRAY declaration declares a list of identifiers to be of type -ARRAY , and sets all their entries to 0. - -syntax: - - ARRAY () , ()* - - may be any valid REDUCE identifier. If the identifier -was already an array, a warning message is given that the array has been -redefined. are of form ,*. - -examples: - - ____________________________________________________________ - - array a(2,5),b(3,3,3),c(200); - - array a(3,5); - - *** ARRAY A REDEFINED - - - a(3,4); - - 0 - - - length a; - - 4,6 - - ____________________________________________________________ - Arrays are always global, even if defined inside a procedure or block -statement. Their status as an array remains until the variable is reset -by [*note CLEAR::.] . Arrays may not have the same names as operators, -procedures or scalar variables. - - Array elements are referred to by the usual notation: A(I,J) returns -the jth element of the ith row. The [*note assign::.] ment operator := -is used to put values into the array. Arrays as a whole cannot be -subject to assignment by [*note LET::.] or := ; the assignment operator -:= is only valid for individual elements. - - When you use [*note LET::.] on an array element, the contents of that -element become the argument to LET . Thus, if the element contains a -number or some other expression that is not a valid argument for this -command, you get an error message. If the element contains an -identifier, the identifier has the substitution rule attached to it -globally. The same behavior occurs with [*note CLEAR::.] . If the array -element contains an identifier or simple_expression, it is cleared. Do - use CLEAR to try to set an array element to 0. Because of the -side effects of either LET or CLEAR , it is unwise to apply either of -these to array elements. - - Array indices always start with 0, so that the declaration ARRAY A(5) -sets aside 6 units of space, indexed from 0 through 5, and initializes -them to 0. The [*note LENGTH::.] command returns a list of the true -number of elements in each dimension. - - -File: redhelp, Node: CLEAR, Next: CLEARRULES, Prev: ARRAY, Up: Declarations section - - CLEAR command - - The CLEAR command is used to remove assignments or remove -substitution rules from any expression. - -syntax: - - CLEAR ,+ or - - CLEAR - - can be any SCALAR , [*note MATRIX::.] , or [*note -ARRAY::.] variable or [*note PROCEDURE::.] name. -can be any general or specific [*note LET::.] statement (see below in -Comments). - -examples: - - ____________________________________________________________ - - array a(2,3); - - a(2,2) := 15; - - A(2,2) := 15 - - - clear a; - - a(2,2); - - Declare A operator? (Y or N) - - - let x = y + z; - - sin(x); - - SIN(Y + Z) - - - clear x; - - sin(x); - - SIN(X) - - - let x**5 = 7; - - clear x; - - x**5; - - 7 - - - clear x**5; - - x**5; - - 5 - X - - ____________________________________________________________ - Although it is not a good idea, operators of the same name but taking -different numbers of arguments can be defined. Using a CLEAR statement -on any of these operators clears every one with the same name, even if -the number of arguments is different. - - The CLEAR command is used to "forget" matrices, arrays, operators -and scalar variables, returning their identifiers to the pristine state -to be used for other purposes. When CLEAR is applied to array elements, -the contents of the array element becomes the argument for CLEAR . -Thus, you get an error message if the element contains a number, or -some other expression that is not a legal argument to CLEAR . If the -element contains an identifier, it is cleared. When clear is applied -to matrix elements, an error message is returned if the element -evaluates to a number, otherwise there is no effect. Do not try to use -CLEAR to set array or matrix elements to 0. You will not be pleased -with the results. - - If you are trying to clear power or product substitution rules made -with either [*note LET::.] or [*note FORALL::.] ...LET , you must -reproduce the rule, exactly as you typed it with the same arguments, up -to but not including the equal sign, using the word CLEAR instead of -the word LET . This is shown in the last example. Any other type of LET -or FORALL ...LET substitution can be cleared with just the variable -or operator name. [*note MATCH::.] behaves the same as [*note LET::.] -in this situation. There is a more complicated example under [*note -FORALL::.] . - - -File: redhelp, Node: CLEARRULES, Next: DEFINE, Prev: CLEAR, Up: Declarations section - - CLEARRULES command - -syntax: - - CLEARRULES ,+ - - The operator CLEARRULES is used to remove previously defined [*note -RULE::.] lists from the system. can be an explicit rule list, -or evaluate to a rule list. - -examples: - - ____________________________________________________________ - - trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ - - let trig1; - cos(a)*cos(b); - - COS(A - B) + COS(A + B) - ----------------------- - 2 - - - clearrules trig1; - cos(a)*cos(b); - - COS(A)*COS(B) - - ____________________________________________________________ - - -File: redhelp, Node: DEFINE, Next: DEPEND, Prev: CLEARRULES, Up: Declarations section - - DEFINE command - - The command DEFINE allows you to supply a new name for an identifier -or replace it by any valid REDUCE expression. - -syntax: - - DEFINE = , = * - - is any valid REDUCE identifier, can be a -number, an identifier, an operator, a reserved word, or an expression. - -examples: - - ____________________________________________________________ - - - define is= :=, xx=y+z; - - - a is 10; - - A := 10 - - - - xx**2; - - 2 2 - Y + 2*Y*Z + Z - - - - xx := 10; - - Y + Z := 10 - - ____________________________________________________________ - The renaming is done at the input level, and therefore takes -precedence over any other replacement or substitution declared for the -same identifier. It remains in effect until the end of the REDUCE -session. Be careful with it, since you cannot easily undo it without -ending the session. - - -File: redhelp, Node: DEPEND, Next: EVEN, Prev: DEFINE, Up: Declarations section - - DEPEND declaration - - DEPEND declares that its first argument depends on the rest of its -arguments. - -syntax: - - DEPEND , + - - must be a legal variable name or a prefix operator (see -[*note KERNEL::.] ). - -examples: - - ____________________________________________________________ - - - depend y,x; - - - df(y**2,x); - - 2*DF(Y,X)*Y - - - - depend z,cos(x),y; - - - df(sin(z),cos(x)); - - COS(Z)*DF(Z,COS(X)) - - - - df(z**2,x); - - 2*DF(Z,X)*Z - - - - nodepend z,y; - - - df(z**2,x); - - 2*DF(Z,X)*Z - - - - cc := df(y**2,x); - - CC := 2*DF(Y,X)*Y - - - - y := tan x; - - Y := TAN(X); - - - - cc; - - 2 - 2*TAN(X)*(TAN(X) + 1) - - ____________________________________________________________ - Dependencies can be removed by using the declaration [*note -NODEPEND::.] . The differentiation operator uses this information, as -shown in the examples above. Linear operators also use knowledge of -dependencies (see [*note LINEAR::.] ). Note that dependencies can be -nested: Having declared y to depend on x, and z to depend on y, we see -that the chain rule was applied to the derivative of a function of z -with respect to x. If the explicit function of the dependency is later -entered into the system, terms with DF(Y,X) , for example, are expanded -when they are displayed again, as shown in the last example. The -boolean operator [*note FREEOF::.] allows you to check the dependency -between two algebraic objects. - - -File: redhelp, Node: EVEN, Next: FACTOR declaration, Prev: DEPEND, Up: Declarations section - - EVEN declaration - -syntax: - - EVEN ,* - - This declaration is used to declare an operator even in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. - -examples: - - ____________________________________________________________ - - even f; - - f(-a) - - F(A) - - - f(-a,-b) - - F(A,-B) - - ____________________________________________________________ - - -File: redhelp, Node: FACTOR declaration, Next: FORALL, Prev: EVEN, Up: Declarations section - - FACTOR declaration - - When a kernel is declared by FACTOR , all terms involving fixed -powers of that kernel are printed as a product of the fixed powers and -the rest of the terms. - -syntax: - - FACTOR , * - - must be a [*note KERNEL::.] or a [*note LIST::.] of KERNEL -s. - -examples: - - ____________________________________________________________ - - a := (x + y + z)**2; - - 2 2 2 - A := X + 2*X*Y + 2*X*Z + Y + 2*Y*Z + Z - - - factor y; - - a; - - 2 2 2 - Y + 2*Y*(X + Z) + X + 2*X*Z + Z - - - factor sin(x); - - c := df(sin(x)**4*x**2*z,x); - - 4 3 2 - C := 2*SIN(X) *X*Z + 4*SIN(X) *COS(X)*X *Z - - - remfac sin(x); - - c; - - 3 - 2*SIN(X) *X*Z*(2*COS(X)*X + SIN(X)) - - ____________________________________________________________ - Use the FACTOR declaration to display variables of interest so that -you can see their powers more clearly, as shown in the example. Remove -this special treatment with the declaration [*note REMFAC::.] . The -FACTOR declaration is only effective when the switch [*note PRI::.] is -on. - - The FACTOR declaration is not a factoring command; to factor -expressions use the [*note FACTOR::.] switch or the [*note -FACTORIZE::.] command. - - The FACTOR declaration is helpful in such cases as Taylor polynomials -where the explicit powers of the variable are expected at the top -level, not buried in various factored forms. - - -File: redhelp, Node: FORALL, Next: INFIX, Prev: FACTOR declaration, Up: Declarations section - - FORALL command - - The FORALL or (preferably) FOR ALL command is used as a modifier for -[*note LET::.] statements, indicating the universal applicability of -the rule, with possible qualifications. - -syntax: - - FOR ALL ,* LET - - or - - FOR ALL ,* SUCH THAT LET - - may be any valid REDUCE identifier, can -be an operator, a product or power, or a group or block statement. - must be a logical or comparison operator returning true or -false. - -examples: - - ____________________________________________________________ - - for all x let f(x) = sin(x**2); - - - - Declare F operator ? (Y or N) - - - y - - f(a); - - 2 - SIN(A ) - - - operator pos; - - for all x such that x>=0 let pos(x) = sqrt(x + 1); - - pos(5); - - SQRT(6) - - - pos(-5); - - POS(-5) - - - clear pos; - - pos(5); - - Declare POS operator ? (Y or N) - - - for all a such that numberp a let x**a = 1; - - x**4; - - 1 - - - clear x**a; - - *** X**A not found - - - for all a clear x**a; - - x**4; - - 1 - - - for all a such that numberp a clear x**a; - - x**4; - - 4 - X - - ____________________________________________________________ - Substitution rules defined by FOR ALL or FOR ALL ...SUCH THAT -commands that involve products or powers are cleared by reproducing the -command, with exactly the same variable names used, up to but not -including the equal sign, with [*note CLEAR::.] replacing LET , as -shown in the last example. Other substitutions involving variables or -operator names can be cleared with just the name, like any other -variable. - - The [*note MATCH::.] command can also be used in product and power -substitutions. The syntax of its use and clearing is exactly like LET -. A MATCH substitution only replaces the term if it is exactly like the -pattern, for example MATCH X**5 = 1 replaces only terms of X**5 and not -terms of higher powers. - - It is easier to declare your potential operator before defining the -FOR ALL rule, since the system will ask you to declare it an operator -anyway. Names of declared arrays or matrices or scalar variables are -invalid as operator names, to avoid ambiguity. Either FOR ALL ...LET -statements or procedures are often used to define operators. One -difference is that procedures implement "call by value" meaning that -assignments involving their formal parameters do not change the calling -variables that replace them. If you use assignment statements on the -formal parameters in a FOR ALL ...LET statement, the effects are seen -in the calling variables. Be careful not to redefine a system operator -unless you mean it: the statement FOR ALL X LET SIN(X)=0; has exactly -that effect, and the usual definition for sin(x) has been lost for the -remainder of the REDUCE session. - - -File: redhelp, Node: INFIX, Next: INTEGER, Prev: FORALL, Up: Declarations section - - INFIX declaration - - INFIX declares identifiers to be infix operators. - -syntax: - - INFIX ,* - - can be any valid REDUCE identifier, which has not -already been declared an operator, array or matrix, and is not reserved -by the system. - -examples: - - ____________________________________________________________ - - infix aa; - - for all x,y let aa(x,y) = cos(x)*cos(y) - sin(x)*sin(y); - - x aa y; - - COS(X)*COS(Y) - SIN(X)*SIN(Y) - - - pi/3 aa pi/2; - - SQRT(3) - - ------- - 2 - - - aa(pi,pi); - - 1 - - ____________________________________________________________ - A [*note LET::.] statement must be used to attach functionality to -the operator. Note that the operator is defined in prefix form in the -LET statement. After its definition, the operator may be used in -either prefix or infix mode. The above operator aa finds the cosine of -the sum of two angles by the formula - - cos(x+y) = cos(x)*cos(y) - sin(x)*sin(y). - - Precedence may be attached to infix operators with the [*note -PRECEDENCE::.] declaration. - - User-defined infix operators may be used in prefix form. If they are -used in infix form, a space must be left on each side of the operator -to avoid ambiguity. Infix operators are always binary. - - -File: redhelp, Node: INTEGER, Next: KORDER, Prev: INFIX, Up: Declarations section - - INTEGER declaration - - The INTEGER declaration must be made immediately after a [*note -BEGIN::.] (or other variable declaration such as [*note REAL::.] and -[*note SCALAR::.] ) and declares local integer variables. They are -initialized to 0. - -syntax: - - INTEGER ,* - - may be any valid REDUCE identifier, except T or NIL . - - Integer variables remain local, and do not share values with -variables of the same name outside the [*note BEGIN::.] ...END block. -When the block is finished, the variables are removed. You may use the -words [*note REAL::.] or [*note SCALAR::.] in the place of INTEGER . -INTEGER does not indicate typechecking by the current REDUCE; it is -only for your own information. Declaration statements must immediately -follow the BEGIN , without a semicolon between BEGIN and the first -variable declaration. - - Any variables used inside BEGIN ...END blocks that were not -declared SCALAR , REAL or INTEGER are global, and any change made to -them inside the block affects their global value. Any [*note ARRAY::.] -or [*note MATRIX::.] declared inside a block is always global. - - -File: redhelp, Node: KORDER, Next: LET, Prev: INTEGER, Up: Declarations section - - KORDER declaration - - The KORDER declaration changes the internal canonical ordering of -kernels. - -syntax: - - KORDER , * - - must be a REDUCE [*note KERNEL::.] or a [*note LIST::.] of -KERNEL s. - - The declaration KORDER changes the internal ordering, but not the -print ordering, so the effects cannot be seen on output. However, in -some calculations, the order of the variables can have significant -effects on the time and space demands of a calculation. If you are -doing a demanding calculation with several kernels, you can experiment -with changing the canonical ordering to improve behavior. - - The first kernel in the argument list is given the highest priority, -the second gets the next highest, and so on. Kernels not named in a -KORDER ordering otherwise. A new KORDER declaration replaces the -previous one. To return to canonical ordering, use the command KORDER -NIL . - - To change the print ordering, use the declaration [*note ORDER::.] . - - -File: redhelp, Node: LET, Next: LINEAR, Prev: KORDER, Up: Declarations section - - LET command - - The LET command defines general or specific substitution rules. - -syntax: - - LET = , = * - - can be any valid REDUCE identifier except an array, and -in some cases can be an expression; can be any valid REDUCE -expression. - -examples: - - ____________________________________________________________ - - let a = sin(x); - - b := a; - - B := SIN X; - - - let c = a; - - exp(a); - - SIN(X) - E - - - a := x**2; - - 2 - A := X - - - exp(a); - - 2 - X - E - - - exp(b); - - SIN(X) - E - - - exp(c); - - 2 - X - E - - - let m + n = p; - - (m + n)**5; - - 5 - P - - - operator h; - - let h(u,v) = u - v; - - h(u,v); - - U - V - - - h(x,y); - - H(X,Y) - - - array q(10); - - let q(1) = 15; - - ***** Substitution for 0 not allowed - - ____________________________________________________________ - The LET command is also used to activate a RULE SETS . - -syntax: - - LET ,+ - - can be an explicit [*note RULE::.] LIST , or evaluate to a -rule list. - -examples: - - ____________________________________________________________ - - trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, - cos(~x)^2 => (1+cos(2*x))/2, - sin(~x)^2 => (1-cos(2*x))/2}$ - - let trig1; - cos(a)*cos(b); - - COS(A - B) + COS(A + B) - ------------------------ - 2 - - ____________________________________________________________ - A LET command returns no value, though the substitution rule is -entered. Assignment rules made by [*note assign::.] and LET rules are -at the same level, and cancel each other. There is a difference in their -operation, however, as shown in the first example: a LET assignment -tracks the changes in what it is assigned to, while a := assignment is -fixed at the value it originally had. - - The use of expressions as left-hand sides of LET statements is a -little complicated. The rules of operation are: - - (i) Expressions of the form A*B = C do not change A, B or C, but set -A*B to C. - - (ii) Expressions of the form A+B = C substitute C - B for A, but do -not change B or C. - - (iii) Expressions of the form A-B = C substitute B + C for A, but do -not change B or C. - - (iv) Expressions of the form A/B = C substitute B*C for A, but do -not change B or C. - - (v) Expressions of the form A**N = C substitute C for A**N in every -expression of a power of A to N or greater. An asymptotic command such -as A**N = 0 sets all terms involving A to powers greater than or equal -to N to 0. Finite fields may be generated by requiring modular -arithmetic (the [*note MODULAR::.] switch) and defining the primitive -polynomial via a LET statement. - - LET substitutions involving expressions are cleared by using the -[*note CLEAR::.] command with exactly the same expression. - - Note when a simple LET statement is used to assign functionality to -an operator, it is valid only for the exact identifiers used. For the -use of the LET command to attach more general functionality to an -operator, see [*note FORALL::.] . - - Arrays as a whole cannot be arguments to LET statements, but -matrices as a whole can be legal arguments, provided both arguments are -matrices. However, it is important to note that the two matrices are -then linked. Any change to an element of one matrix changes the -corresponding value in the other. Unless you want this behavior, you -should not use LET for matrices. The assignment operator [*note -assign::.] can be used for non-tracking assignments, avoiding the side -effects. Matrices are redimensioned as needed in LET statements. - - When array or matrix elements are used as the left-hand side of LET -statements, the contents of that element is used as the argument. When -the contents is a number or some other expression that is not a valid -left-hand side for LET , you get an error message. If the contents is an -identifier or simple expression, the LET rule is globally attached to -that identifier, and is in effect not only inside the array or matrix, -but everywhere. Because of such unwanted side effects, you should not -use LET with array or matrix elements. The assignment operator := can -be used to put values into array or matrix elements without the side -effects. - - Local variables declared inside BEGIN ...END blocks cannot be used -as the left-hand side of LET statements. However, [*note BEGIN::.] -...END blocks themselves can be used as the right-hand side of LET -statements. The construction: - -syntax: - - FOR ALL LET ()= - - is an alternative to the - -syntax: - - PROCEDURE (); - - construction. One important difference between the two constructions -is that the as formal parameters to a procedure have their -global values protected against change by the procedure, while the - of a LET statement are changed globally by its actions. - - Be careful in using a construction such as LET X = X + 1 except -inside a controlled loop statement. The process of resubstitution -continues until a stack overflow message is given. - - The LET statement may be used to make global changes to variables -from inside procedures. If X is a formal parameter to a procedure, the -command LET X = ... makes the change to the calling variable. For -example, if a procedure was defined by - ____________________________________________________________ - - procedure f(x,y); - let x = 15; - ____________________________________________________________ - - and the procedure was called as - ____________________________________________________________ - - f(a,b); - ____________________________________________________________ - - A would have its value changed to 15. Be careful when using LET -statements inside procedures to avoid unwanted side effects. - - It is also important to be careful when replacing LET statements with -other LET statements. The overlapping of these substitutions can be -unpredictable. Ordinarily the latest-entered rule is the first to be -applied. Sometimes the previous rule is superseded completely; other -times it stays around as a special case. The order of entering a set of -related LET expressions is very important to their eventual behavior. -The best approach is to assume that the rules will be applied in an -arbitrary order. - - -File: redhelp, Node: LINEAR, Next: LINELENGTH, Prev: LET, Up: Declarations section - - LINEAR declaration - - An operator can be declared linear in its first argument over powers -of its second argument by the declaration LINEAR. - -syntax: - - LINEAR , * - - must have been declared to be an operator. Be careful not -to use a system operator name, because this command may change its -definition. The operator being declared must have at least two -arguments, and the second one must be a [*note KERNEL::.] . - -examples: - - ____________________________________________________________ - - operator f; - - linear f; - - f(0,x); - - 0 - - - f(-y,x); - - - F(1,X)*Y - - - f(y+z,x); - - F(1,X)*(Y + Z) - - - f(y*z,x); - - F(1,X)*Y*Z - - - depend z,x; - - f(y*z,x); - - F(Z,X)*Y - - - f(y/z,x); - - 1 - F(-,X)*Y - Z - - - depend y,x; - - f(y/z,x); - - Y - F(-,X) - Z - - - nodepend z,x; - - f(y/z,x); - - F(Y,X) - ------ - Z - - - f(2*e**sin(x),x); - - SIN(X) - 2*F(E ,X) - - ____________________________________________________________ - Even when the operator has not had its functionality attached, it -exhibits linear properties as shown in the examples. Notice the -difference when dependencies are added. Dependencies are also in effect -when the operator's first argument contains its second, as in the last -line above. - - For a fully-developed example of the use of linear operators, refer -to the article in the , Vol. 14 -(1974), pp. 301-317, "Analytic Computation of Some Integrals in Fourth -Order Quantum Electrodynamics," by J.A. Fox and A.C. Hearn. The article -includes the complete listing of REDUCE procedures used for this work. - - -File: redhelp, Node: LINELENGTH, Next: LISP, Prev: LINEAR, Up: Declarations section - - LINELENGTH declaration - - The LINELENGTH declaration sets the length of the output line. -Default is 80. - -syntax: - - LINELENGTH - - To change the linelength, must evaluate to a positive -integer less than 128 (although this varies from system to system), and -should not be less than 20 or so for proper operation. - - LINELENGTH returns the previous linelength. If you want the current -linelength value, but not change it, say LINELENGTH NIL . - - -File: redhelp, Node: LISP, Next: LISTARGP, Prev: LINELENGTH, Up: Declarations section - - LISP command - - The LISP command changes REDUCE's mode of operation to symbolic. When -LISP is followed by an expression, that expression is evaluated in -symbolic mode, but REDUCE's mode is not changed. This command is -equivalent to [*note SYMBOLIC::.] . - -examples: - - ____________________________________________________________ - - lisp; - - NIL - - - car '(a b c d e); - - A - - - algebraic; - - c := (lisp car '(first second))**2; - - - - 2 - C := FIRST - - ____________________________________________________________ - - -File: redhelp, Node: LISTARGP, Next: NODEPEND, Prev: LISP, Up: Declarations section - - LISTARGP declaration - -syntax: - - LISTARGP , * - - If an operator other than those specifically defined for lists is -given a single argument that is a [*note LIST::.] , then the result of -this operation will be a list in which that operator is applied to each -element of the list. This process can be inhibited for a specific -operator, or list of operators, by using the declaration LISTARGP . - -examples: - - ____________________________________________________________ - - log {a,b,c}; - - LOG(A),LOG(B),LOG(C) - - - listargp log; - - log {a,b,c}; - - LOG(A,B,C) - - ____________________________________________________________ - It is possible to inhibit such distribution globally by turning on -the switch [*note LISTARGS::.] . In addition, if an operator has more -than one argument, no such distribution occurs, so LISTARGP has no -effect. - - -File: redhelp, Node: NODEPEND, Next: MATCH, Prev: LISTARGP, Up: Declarations section - - NODEPEND declaration - - The NODEPEND declaration removes the dependency declared with [*note -DEPEND::.] . - -syntax: - - NODEPEND ,+ - - must be a kernel that has had a dependency declared -upon the one or more other kernels that are its other arguments. - -examples: - - ____________________________________________________________ - - depend y,x,z; - - df(sin y,x); - - COS(Y)*DF(Y,X) - - - df(sin y,x,z); - - COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) - - - nodepend y,z; - - df(sin y,x); - - COS(Y)*DF(Y,X) - - - df(sin y,x,z); - - 0 - - ____________________________________________________________ - A warning message is printed if the dependency had not been declared -by DEPEND . - - -File: redhelp, Node: MATCH, Next: NONCOM, Prev: NODEPEND, Up: Declarations section - - MATCH command - - The MATCH command is similar to the [*note LET::.] command, except -that it matches only explicit powers in substitution. - -syntax: - - MATCH = , = * - - is generally a term involving powers, and is limited by the -rules for the [*note LET::.] command. may be any valid -REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - match c**2*a**2 = d; - (a+c)**4; - - 4 3 3 4 - A + 4*A *C + 4*A*C + C + 6*D - - - match a+b = c; - - a + 2*b; - - B + C - - - (a + b + c)**2; - - 2 2 2 - A - B + 2*B*C + 3*C - - - clear a+b; - - (a + b + c)**2; - - 2 2 2 - A + 2*A*B + 2*A*C + B + 2*B*C + C - - - let p*r = s; - - match p*q = ss; - - (a + p*r)**2; - - 2 2 - A + 2*A*S + S - - - (a + p*q)**2; - - 2 2 2 - A + 2*A*SS + P *Q - - ____________________________________________________________ - Note in the last example that A + B has been explicitly matched -after the squaring was done, replacing each single power of A by C - B -. This kind of substitution, although following the rules, is confusing -and could lead to unrecognizable results. It is better to use MATCH -with explicit powers or products only. MATCH should not be used inside -procedures for the same reasons that LET should not be. - - Unlike [*note LET::.] substitutions, MATCH substitutions are executed -after all other operations are complete. The last example shows the -difference. MATCH commands can be cleared by using [*note CLEAR::.] , -with exactly the expression that the original MATCH took. MATCH -commands can also be done more generally with FOR ALL or [*note -FORALL::.] ...SUCH THAT commands. - - -File: redhelp, Node: NONCOM, Next: NONZERO, Prev: MATCH, Up: Declarations section - - NONCOM declaration - - NONCOM declares that already-declared operators are noncommutative -under multiplication. - -syntax: - - NONCOM ,* - - must have been declared an [*note OPERATOR::.] , or a -warning message is given. - -examples: - - ____________________________________________________________ - - operator f,h; - - noncom f; - - f(a)*f(b) - f(b)*f(a); - - F(A)*F(B) - F(B)*F(A) - - - h(a)*h(b) - h(b)*h(a); - - 0 - - - operator comm; - - for all x,y such that x neq y and ordp(x,y) - let f(x)*f(y) = f(y)*f(x) + comm(x,y); - - - f(1)*f(2); - - F(1)*F(2) - - - f(2)*f(1); - - COMM(2,1) + F(1)*F(2) - - ____________________________________________________________ - The last example introduces the commutator of f(x) and f(y) for all -x and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or it -can remain an indeterminate operator. - - -File: redhelp, Node: NONZERO, Next: ODD, Prev: NONCOM, Up: Declarations section - - NONZERO declaration - -syntax: - - NONZERO ,* - - If an [*note OPERATOR::.] F is declared [*note ODD::.] , then F(0) -is replaced by zero unless F is also declared non zero by the -declaration NONZERO . - -examples: - - ____________________________________________________________ - - odd f; - - f(0) - - 0 - - - nonzero f; - - f(0) - - F(0) - - ____________________________________________________________ - - -File: redhelp, Node: ODD, Next: OFF, Prev: NONZERO, Up: Declarations section - - ODD declaration - -syntax: - - ODD ,* - - This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. - -examples: - - ____________________________________________________________ - - odd f; - - f(-a) - - -F(A) - - - f(-a,-b) - - -F(A,-B) - - - f(a,-b) - - F(A,-B) - - ____________________________________________________________ - - If say F is declared odd, then F(0) is replaced by zero unless F is -also declared non zero by the declaration [*note NONZERO::.] . - - -File: redhelp, Node: OFF, Next: ON, Prev: ODD, Up: Declarations section - - OFF command - - The OFF command is used to turn switches off. - -syntax: - - OFF ,* - - can be any SWITCH name. There is no problem if the switch -is already off. If the switch name is mistyped, an error message is -given. - - -File: redhelp, Node: ON, Next: OPERATOR, Prev: OFF, Up: Declarations section - - ON command - - The ON command is used to turn switches on. - -syntax: - - ON ,* - - can be any SWITCH name. There is no problem if the switch -is already on. If the switch name is mistyped, an error message is -given. - - -File: redhelp, Node: OPERATOR, Next: ORDER, Prev: ON, Up: Declarations section - - OPERATOR declaration - - Use the OPERATOR declaration to declare your own operators. - -syntax: - - OPERATOR ,* - - can be any valid REDUCE identifier, which is not the -name of a [*note MATRIX::.] , [*note ARRAY::.] , scalar variable or -previously-defined operator. - -examples: - - ____________________________________________________________ - - operator dis,fac; - - let dis(~x,~y) = sqrt(x^2 + y^2); - - dis(1,2); - - SQRT(5) - - - dis(a,10); - - 2 - SQRT(A + 100) - - - on rounded; - - dis(1.5,7.2); - - 7.35459040329 - - - let fac(~n) = if n=0 then 1 - else if not(fixp n and n>0) - then rederr "choose non-negative integer" - else for i := 1:n product i; - - - fac(5); - - 120 - - - fac(-2); - - ***** choose non-negative integer - - ____________________________________________________________ - The first operator is the Euclidean distance metric, the distance of -point (x,y) from the origin. The second operator is the factorial. - - Operators can have various properties assigned to them; they can be -declared [*note INFIX::.] , [*note LINEAR::.] , [*note SYMMETRIC::.] , -[*note ANTISYMMETRIC::.] , or [*note NONCOM::.] MUTATIVE . The default -operator is prefix, nonlinear, and commutative. Precedence can also be -assigned to operators using the declaration [*note PRECEDENCE::.] . - - Functionality is assigned to an operator by a [*note LET::.] -statement or a [*note FORALL::.] ...LET statement, (or possibly by a -procedure with the name of the operator). Be careful not to redefine a -system operator by accident. REDUCE permits you to redefine system -operators, giving you a warning message that the operator was already -defined. This flexibility allows you to add mathematical rules that do -what you want them to do, but can produce odd or erroneous behavior if -you are not careful. - - You can declare operators from inside [*note PROCEDURE::.] s, as -long as they are not local variables. Operators defined inside -procedures are global. A formal parameter may be declared as an -operator, and has the effect of declaring the calling variable as the -operator. - - -File: redhelp, Node: ORDER, Next: PRECEDENCE, Prev: OPERATOR, Up: Declarations section - - ORDER declaration - - The ORDER declaration changes the order of precedence of kernels for -display purposes only. - -syntax: - - ORDER ,* - - must be a valid [*note KERNEL::.] or [*note OPERATOR::.] -name complete with argument or a [*note LIST::.] of such objects. - -examples: - - ____________________________________________________________ - - x + y + z + cos(a); - - COS(A) + X + Y + Z - - - order z,y,x,cos(a); - - x + y + z + cos(a); - - Z + Y + X + COS(A) - - - (x + y)**2; - - 2 2 - Y + 2*Y*X + X - - - order nil; - - (z + cos(z))**2; - - 2 2 - COS(Z) + 2*COS(Z)*Z + Z - - ____________________________________________________________ - ORDER affects the printing order of the identifiers only; internal -order is unchanged. Change internal order of evaluation with the -declaration [*note KORDER::.] . You can use ORDER to feature variables -or functions you are particularly interested in. - - Declarations made with ORDER are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, specific -kernels named in new declarations are removed from previous ones and -given the new priority. Return to the standard canonical printing order -with the statement ORDER NIL . - - The print order specified by ORDER commands is not in effect if the -switch [*note PRI::.] is off. - - -File: redhelp, Node: PRECEDENCE, Next: PRECISION, Prev: ORDER, Up: Declarations section - - PRECEDENCE declaration - - The PRECEDENCE declaration attaches a precedence to an infix -operator. - -syntax: - - PRECEDENCE , - - should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. - must be a system infix operator or have had its -precedence already declared. - -examples: - - ____________________________________________________________ - - operator f,h; - - precedence f,+; - - precedence h,*; - - a + f(1,2)*c; - - (1 F 2)*C + A - - - a + h(1,2)*c; - - 1 H 2*C + A - - - a*1 f 2*c; - - A F 2*C - - - a*1 h 2*c; - - 1 H 2*A*C - - ____________________________________________________________ - The operator whose precedence is being declared is inserted into the -infix operator precedence list at the next higher place than -. - - Attaching a precedence to an operator has the side effect of -declaring the operator to be infix. If the identifier argument for -PRECEDENCE has not been declared to be an operator, an attempt to use -it causes an error message. After declaring it to be an operator, it -becomes an infix operator with the precedence previously given. Infix -operators may be used in prefix form; if they are used in infix form, a -space must be left on each side of the operator to avoid ambiguity. -Declared infix operators are always binary. - - To see the infix operator precedence list, enter symbolic mode and -type PRECLIS!*; . The lowest precedence operator is listed first. - - All prefix operators have precedence higher than infix operators. - - -File: redhelp, Node: PRECISION, Next: PRINT_PRECISION, Prev: PRECEDENCE, Up: Declarations section - - PRECISION declaration - - The PRECISION declaration sets the number of decimal places used when -[*note ROUNDED::.] is on. Default is system dependent, and normally -about 12. - -syntax: - - PRECISION () or PRECISION - - must be a positive integer. When is 0, the -current precision is displayed, but not changed. There is no upper -limit, but precision of greater than several hundred causes -unpleasantly slow operation on numeric calculations. - -examples: - - ____________________________________________________________ - - on rounded; - - 7/9; - - 0.777777777778 - - - precision 20; - - 20 - - - 7/9; - - 0.77777777777777777778 - - - sin(pi/4); - - 0.7071067811865475244 - - ____________________________________________________________ - Trailing zeroes are dropped, so sometimes fewer than 20 decimal -places are printed as in the last example. Turn on the switch [*note -FULLPREC::.] if you want to print all significant digits. The [*note -ROUNDED::.] mode carries calculations to two more places than given by -PRECISION , and rounds off. - - -File: redhelp, Node: PRINT_PRECISION, Next: REAL, Prev: PRECISION, Up: Declarations section - - PRINT_PRECISION declaration - -syntax: - - PRINT_PRECISION () or PRINT_PRECISION - - In [*note ROUNDED::.] mode, numbers are normally printed to the -specified precision. If the user wishes to print such numbers with less -precision, the printing precision can be set by the declaration -PRINT_PRECISION . - -examples: - - ____________________________________________________________ - - on rounded; - - 1/3; - - 0.333333333333 - - - print_precision 5; - - 1/3 - - 0.33333 - - ____________________________________________________________ - - -File: redhelp, Node: REAL, Next: REMFAC, Prev: PRINT_PRECISION, Up: Declarations section - - REAL declaration - - The REAL declaration must be made immediately after a [*note -BEGIN::.] (or other variable declaration such as [*note INTEGER::.] -and [*note SCALAR::.] ) and declares local integer variables. They are -initialized to zero. - -syntax: - - REAL ,* - - may be any valid REDUCE identifier, except T or NIL . - - Real variables remain local, and do not share values with variables -of the same name outside the [*note BEGIN::.] ...END block. When the -block is finished, the variables are removed. You may use the words -[*note INTEGER::.] or [*note SCALAR::.] in the place of REAL . REAL -does not indicate typechecking by the current REDUCE; it is only for -your own information. Declaration statements must immediately follow -the BEGIN , without a semicolon between BEGIN and the first variable -declaration. - - Any variables used inside a BEGIN ...END [*note block::.] that were -not declared SCALAR , REAL or INTEGER are global, and any change made -to them inside the block affects their global value. Any [*note -ARRAY::.] or [*note MATRIX::.] declared inside a block is always global. - - -File: redhelp, Node: REMFAC, Next: SCALAR, Prev: REAL, Up: Declarations section - - REMFAC declaration - - The REMFAC declaration removes the special factoring treatment of its -arguments that was declared with [*note FACTOR::.] . - -syntax: - - REMFAC ,+ - - must be a [*note KERNEL::.] or [*note OPERATOR::.] name that -was declared as special with the [*note FACTOR::.] declaration. - - -File: redhelp, Node: SCALAR, Next: SCIENTIFIC_NOTATION, Prev: REMFAC, Up: Declarations section - - SCALAR declaration - - The SCALAR declaration must be made immediately after a [*note -BEGIN::.] (or other variable declaration such as [*note INTEGER::.] -and [*note REAL::.] ) and declares local scalar variables. They are -initialized to 0. - -syntax: - - SCALAR ,* - - may be any valid REDUCE identifier, except T or NIL . - - Scalar variables remain local, and do not share values with -variables of the same name outside the [*note BEGIN::.] ...END [*note -block::.] . When the block is finished, the variables are removed. You -may use the words [*note REAL::.] or [*note INTEGER::.] in the place of -SCALAR . REAL and INTEGER do not indicate typechecking by the current -REDUCE; they are only for your own information. Declaration statements -must immediately follow the BEGIN , without a semicolon between BEGIN -and the first variable declaration. - - Any variables used inside BEGIN ...END blocks that were not -declared SCALAR , REAL or INTEGER are global, and any change made to -them inside the block affects their global value. Arrays declared -inside a block are always global. - - -File: redhelp, Node: SCIENTIFIC_NOTATION, Next: SHARE, Prev: SCALAR, Up: Declarations section - - SCIENTIFIC_NOTATION declaration - -syntax: - - SCIENTIFIC_NOTATION () or SCIENTIFIC_NOTATION (,) - - and are positive integers. SCIENTIFIC_NOTATION controls -the output format of floating point numbers. At the default settings, -any number with five or less digits before the decimal point is printed -in a fixed-point notation, e.g., 12345.6. Numbers with more than five -digits are printed in scientific notation, e.g., 1.234567E+5. -Similarly, by default, any number with eleven or more zeros after the -decimal point is printed in scientific notation. - - When SCIENTIFIC_NOTATION is called with the numerical argument m a -number with more than m digits before the decimal point, or m or more -zeros after the decimal point, is printed in scientific notation. When -SCIENTIFIC_NOTATION is called with a list ,, a number with more -than m digits before the decimal point, or n or more zeros after the -decimal point is printed in scientific notation. - -examples: - - ____________________________________________________________ - - - on rounded; - - - 12345.6; - - 12345.6 - - - - 123456.5; - - 1.234565e+5 - - - - 0.00000000000000012; - - 1.2e-16 - - - - scientific_notation 20; - - 5,11 - - - - 5: 123456.7; - - 123456.7 - - - - 0.00000000000000012; - - 0.00000000000000012 - - ____________________________________________________________ - - -File: redhelp, Node: SHARE, Next: SYMBOLIC, Prev: SCIENTIFIC_NOTATION, Up: Declarations section - - SHARE declaration - - The SHARE declaration allows access to its arguments by both -algebraic and symbolic modes. - -syntax: - - SHARE ,* - - can be any valid REDUCE identifier. - - Programming in [*note SYMBOLIC::.] as well as algebraic mode allows -you a wider range of techniques than just algebraic mode alone. -Expressions do not cross the boundary since they have different -representations, unless the SHARE declaration is used. For more -information on using symbolic mode, see the , and -the . - - You should be aware that a previously-declared array is destroyed by -the SHARE declaration. Scalar variables retain their values. You can -share a declared [*note MATRIX::.] that has not yet been dimensioned so -that it can be used by both modes. Values that are later put into the -matrix are accessible from symbolic mode too, but not by the usual -matrix reference mechanism. In symbolic mode, a matrix is stored as a -list whose first element is [*note MAT::.] , and whose next elements -are the rows of the matrix stored as lists of the individual elements. -Access in symbolic mode is by the operators [*note FIRST::.] , [*note -SECOND::.] , [*note THIRD::.] and [*note REST::.] . - - -File: redhelp, Node: SYMBOLIC, Next: SYMMETRIC, Prev: SHARE, Up: Declarations section - - SYMBOLIC command - - The SYMBOLIC command changes REDUCE's mode of operation to symbolic. -When SYMBOLIC is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the [*note LISP::.] command. - -examples: - - ____________________________________________________________ - - symbolic; - - NIL - - - cdr '(a b c); - - (B C) - - - algebraic; - - x + symbolic car '(y z); - - X + Y - - ____________________________________________________________ - - -File: redhelp, Node: SYMMETRIC, Next: TR, Prev: SYMBOLIC, Up: Declarations section - - SYMMETRIC declaration - - When an operator is declared SYMMETRIC , its arguments are reordered -to conform to the internal ordering of the system. - -syntax: - - SYMMETRIC ,* - - is an identifier that has been declared an operator. - -examples: - - ____________________________________________________________ - - operator m,n; - - symmetric m,n; - - m(y,a,sin(x)); - - M(SIN(X),A,Y) - - - n(z,m(b,a,q)); - - N(M(A,B,Q),Z) - - ____________________________________________________________ - If has not been declared to be an operator, the flag -SYMMETRIC is still attached to it. When is subsequently -used as an operator, the message DECLARE OPERATOR ? (Y OR -N) is printed. If the user replies Y , the symmetric property of the -operator is used. - - -File: redhelp, Node: TR, Next: UNTR, Prev: SYMMETRIC, Up: Declarations section - - TR declaration - - The TR declaration is used to trace system or user-written -procedures. It is only useful to those with a good knowledge of both -Lisp and the internal formats used by REDUCE. - -syntax: - - TR ,* - - is the name of a REDUCE system procedure or one of your own -procedures. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - The system procedure PREPSQ is traced, which prepares -REDUCE standard forms for printing by converting them to a Lisp prefix -form. - ____________________________________________________________ - - - tr prepsq; - - (PREPSQ) - - - x**2 + y; - - PREPSQ entry: - Arg 1: (((((X . 2) . 1) ((Y . 1) . 1)) . 1) - PREPSQ return value = (PLUS (EXPT X 2) Y) - PREPSQ entry: - Arg 1: (1 . 1) - PREPSQ return value = 1 - 2 - X + Y - - - untr prepsq; - - (PREPSQ) - - ____________________________________________________________ - - This example is for a PSL-based system; the above format will vary if -other Lisp systems are used. - - When a procedure is traced, the first lines show entry to the -procedure and the arguments it is given. The value returned by the -procedure is printed upon exit. If you are tracing several procedures, -with a call to one of them inside the other, the inner trace will be -indented showing procedure nesting. There are no trace options. -However, the format of the trace depends on the underlying Lisp system -used. The trace can be removed with the command [*note UNTR::.] . Note -that TRACE , below, is a matrix operator, while TR does procedure -tracing. - - -File: redhelp, Node: UNTR, Next: VARNAME, Prev: TR, Up: Declarations section - - UNTR declaration - - The UNTR declaration is used to remove a trace from system or -user-written procedures declared with [*note TR::.] . It is only useful -to those with a good knowledge of both Lisp and the internal formats -used by REDUCE. - -syntax: - - UNTR ,* - - is the name of a REDUCE system procedure or one of your own -procedures that has previously been the argument of a TR declaration. - - -File: redhelp, Node: VARNAME, Next: WEIGHT, Prev: UNTR, Up: Declarations section - - VARNAME declaration - - The declaration VARNAME instructs REDUCE to use its argument as the -default Fortran (when [*note FORT::.] is on) or [*note STRUCTR::.] -identifier and identifier stem, rather than using ANS . - -syntax: - - VARNAME - - can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. - -examples: - - ____________________________________________________________ - - varname ident; - - IDENT - - - on fort; - - x**2 + 1; - - IDENT=X**2+1. - - - off fort,exp; - - structr(((x+y)**2 + z)**3); - - 3 - IDENT2 - where - 2 - IDENT2 := IDENT1 + Z - IDENT1 := X + Y - - ____________________________________________________________ - [*note EXP::.] was turned off so that [*note STRUCTR::.] could show -the structure. If EXP had been on, the expression would have been -expanded into a polynomial. - - -File: redhelp, Node: WEIGHT, Next: WHERE, Prev: VARNAME, Up: Declarations section - - WEIGHT command - - The WEIGHT command is used to attach weights to kernels for -asymptotic constraints. - -syntax: - - WEIGHT = - - must be a REDUCE [*note KERNEL::.] , must be a -positive integer, not 0. - -examples: - - ____________________________________________________________ - - a := (x+y)**4; - - 4 3 2 2 3 4 - A := X + 4*X *Y + 6*X *Y + 4*X*Y + Y - - - weight x=2,y=3; - - wtlevel 8; - - a; - - 4 - X - - - wtlevel 10; - - a; - - 2 2 2 - X *(6*Y + 4*X*Y + X ) - - - int(x**2,x); - - ***** X invalid as KERNEL - - ____________________________________________________________ - Weights and [*note WTLEVEL::.] are used for asymptotic constraints, -where higher-order terms are considered insignificant. - - Weights are originally equivalent to 0 until set by a WEIGHT -command. To remove a weight from a kernel, use the [*note CLEAR::.] -command. Weights once assigned cannot be changed without clearing the -identifier. Once a weight is assigned to a kernel, it is no longer a -kernel and cannot be used in any REDUCE commands or operators that -require kernels, until the weight is cleared. Note that terms are -ordered by greatest weight. - - The weight level of the system is set by [*note WTLEVEL::.] , -initially at 2. Since no kernels have weights, no effect from WTLEVEL -can be seen. Once you assign weights to kernels, you must set WTLEVEL -correctly for the desired operation. When weighted variables appear in a -term, their weights are summed for the total weight of the term (powers -of variables multiply their weights). When a term exceeds the weight -level of the system, it is discarded from the result expression. - - -File: redhelp, Node: WHERE, Next: WHILE, Prev: WEIGHT, Up: Declarations section - - WHERE operator - - The WHERE operator provides an infix notation for one-time -substitutions for kernels in expressions. - -syntax: - - WHERE = , = -* - - can be any REDUCE scalar expression, must be a -[*note KERNEL::.] . Alternatively a [*note RULE::.] or a RULE LIST can -be a member of the right-hand part of a WHERE expression. - -examples: - - ____________________________________________________________ - - x**2 + 17*x*y + 4*y**2 where x=1,y=2; - - - 51 - - - for i := 1:5 collect x**i*q where q= for j := 1:i product j; - - - - 2 3 4 5 - {X,2*X ,6*X ,24*X ,120*X } - - - x**2 + y + z where z=y**3,y=3; - - 2 3 - X + Y + 3 - - ____________________________________________________________ - Substitution inside a WHERE expression has no effect upon the values -of the kernels outside the expression. The WHERE operator has the -lowest precedence of all the infix operators, which are lower than -prefix operators, so that the substitutions apply to the entire -expression preceding the WHERE operator. However, WHERE is applied -before command keywords such as THEN , REPEAT , or DO . - - A [*note RULE::.] or a RULE SET in the right-hand part of the WHERE -expression act as if the rules were activated by [*note LET::.] -immediately before the evaluation of the expression and deactivated by -[*note CLEARRULES::.] immediately afterwards. - - WHERE gives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression can -be a command to be evaluated. The substitute assignments are made in -parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. WHERE -can also be used to define auxiliary variables in [*note PROCEDURE::.] -definitions. - - -File: redhelp, Node: WHILE, Next: WTLEVEL, Prev: WHERE, Up: Declarations section - - WHILE command - - The WHILE command causes a statement to be repeatedly executed until -a given condition is true. If the condition is initially false, the -statement is not executed at all. - -syntax: - - WHILE DO - - is given by a logical operator, must be a -single REDUCE statement, or a [*note group::.] (<< ...>> ) or [*note -BEGIN::.] ...END [*note block::.] . - -examples: - - ____________________________________________________________ - - a := 10; - - A := 10 - - - while a <= 12 do <>; - - - - 10 - - - 11 - - 12 - - while a < 5 do <>; - - - - nothing is printed - - ____________________________________________________________ - - -File: redhelp, Node: WTLEVEL, Prev: WHILE, Up: Declarations section - - WTLEVEL command - - In conjunction with [*note WEIGHT::.] , WTLEVEL is used to implement -asymptotic constraints. Its default value is 2. - -syntax: - - WTLEVEL - - To change the weight level, must evaluate to a positive -integer that is the greatest weight term to be retained in expressions -involving kernels with weight assignments. WTLEVEL returns the new -weight level. If you want the current weight level, but not change it, -say WTLEVEL NIL . - -examples: - - ____________________________________________________________ - - (x+y)**4; - - - 4 3 2 2 3 4 - X + 4*X *Y + 6*X *Y + 4*X*Y + Y - - - weight x=2,y=3; - - wtlevel 8; - - (x+y)**4; - - 4 - X - - - wtlevel 10; - - (x+y)**4; - - 2 2 2 - X *(6*Y + 4*X*Y + X ) - - - int(x**2,x); - - ***** X invalid as KERNEL - - ____________________________________________________________ - WTLEVEL is used in conjunction with the command [*note WEIGHT::.] to -enable asymptotic constraints. Weight of a term is computed by -multiplying the weights of each variable in it by the power to which it -has been raised, and adding the resulting weights for each variable. If -the weight of the term is greater than WTLEVEL , the term is dropped -from the expression, and not used in any further computation involving -the expression. - - Once a weight has been attached to a [*note KERNEL::.] , it is no -longer recognized by the system as a kernel, though still a variable. -It cannot be used in REDUCE commands and operators that need kernels. -The weight attachment can be undone with a [*note CLEAR::.] command. -WTLEVEL can be changed as desired. - - -File: redhelp, Node: Declarations section, Next: Input and Output section, Prev: Algebraic Operators section, Up: Top - - Declarations section - -* Menu: - -* ALGEBRAIC:: command -* ANTISYMMETRIC:: declaration -* ARRAY:: declaration -* CLEAR:: command -* CLEARRULES:: command -* DEFINE:: command -* DEPEND:: declaration -* EVEN:: declaration -* FACTOR declaration:: declaration -* FORALL:: command -* INFIX:: declaration -* INTEGER:: declaration -* KORDER:: declaration -* LET:: command -* LINEAR:: declaration -* LINELENGTH:: declaration -* LISP:: command -* LISTARGP:: declaration -* NODEPEND:: declaration -* MATCH:: command -* NONCOM:: declaration -* NONZERO:: declaration -* ODD:: declaration -* OFF:: command -* ON:: command -* OPERATOR:: declaration -* ORDER:: declaration -* PRECEDENCE:: declaration -* PRECISION:: declaration -* PRINT_PRECISION:: declaration -* REAL:: declaration -* REMFAC:: declaration -* SCALAR:: declaration -* SCIENTIFIC_NOTATION:: declaration -* SHARE:: declaration -* SYMBOLIC:: command -* SYMMETRIC:: declaration -* TR:: declaration -* UNTR:: declaration -* VARNAME:: declaration -* WEIGHT:: command -* WHERE:: operator -* WHILE:: command -* WTLEVEL:: command - - -File: redhelp, Node: IN, Next: INPUT, Up: Input and Output section - - IN command - - The IN command takes a list of file names and inputs each file into -the system. - -syntax: - - IN ,* - - must be in the current directory, or be a valid pathname. -If the file name is not an identifier, double quote marks (" ) are -needed around the file name. - - A message is given if the file cannot be found, or has a mistake in -it. - - Ending the command with a semicolon causes the file to be echoed to -the screen; ending it with a dollar sign does not echo the file. If you -want some but not all of a file echoed, turn the switch [*note ECHO::.] -on or off in the file. - - An efficient way to develop procedures in REDUCE is to write them -into a file using a system editor of your choice, and then input the -files into an active REDUCE session. REDUCE reparses the procedure as -it takes information from the file, overwriting the previous procedure -definition. When it accepts the procedure, it echoes its name to the -screen. Data can also be input to the system from files. - - Files to be read in should always end in [*note END::.] ; to avoid -end-of-file problems. Note that this is an additional END; to any -ending procedures in the file. - - -File: redhelp, Node: INPUT, Next: OUT, Prev: IN, Up: Input and Output section - - INPUT command - - The INPUT command returns the input expression to the REDUCE numbered -prompt that is its argument. - -syntax: - - INPUT () or INPUT - - must be between 1 and the current REDUCE prompt number. - - An expression brought back by INPUT can be reexecuted with new -values or switch settings, or used as an argument in another expression. -The command [*note WS::.] brings back the results of a numbered REDUCE -statement. Two lists contain every input and every output statement -since the beginning of the session. If your session is very long, -storage space begins to fill up with these expressions, so it is a good -idea to end the session once in a while, saving needed expressions to -files with the [*note SAVEAS::.] and [*note OUT::.] commands. - - Switch settings and [*note LET::.] statements can also be reexecuted -by using INPUT . - - An error message is given if a number is called for that has not yet -been used. - - -File: redhelp, Node: OUT, Next: SHUT, Prev: INPUT, Up: Input and Output section - - OUT command - - The OUT command directs output to the filename that is its argument, -until another OUT changes the output file, or [*note SHUT::.] closes it. - -syntax: - - OUT or OUT " " or OUT T - - must be in the current directory, or be a valid complete -file description for your system. If the file name is not in the -current directory, quote marks are needed around the file name. If the -file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. - - To restore output to the terminal, type OUT T , or [*note SHUT::.] -the file. When you use OUT T , the file remains available, and if you -open it again (with another OUT ), new material is appended rather than -overwriting. - - To write a file using OUT that can be input at a later time, the -switch [*note NAT::.] must be turned off, so that the standard linear -form is saved that can be read in by [*note IN::.] . If NAT is on, -exponents are printed on the line above the expression, which causes -trouble when REDUCE tries to read the file. - - There is a slight complication if you are using the OUT command from -inside a file to create another file. The [*note ECHO::.] switch is -normally off at the top-level and on while reading files (so you can -see what is being read in). If you create a file using OUT at the -top-level, the result lines are printed into the file as you want them. -But if you create such a file from inside a file, the ECHO switch is -on, and every line is echoed, first as you typed it, then as REDUCE -parsed it, and then once more for the file. Therefore, when you create -a file from a file, you need to turn ECHO off explicitly before the OUT -command, and turn it back on when you SHUT the created file, so your -executing file echoes as it should. This behavior also means that as you -watch the file execute, you cannot see the lines that are being put into -the OUT file. As soon as you turn ECHO on, you can see output again. - - -File: redhelp, Node: SHUT, Prev: OUT, Up: Input and Output section - - SHUT command - - The SHUT command closes output files. - -syntax: - - SHUT ,* - - must have been a file opened by [*note OUT::.] . - - A file that has been opened by [*note OUT::.] must be SHUT before it -is brought in by [*note IN::.] . Files that have been opened by OUT -should always be SHUT before the end of the REDUCE session, to avoid -either loss of information or the printing of extraneous information -into the file. In most systems, terminating a session by [*note -BYE::.] closes all open output files. - - -File: redhelp, Node: Input and Output section, Next: Elementary Functions section, Prev: Declarations section, Up: Top - - Input and Output section - -* Menu: - -* IN:: command -* INPUT:: command -* OUT:: command -* SHUT:: command - - -File: redhelp, Node: ACOS, Next: ACOSH, Up: Elementary Functions section - - ACOS operator - - The ACOS operator returns the arccosine of its argument. - -syntax: - - ACOS () or ACOS - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - acos(ab); - - ACOS(AB) - - - acos 15; - - ACOS(15) - - - df(acos(x*y),x); - - 2 2 - SQRT( - X *Y + 1)*Y - -------------------- - 2 2 - X *Y - 1 - - - on rounded; - - res := acos(sqrt(2)/2); - - RES := 0.785398163397 - - - res-pi/4; - - 0 - - ____________________________________________________________ - An explicit numeric value is not given unless the switch [*note -ROUNDED::.] is on and the argument has an absolute numeric value less -than or equal to 1. - - -File: redhelp, Node: ACOSH, Next: ACOT, Prev: ACOS, Up: Elementary Functions section - - ACOSH operator - - ACOSH represents the hyperbolic arccosine of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of ACOSH -is known to the system. Numerical values may also be found by turning -on the switch [*note ROUNDED::.] . - -syntax: - - ACOSH () or ACOSH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - acosh a; - - ACOSH(A) - - - acosh(0); - - ACOSH(0) - - - df(acosh(a**2),a); - - 4 - 2*SQRT(A - 1)*A - ---------------- - 4 - A - 1 - - - int(acosh(x),x); - - INT(ACOSH(X),X) - - ____________________________________________________________ - You may attach functionality by defining ACOSH to be the inverse of -COSH . This is done by the commands - ____________________________________________________________ - - put('cosh,'inverse,'acosh); - put('acosh,'inverse,'cosh); - ____________________________________________________________ - - You can write a procedure to attach integrals or other functions to -ACOSH . You may wish to add a check to see that its argument is -properly restricted. - - -File: redhelp, Node: ACOT, Next: ACOTH, Prev: ACOSH, Up: Elementary Functions section - - ACOT operator - - ACOT represents the arccotangent of its argument. It takes an -arbitrary scalar expression as its argument. The derivative of ACOT is -known to the system. Numerical values may also be found by turning on -the switch [*note ROUNDED::.] . - -syntax: - - ACOT () or ACOT - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. You can add -functionality yourself with LET and procedures. - - -File: redhelp, Node: ACOTH, Next: ACSC, Prev: ACOT, Up: Elementary Functions section - - ACOTH operator - - ACOTH represents the inverse hyperbolic cotangent of its argument. -It takes an arbitrary scalar expression as its argument. The derivative -of ACOTH is known to the system. Numerical values may also be found by -turning on the switch [*note ROUNDED::.] . - -syntax: - - ACOTH () or ACOTH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. You can add -functionality yourself with LET and procedures. - - -File: redhelp, Node: ACSC, Next: ACSCH, Prev: ACOTH, Up: Elementary Functions section - - ACSC operator - - The ACSC operator returns the arccosecant of its argument. - -syntax: - - ACSC () or ACSC - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - acsc(ab); - - ACSC(AB) - - - acsc 15; - - ACSC(15) - - - df(acsc(x*y),x); - - 2 2 - -SQRT(X *Y - 1) - ---------------- - 2 2 - X*(X *Y - 1) - - - on rounded; - - res := acsc(2/sqrt(3)); - - RES := 1.0471975512 - - - res-pi/3; - - 0 - - ____________________________________________________________ - An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value less than or equal to -1. - - -File: redhelp, Node: ACSCH, Next: ASEC, Prev: ACSC, Up: Elementary Functions section - - ACSCH operator - - The ACSCH operator returns the hyperbolic arccosecant of its -argument. - -syntax: - - ACSCH () or ACSCH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - acsch(ab); - - ACSCH(AB) - - - acsch 15; - - ACSCH(15) - - - df(acsch(x*y),x); - - 2 2 - -SQRT(X *Y + 1) - ---------------- - 2 2 - X*(X *Y + 1) - - - on rounded; - - res := acsch(3); - - RES := 0.327450150237 - - ____________________________________________________________ - An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value less than or equal to -1. - - -File: redhelp, Node: ASEC, Next: ASECH, Prev: ACSCH, Up: Elementary Functions section - - ASEC operator - - The ASEC operator returns the arccosecant of its argument. - -syntax: - - ASEC () or ASEC - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - asec(ab); - - ASEC(AB) - - - asec 15; - - ASEC(15) - - - df(asec(x*y),x); - - 2 2 - SQRT(X *Y - 1) - --------------- - 2 2 - X*(X *Y - 1) - - - on rounded; - - res := asec sqrt(2); - - RES := 0.785398163397 - - - res-pi/4; - - 0 - - ____________________________________________________________ - An explicit numeric value is not given unless the switch ROUNDED is -on and the argument has an absolute numeric value greater or equal to 1. - - -File: redhelp, Node: ASECH, Next: ASIN, Prev: ASEC, Up: Elementary Functions section - - ASECH operator - - ASECH represents the hyperbolic arccosecant of its argument. It -takes an arbitrary scalar expression as its argument. The derivative of -ASECH is known to the system. Numerical values may also be found by -turning on the switch [*note ROUNDED::.] . - -syntax: - - ASECH () or ASECH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - asech a; - - ASECH(A) - - - asech(1); - - 0 - - - df(acosh(a**2),a); - - 4 - 2*SQRT(- A + 1) - ---------------- - 4 - A*(A - 1) - - - int(asech(x),x); - - INT(ASECH(X),X) - - ____________________________________________________________ - You may attach functionality by defining ASECH to be the inverse of -SECH . This is done by the commands - ____________________________________________________________ - - put('sech,'inverse,'asech); - put('asech,'inverse,'sech); - ____________________________________________________________ - - You can write a procedure to attach integrals or other functions to -ASECH . You may wish to add a check to see that its argument is -properly restricted. - - -File: redhelp, Node: ASIN, Next: ASINH, Prev: ASECH, Up: Elementary Functions section - - ASIN operator - - The ASIN operator returns the arcsine of its argument. - -syntax: - - ASIN () or ASIN - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - asin(givenangle); - - ASIN(GIVENANGLE) - - - asin(5); - - ASIN(5) - - - df(asin(2*x),x); - - 2 - 2*SQRT( - 4*X + 1)) - - -------------------- - 2 - 4*X - 1 - - - on rounded; - - asin .5; - - 0.523598775598 - - - asin(sqrt(3)); - - ASIN(1.73205080757) - - - asin(sqrt(3)/2); - - 1.04719755120 - - ____________________________________________________________ - A numeric value is not returned by ASIN unless the switch ROUNDED -is on and its argument has an absolute value less than or equal to 1. - - -File: redhelp, Node: ASINH, Next: ATAN, Prev: ASIN, Up: Elementary Functions section - - ASINH operator - - The ASINH operator returns the hyperbolic arcsine of its argument. -The derivative of ASINH and some simple transformations are known to -the system. - -syntax: - - ASINH () or ASINH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - asinh d; - - ASINH(D) - - - asinh(1); - - ASINH(1) - - - df(asinh(2*x),x); - - 2 - 2*SQRT(4*X + 1)) - ----------------- - 2 - 4*X + 1 - - ____________________________________________________________ - You may attach further functionality by defining ASINH to be the -inverse of SINH . This is done by the commands - ____________________________________________________________ - - put('sinh,'inverse,'asinh); - put('asinh,'inverse,'sinh); - ____________________________________________________________ - - A numeric value is not returned by ASINH unless the switch ROUNDED -is on and its argument evaluates to a number. - - -File: redhelp, Node: ATAN, Next: ATANH, Prev: ASINH, Up: Elementary Functions section - - ATAN operator - - The ATAN operator returns the arctangent of its argument. - -syntax: - - ATAN () or ATAN - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - atan(middle); - - ATAN(MIDDLE) - - - on rounded; - - atan 45; - - 1.54857776147 - - - off rounded; - - int(atan(x),x); - - 2 - 2*ATAN(X)*X - LOG(X + 1) - ------------------------- - 2 - - - df(atan(y**2),y); - - 2*Y - ------- - 4 - Y + 1 - - ____________________________________________________________ - A numeric value is not returned by ATAN unless the switch [*note -ROUNDED::.] is on and its argument evaluates to a number. - - -File: redhelp, Node: ATANH, Next: ATAN2, Prev: ATAN, Up: Elementary Functions section - - ATANH operator - - The ATANH operator returns the hyperbolic arctangent of its argument. -The derivative of ASINH and some simple transformations are known to -the system. - -syntax: - - ATANH () or ATANH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - atanh aa; - - ATANH(AA) - - - atanh(1); - - ATANH(1) - - - df(atanh(x*y),y); - - - X - ---------- - 2 2 - X *Y - 1 - - ____________________________________________________________ - A numeric value is not returned by ASINH unless the switch ROUNDED -is on and its argument evaluates to a number. You may attach -additional functionality by defining ATANH to be the inverse of TANH . -This is done by the commands - - ____________________________________________________________ - - put('tanh,'inverse,'atanh); - put('atanh,'inverse,'tanh); - ____________________________________________________________ - - -File: redhelp, Node: ATAN2, Next: COS, Prev: ATANH, Up: Elementary Functions section - - ATAN2 operator - -syntax: - - ATAN2 (,) - - is any valid scalar REDUCE expression. In [*note -ROUNDED::.] mode, if a numerical value exists, ATAN2 returns the -principal value of the arc tangent of the second argument divided by -the first in the range [-pi,+pi] radians, using the signs of both -arguments to determine the quadrant of the return value. An expression -in terms of ATAN2 is returned in other cases. - -examples: - - ____________________________________________________________ - - atan2(3,2); - - ATAN2(3,2); - - - on rounded; - - atan2(3,2); - - 0.982793723247 - - - atan2(a,b); - - ATAN2(A,B); - - - atan2(1,0); - - 1.57079632679 - - ____________________________________________________________ - ATAN2 returns a numeric value only if [*note ROUNDED::.] is on. Then -ATAN2 is calculated to the current degree of floating point precision. - - -File: redhelp, Node: COS, Next: COSH, Prev: ATAN2, Up: Elementary Functions section - - COS operator - - The COS operator returns the cosine of its argument. - -syntax: - - COS () or COS - - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. - -examples: - - ____________________________________________________________ - - - - cos abc; - - COS(ABC) - - - - cos(pi); - - -1 - - - - cos 4; - - COS(4) - - - - on rounded; - - - cos(4); - - - 0.653643620864 - - - - cos log 5; - - - 0.0386319699339 - - ____________________________________________________________ - COS returns a numeric value only if [*note ROUNDED::.] is on. Then -the cosine is calculated to the current degree of floating point -precision. - - -File: redhelp, Node: COSH, Next: COT, Prev: COS, Up: Elementary Functions section - - COSH operator - - The COSH operator returns the hyperbolic cosine of its argument. -The derivative of COSH and some simple transformations are known to the -system. - -syntax: - - COSH () or COSH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - - cosh b; - - COSH(B) - - - - cosh(0); - - 1 - - - - df(cosh(x*y),x); - - SINH(X*Y)*Y - - - - int(cosh(x),x); - - SINH(X) - - ____________________________________________________________ - You may attach further functionality by defining its inverse (see -[*note ACOSH::.] ). A numeric value is not returned by COSH unless the -switch [*note ROUNDED::.] is on and its argument evaluates to a number. - - -File: redhelp, Node: COT, Next: COTH, Prev: COSH, Up: Elementary Functions section - - COT operator - - COT represents the cotangent of its argument. It takes an arbitrary -scalar expression as its argument. The derivative of ACOT and some -simple properties are known to the system. - -syntax: - - COT () or COT - - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - cot(a)*tan(a); - - COT(A)*TAN(A)) - - - cot(1); - - COT(1) - - - df(cot(2*x),x); - - 2 - - 2*(COT(2*X) + 1) - - ____________________________________________________________ - Numerical values of expressions involving COT may be found by -turning on the switch [*note ROUNDED::.] . - - -File: redhelp, Node: COTH, Next: CSC, Prev: COT, Up: Elementary Functions section - - COTH operator - - The COTH operator returns the hyperbolic cotangent of its argument. -The derivative of COTH and some simple transformations are known to the -system. - -syntax: - - COTH () or COTH - - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - df(coth(x*y),x); - - 2 - - Y*(COTH(X*Y) - 1) - - - - coth acoth z; - - Z - - ____________________________________________________________ - You can write [*note LET::.] statements and procedures to add further -functionality to COTH if you wish. Numerical values of expressions -involving COTH may also be found by turning on the switch [*note -ROUNDED::.] . - - -File: redhelp, Node: CSC, Next: CSCH, Prev: COTH, Up: Elementary Functions section - - CSC operator - - The CSC operator returns the cosecant of its argument. The -derivative of CSC and some simple transformations are known to the -system. - -syntax: - - CSC () or CSC - - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - - csc(q)*sin(q); - - CSC(Q)*SIN(Q) - - - - df(csc(x*y),x); - - -COT(X*Y)*CSC(X*Y)*Y - - ____________________________________________________________ - You can write [*note LET::.] statements and procedures to add further -functionality to CSC if you wish. Numerical values of expressions -involving CSC may also be found by turning on the switch [*note -ROUNDED::.] . - - -File: redhelp, Node: CSCH, Next: ERF, Prev: CSC, Up: Elementary Functions section - - CSCH operator - - The COSH operator returns the hyperbolic cosecant of its argument. -The derivative of CSCH and some simple transformations are known to the -system. - -syntax: - - CSCH () or CSCH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - - csch b; - - CSCH(B) - - - - csch(0); - - 0 - - - - df(csch(x*y),x); - - - COTH(X*Y)*CSCH(X*Y)*Y - - - - int(csch(x),x); - - INT(CSCH(X),X) - - ____________________________________________________________ - A numeric value is not returned by CSCH unless the switch [*note -ROUNDED::.] is on and its argument evaluates to a number. - - -File: redhelp, Node: ERF, Next: EXP, Prev: CSCH, Up: Elementary Functions section - - ERF operator - - The ERF operator represents the error function, defined by - - erf(x) = (2/sqrt(pi))*int(e^(-x^2),x) - - A limited number of its properties are known to the system, -including the fact that it is an odd function. Its derivative is known, -and from this, some integrals may be computed. However, a complete -integration procedure for this operator is not currently included. - -examples: - - ____________________________________________________________ - - erf(0); - - 0 - - - erf(-a); - - - ERF(A) - - - df(erf(x**2),x); - - 4*SQRT(PI)*X - ------------ - 4 - X - E *PI - - - - int(erf(x),x); - - 2 - X - E *ERF(X)*PI*X + SQRT(PI) - --------------------------- - 2 - X - E *PI - - ____________________________________________________________ - - -File: redhelp, Node: EXP, Next: SEC, Prev: ERF, Up: Elementary Functions section - - EXP operator - - The EXP operator returns E raised to the power of its argument. - -syntax: - - EXP () or EXP - - can be any valid REDUCE scalar expression. - must be a single identifier or begin with a prefix -operator. - -examples: - - ____________________________________________________________ - - exp(sin(x)); - - SIN X - E - - - exp(11); - - 11 - E - - - on rounded; - - exp sin(pi/3); - - 2.37744267524 - - ____________________________________________________________ - Numeric values are returned only when ROUNDED is on. The single -letter E with the exponential operator ^ or ** may be substituted for -EXP without change of function. - - -File: redhelp, Node: SEC, Next: SECH, Prev: EXP, Up: Elementary Functions section - - SEC operator - - The SEC operator returns the secant of its argument. - -syntax: - - SEC () or SEC - - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. - -examples: - - ____________________________________________________________ - - - - sec abc; - - SEC(ABC) - - - - sec(pi); - - -1 - - - - sec 4; - - SEC(4) - - - - on rounded; - - - sec(4); - - - 1.52988565647 - - - - sec log 5; - - - 25.8852966005 - - ____________________________________________________________ - SEC returns a numeric value only if [*note ROUNDED::.] is on. Then -the secant is calculated to the current degree of floating point -precision. - - -File: redhelp, Node: SECH, Next: SIN, Prev: SEC, Up: Elementary Functions section - - SECH operator - - The SECH operator returns the hyperbolic secant of its argument. - -syntax: - - SECH () or SECH - - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. - -examples: - - ____________________________________________________________ - - sech abc; - - SECH(ABC) - - - - sech(0); - - 1 - - - - sech 4; - - SECH(4) - - - - on rounded; - - - sech(4); - - 0.0366189934737 - - - - sech log 5; - - 0.384615384615 - - ____________________________________________________________ - SECH returns a numeric value only if [*note ROUNDED::.] is on. Then -the expression is calculated to the current degree of floating point -precision. - - -File: redhelp, Node: SIN, Next: SINH, Prev: SECH, Up: Elementary Functions section - - SIN operator - - The SIN operator returns the sine of its argument. - -syntax: - - SIN () or SIN - - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. - -examples: - - ____________________________________________________________ - - sin aa; - - SIN(AA) - - - sin(pi/2); - - 1 - - - on rounded; - - sin 3; - - 0.14112000806 - - - sin(pi/2); - - 1.0 - - ____________________________________________________________ - SIN returns a numeric value only if ROUNDED is on. Then the sine is -calculated to the current degree of floating point precision. The -argument in this case is assumed to be in radians. - - -File: redhelp, Node: SINH, Next: TAN, Prev: SIN, Up: Elementary Functions section - - SINH operator - - The SINH operator returns the hyperbolic sine of its argument. The -derivative of SINH and some simple transformations are known to the -system. - -syntax: - - SINH () or SINH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - - sinh b; - - SINH(B) - - - - sinh(0); - - 0 - - - df(sinh(x**2),x); - - 2 - 2*COSH(X )*X - - - int(sinh(4*x),x); - - COSH(4*X) - --------- - 4 - - - on rounded; - - sinh 4; - - 27.2899171971 - - ____________________________________________________________ - You may attach further functionality by defining its inverse (see -[*note ASINH::.] ). A numeric value is not returned by SINH unless the -switch [*note ROUNDED::.] is on and its argument evaluates to a number. - - -File: redhelp, Node: TAN, Next: TANH, Prev: SINH, Up: Elementary Functions section - - TAN operator - - The TAN operator returns the tangent of its argument. - -syntax: - - TAN () or TAN - - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. - -examples: - - ____________________________________________________________ - - tan a; - - TAN(A) - - - tan(pi/5); - - PI - TAN(--) - 5 - - - on rounded; - tan(pi/5); - - 0.726542528005 - - ____________________________________________________________ - TAN returns a numeric value only if ROUNDED is on. Then the tangent -is calculated to the current degree of floating point accuracy. - - When [*note ROUNDED::.] is on, no check is made to see if the -argument of TAN is a multiple of pi/2, for which the tangent goes to -positive or negative infinity. (Of course, since REDUCE uses a -fixed-point representation of pi/2, it produces a large but not -infinite number.) You need to make a check for multiples of pi/2 in any -program you use that might possibly ask for the tangent of such a -quantity. - - -File: redhelp, Node: TANH, Prev: TAN, Up: Elementary Functions section - - TANH operator - - The TANH operator returns the hyperbolic tangent of its argument. -The derivative of TANH and some simple transformations are known to the -system. - -syntax: - - TANH () or TANH - - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. - -examples: - - ____________________________________________________________ - - tanh b; - - TANH(B) - - - tanh(0); - - 0 - - - df(tanh(x*y),x); - - 2 - Y*( - TANH(X*Y) + 1) - - - int(tanh(x),x); - - 2*X - LOG(E + 1) - X - - - on rounded; tanh 2; - - 0.964027580076 - - ____________________________________________________________ - You may attach further functionality by defining its inverse (see -[*note ATANH::.] ). A numeric value is not returned by TANH unless the -switch [*note ROUNDED::.] is on and its argument evaluates to a number. - - -File: redhelp, Node: Elementary Functions section, Next: General Switches section, Prev: Input and Output section, Up: Top - - Elementary Functions section - -* Menu: - -* ACOS:: operator -* ACOSH:: operator -* ACOT:: operator -* ACOTH:: operator -* ACSC:: operator -* ACSCH:: operator -* ASEC:: operator -* ASECH:: operator -* ASIN:: operator -* ASINH:: operator -* ATAN:: operator -* ATANH:: operator -* ATAN2:: operator -* COS:: operator -* COSH:: operator -* COT:: operator -* COTH:: operator -* CSC:: operator -* CSCH:: operator -* ERF:: operator -* EXP:: operator -* SEC:: operator -* SECH:: operator -* SIN:: operator -* SINH:: operator -* TAN:: operator -* TANH:: operator - - -File: redhelp, Node: SWITCHES, Next: ALGINT, Up: General Switches section - - SWITCHES introduction - - Switches are set on or off using the commands [*note ON::.] or -[*note OFF::.] , respectively. The default setting of the switches -described in this section is [*note OFF::.] unless stated otherwise. - - -File: redhelp, Node: ALGINT, Next: ALLBRANCH, Prev: SWITCHES, Up: General Switches section - - ALGINT switch - - When the ALGINT switch is on, the algebraic integration module (which -must be loaded from the REDUCE library) is used for integration. - - Loading ALGINT from the library automatically turns on the ALGINT -switch. An error message will be given if ALGINT is turned on when the -ALGINT has not been loaded from the library. - - -File: redhelp, Node: ALLBRANCH, Next: ALLFAC, Prev: ALGINT, Up: General Switches section - - ALLBRANCH switch - - When ALLBRANCH is on, the operator [*note SOLVE::.] selects all -branches of solutions. When ALLBRANCH is off, it selects only the -principal branches. Default is ON . - -examples: - - ____________________________________________________________ - - - solve(log(sin(x+3)),x); - - {X=2*ARBINT(1)*PI - ASIN(1) - 3, - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3} - - - off allbranch; - - solve(log(sin(x+3)),x); - - X=ASIN(1) - 3 - - ____________________________________________________________ - [*note ARBINT::.] (1) indicates an arbitrary integer, which is given -a unique identifier by REDUCE, showing that there are infinitely many -solutions of this type. When ALLBRANCH is off, the single canonical -solution is given. - - -File: redhelp, Node: ALLFAC, Next: ARBVARS, Prev: ALLBRANCH, Up: General Switches section - - ALLFAC switch - - The ALLFAC switch, when on, causes REDUCE to factor out automatically -common products in the output of expressions. Default is ON . - -examples: - - ____________________________________________________________ - - x + x*y**3 + x**2*cos(z); - - 3 - X*(COS(Z)*X + Y + 1) - - - off allfac; - - x + x*y**3 + x**2*cos(z); - - 2 3 - COS(Z)*X + X*Y + X - - ____________________________________________________________ - The ALLFAC switch has no effect when PRI is off. Although the switch -setting stays as it was, printing behavior is as if it were off. - - -File: redhelp, Node: ARBVARS, Next: BALANCED_MOD, Prev: ALLFAC, Up: General Switches section - - ARBVARS switch - - When ARBVARS is on, the solutions of singular or underdetermined -systems of equations are presented in terms of arbitrary complex -variables (see [*note ARBCOMPLEX::.] ). Otherwise, the solution is -parametrized in terms of some of the input variables. Default is ON . - -examples: - - ____________________________________________________________ - - solve({2x + y,4x + 2y},{x,y}); - - arbcomplex(1) - {{x= - -------------,y=arbcomplex(1)}} - 2 - - - solve({sqrt(x)+ y**3-1},{x,y}); - - - 6 3 - {{y=arbcomplex(2),x=y - 2*y + 1}} - - - off arbvars; - - solve({2x + y,4x + 2y},{x,y}); - - y - {{x= - -}} - 2 - - - solve({sqrt(x)+ y**3-1},{x,y}); - - - 6 3 - {{x=y - 2*y + 1}} - - ____________________________________________________________ - With ARBVARS off, the return value [[]] means that the equations -given to [*note SOLVE::.] imply no relation among the input variables. - - -File: redhelp, Node: BALANCED_MOD, Next: BFSPACE, Prev: ARBVARS, Up: General Switches section - - BALANCED_MOD switch - - [*note MODULAR::.] numbers are normally produced in the range -[0,...), where is the current modulus. With BALANCED_MOD on, the -range [-/2,/2] is used instead. - -examples: - - ____________________________________________________________ - - setmod 7; - - 1 - - - on modular; - - 4; - - 4 - - - on balanced_mod; - - 4; - - -3 - - ____________________________________________________________ - - -File: redhelp, Node: BFSPACE, Next: COMBINEEXPT, Prev: BALANCED_MOD, Up: General Switches section - - BFSPACE switch - - Floating point numbers are normally printed in a compact notation -(either fixed point or in scientific notation if [*note -SCIENTIFIC_NOTATION::.] has been used). In some (but not all) cases, it -helps comprehensibility if spaces are inserted in the number at regular -intervals. The switch BFSPACE , if on, will cause a blank to be -inserted in the number after every five characters. - -examples: - - ____________________________________________________________ - - on rounded; - - 1.2345678; - - 1.2345678 - - - on bfspace; - - 1.2345678; - - 1.234 5678 - - ____________________________________________________________ - - BFSPACE is normally off. - - -File: redhelp, Node: COMBINEEXPT, Next: COMBINELOGS, Prev: BFSPACE, Up: General Switches section - - COMBINEEXPT switch - - REDUCE is in general poor at surd simplification. However, when the -switch COMBINEEXPT is on, the system attempts to combine exponentials -whenever possible. - -examples: - - ____________________________________________________________ - - 3^(1/2)*3^(1/3)*3^(1/6); - - 1/3 1/6 - SQRT(3)*3 *3 - - - on combineexpt; - - ws; - - 1 - - ____________________________________________________________ - - -File: redhelp, Node: COMBINELOGS, Next: COMP, Prev: COMBINEEXPT, Up: General Switches section - - COMBINELOGS switch - - In many cases it is desirable to expand product arguments of -logarithms, or collect a sum of logarithms into a single logarithm. -Since these are inverse operations, it is not possible to provide rules -for doing both at the same time and preserve the REDUCE concept of -idempotent evaluation. As an alternative, REDUCE provides two switches -[*note EXPANDLOGS::.] and COMBINELOGS to carry out these operations. - -examples: - - ____________________________________________________________ - - on expandlogs; - - log(x*y); - - LOG(X) + LOG(Y) - - - on combinelogs; - - ws; - - LOG(X*Y) - - ____________________________________________________________ - - At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. - - -File: redhelp, Node: COMP, Next: COMPLEX, Prev: COMBINELOGS, Up: General Switches section - - COMP switch - - When COMP is on, any succeeding function definitions are compiled -into a faster-running form. Default is OFF . - -examples: - - ____________________________________________________________ - ____________________________________________________________ - The following procedure finds Fibonacci numbers recursively. Create -a new file "refib" in your current directory with the following lines -in it: - ____________________________________________________________ - - - procedure refib(n); - if fixp n and n >= 0 then - if n <= 1 then 1 - else refib(n-1) + refib(n-2) - else rederr "nonnegative integer only"; - - end; - - ____________________________________________________________ - Now load REDUCE and run the following: - ____________________________________________________________ - - - on time; - - Time: 100 ms - - - - in "refib"$ - - Time: 0 ms - - - - - - REFIB - - - - - - Time: 260 ms - - - - - - Time: 20 ms - - - - refib(80); - - 37889062373143906 - - - - - - Time: 14840 ms - - - - on comp; - - Time: 80 ms - - - - in "refib"$ - - Time: 20 ms - - - - - - REFIB - - - - - - Time: 640 ms - - - - refib(80); - - 37889062373143906 - - - - - - Time: 10940 ms - - ____________________________________________________________ - - Note that the compiled procedure runs faster. Your time messages will -differ depending upon which system you have. Compiled functions remain -so for the duration of the REDUCE session, and are then lost. They must -be recompiled if wanted in another session. With the switch [*note -TIME::.] on as shown above, the CPU time used in executing the command -is returned in milliseconds. Be careful not to leave COMP on unless you -want it, as it makes the processing of procedures much slower. - - -File: redhelp, Node: COMPLEX, Next: CREF, Prev: COMP, Up: General Switches section - - COMPLEX switch - - When the COMPLEX switch is on, full complex arithmetic is used in -simplification, function evaluation, and factorization. Default is OFF . - -examples: - - ____________________________________________________________ - - - factorize(a**2 + b**2); - - 2 2 - {A + B } - - - on complex; - - - factorize(a**2 + b**2); - - {A - I*B,A + I*B} - - - - (x**2 + y**2)/(x + i*y); - - X - I*Y - - - - on rounded; - - *** Domain mode COMPLEX changed to COMPLEX_FLOAT - - - - sqrt(-17); - - 4.12310562562*I - - - - log(7*i); - - 1.94591014906 + 1.57079632679*I - - ____________________________________________________________ - Complex floating-point can be done by turning on [*note ROUNDED::.] -in addition to COMPLEX . With COMPLEX off however, REDUCE knows that i -is the square root of -1 but will not carry out more complicated -complex operations. If you want complex denominators cleared by -multiplication by their conjugates, turn on the switch [*note -RATIONALIZE::.] . - - -File: redhelp, Node: CREF, Next: CRAMER, Prev: COMPLEX, Up: General Switches section - - CREF switch - - The switch CREF invokes the CREF cross-reference program that -processes a set of procedure definitions to produce a summary of their -entry points, undefined procedures, non-local variables and so on. The -program will also check that procedures are called with a consistent -number of arguments, and print a diagnostic message otherwise. - - The output is alphabetized on the first seven characters of each -function name. - - To invoke the cross-reference program, CREF is first turned on. -This causes the program to load and the cross-referencing process to -begin. After all the required definitions are loaded, turning CREF off -will cause a cross-reference listing to be produced. - - Algebraic procedures in REDUCE are treated as if they were symbolic, -so that algebraic constructs will actually appear as calls to symbolic -functions, such as AEVAL . - - -File: redhelp, Node: CRAMER, Next: DEFN, Prev: CREF, Up: General Switches section - - CRAMER switch - - When the CRAMER switch is on, [*note MATRIX::.] inversion and linear -equation solving (operator [*note SOLVE::.] ) is done by Cramer's rule, -through exterior multiplication. Default is OFF . - -examples: - - ____________________________________________________________ - - on time; - - Time: 80 ms - - - off output; - - Time: 100 ms - - - mm := mat((a,b,c,d,f),(a,a,c,f,b),(b,c,a,c,d), (c,c,a,b,f), - (d,a,d,e,f)); - - - Time: 300 ms - - - inverse := 1/mm; - - Time: 18460 ms - - - on cramer; - - Time: 80 ms - - - cramersinv := 1/mm; - - Time: 9260 ms - - ____________________________________________________________ - Your time readings will vary depending on the REDUCE version you use. -After you invert the matrix, turn on [*note OUTPUT::.] and ask for one -of the elements of the inverse matrix, such as CRAMERSINV(3,2) , so that -you can see the size of the expressions produced. - - Inversion of matrices and the solution of linear equations with dense -symbolic entries in many variables is generally considerably faster with -CRAMER on. However, inversion of numeric-valued matrices is slower. -Consider the matrices you're inverting before deciding whether to turn -CRAMER on or off. A substantial portion of the time in matrix inversion -is given to formatting the results for printing. To save this time, -turn OUTPUT off, as shown in this example or terminate the expression -with a dollar sign instead of a semicolon. The results are still -available to you in the workspace associated with your prompt number, -or you can assign them to an identifier for further use. - - -File: redhelp, Node: DEFN, Next: DEMO, Prev: CRAMER, Up: General Switches section - - DEFN switch - - When the switch DEFN is on, the Standard Lisp equivalent of the -input statement or procedure is printed, but not evaluated. Default is -OFF . - -examples: - - ____________________________________________________________ - - - on defn; - - - 17/3; - - (AEVAL (LIST 'QUOTIENT 17 3)) - - - - df(sin(x),x,2); - - - (AEVAL (LIST 'DF (LIST 'SIN 'X) 'X 2)) - - - procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; - - - (AEVAL - (PROGN - (FLAG '(COSHVAL) 'OPFN) - (DE COSHVAL (A) - (PROG (G) - (SETQ G - (AEVAL - (LIST - 'QUOTIENT - (LIST - 'PLUS - (LIST 'EXP A) - (LIST 'EXP (LIST 'MINUS A))) - 2))) - (RETURN G)))) ) - - - - coshval(1); - - (AEVAL (LIST 'COSHVAL 1)) - - - - off defn; - - - coshval(1); - - Declare COSHVAL operator? (Y or N) - - - - n - - procedure coshval(a); - begin scalar g; - g := (exp(a) + exp(-a))/2; - return g - end; - - - COSHVAL - - - - on rounded; - - - coshval(1); - - 1.54308063482 - - ____________________________________________________________ - The above function COSHVAL finds the hyperbolic cosine (cosh) of its -argument. When DEFN is on, you can see the Standard Lisp equivalent of -the function, but it is not entered into the system as shown by the -message DECLARE COSHVAL OPERATOR? . It must be reentered with DEFN off -to be recognized. This procedure is used as an example; a more -efficient procedure would eliminate the unnecessary local variable with - ____________________________________________________________ - - procedure coshval(a); - (exp(a) + exp(-a))/2; - ____________________________________________________________ - - -File: redhelp, Node: DEMO, Next: DFPRINT, Prev: DEFN, Up: General Switches section - - DEMO switch - - The DEMO switch is used for interactive files, causing the system to -pause after each command in the file until you type a RETURN . Default -is OFF . - - The switch DEMO has no effect on top level interactive statements. -Use it when you want to slow down operations in a file so you can see -what is happening. - - You can either include the ON DEMO command in the file, or enter it -from the top level before bringing in any file. Unlike the [*note -PAUSE::.] command, ON DEMO does not permit you to interrupt the file -for questions of your own. - - -File: redhelp, Node: DFPRINT, Next: DIV, Prev: DEMO, Up: General Switches section - - DFPRINT switch - - When DFPRINT is on, expressions in the differentiation operator -[*note DF::.] are printed in a more "natural" notation, with the -differentiation variables appearing as subscripts. In addition, if the -switch [*note NOARG::.] is on (the default), the arguments of the -differentiated operator are suppressed. - -examples: - - ____________________________________________________________ - - operator f; - - df(f x,x); - - DF(F(X),X); - - - on dfprint; - - ws; - - F - X - - - df(f(x,y),x,y); - - F - Y - - - off noarg; - - ws; - - F(X,Y) - X - - ____________________________________________________________ - - -File: redhelp, Node: DIV, Next: ECHO, Prev: DFPRINT, Up: General Switches section - - DIV switch - - When DIV is on, the system divides any simple factors found in the -denominator of an expression into the numerator. Default is OFF . - -examples: - - ____________________________________________________________ - - - on div; - - - a := x**2/y**2; - - 2 -2 - A := X *Y - - - - b := a/(3*z); - - 1 2 -2 -1 - B := -*X *Y *Z - 3 - - - - off div; - - - a; - - 2 - X - --- - 2 - Y - - - - b; - - 2 - X - ------- - 2 - 3*Y *Z - - ____________________________________________________________ - The DIV switch only has effect when the [*note PRI::.] switch is on. -When PRI is off, regardless of the setting of DIV , the printing -behavior is as if DIV were off. - - -File: redhelp, Node: ECHO, Next: ERRCONT, Prev: DIV, Up: General Switches section - - ECHO switch - - The ECHO switch is normally off for top-level entry, and on when -files are brought in. If ECHO is turned on at the top level, your input -statements are echoed to the screen (thus appearing twice). Default OFF -(but note default ON for files). - - If you want to display certain portions of a file and not others, -use the commands OFF ECHO and ON ECHO inside the file. If you want no -display of the file, use the input command - - IN filename$ - - rather than using the semicolon delimiter. - - Be careful when you use commands within a file to generate another -file. Since ECHO is on for files, the output file echoes input -statements (unlike its behavior from the top level). You should -explicitly turn off ECHO when writing output, and turn it back on when -you're done. - - -File: redhelp, Node: ERRCONT, Next: EVALLHSEQP, Prev: ECHO, Up: General Switches section - - ERRCONT switch - - When the ERRCONT switch is on, error conditions do not stop file -execution. Error messages will be printed whether ERRCONT is on or off. - - Default is OFF . - - The following describes what happens when an error occurs in a file -under each setting of ERRCONT and INT : - - Both off: Message is printed and parsing continues, but no further -statements are executed; no commands from keyboard accepted except bye -or end; - - ERRCONT off, INT on: Message is printed, and you are asked if you -wish to continue. (This is the default behavior); - - ERRCONT on, INT off: Message is printed, and file continues to -execute without pause; - - Both on: Message is printed, and file continues to execute without -pause. - - -File: redhelp, Node: EVALLHSEQP, Next: EXP switch, Prev: ERRCONT, Up: General Switches section - - EVALLHSEQP switch - - Under normal circumstances, the right-hand-side of an [*note -EQUATION::.] is evaluated but not the left-hand-side. This also applies -to any substitutions made by the [*note SUB::.] operator. If both sides -are to be evaluated, the switch EVALLHSEQP should be turned on. - - -File: redhelp, Node: EXP switch, Next: EXPANDLOGS, Prev: EVALLHSEQP, Up: General Switches section - - EXP switch - - When the EXP switch is on, powers and products of expressions are -expanded. Default is ON . - -examples: - - ____________________________________________________________ - - (x+1)**3; - - 3 2 - X + 3*X + 3*X + 1 - - - (a + b*i)*(c + d*i); - - A*C + A*D*I + B*C*I - B*D - - - off exp; - - (x+1)**3; - - 3 - (X + 1) - - - (a + b*i)*(c + d*i); - - (A + B*I)*(C + D*I) - - - length((x+1)**2/(y+1)); - - 2 - - ____________________________________________________________ - Note that REDUCE knows that i^2 = -1. When EXP is off, equivalent -expressions may not simplify to the same form, although zero -expressions still simplify to zero. Several operators that expect a -polynomial argument behave differently when EXP is off, such as [*note -LENGTH::.] . Be cautious about leaving EXP off. - - -File: redhelp, Node: EXPANDLOGS, Next: EZGCD, Prev: EXP switch, Up: General Switches section - - EXPANDLOGS switch - - In many cases it is desirable to expand product arguments of -logarithms, or collect a sum of logarithms into a single logarithm. -Since these are inverse operations, it is not possible to provide rules -for doing both at the same time and preserve the REDUCE concept of -idempotent evaluation. As an alternative, REDUCE provides two switches -EXPANDLOGS and [*note COMBINELOGS::.] to carry out these operations. -Both are off by default. - -examples: - - ____________________________________________________________ - - on expandlogs; - - log(x*y); - - LOG(X) + LOG(Y) - - - on combinelogs; - - ws; - - LOG(X*Y) - - ____________________________________________________________ - - At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. - - -File: redhelp, Node: EZGCD, Next: FACTOR, Prev: EXPANDLOGS, Up: General Switches section - - EZGCD switch - - When EZGCD and [*note GCD::.] are on, greatest common divisors are -computed using the EZ GCD algorithm that uses modular arithmetic (and is -usually faster). Default is OFF . - - As a side effect of the gcd calculation, the expressions involved are -factored, though not the heavy-duty factoring of [*note FACTORIZE::.] . -The EZ GCD algorithm was introduced in a paper by J. Moses and D.Y.Y. -Yun in , 1973, pp. 159-166. - - Note that the [*note GCD::.] switch must also be on for EZGCD to have -effect. - - -File: redhelp, Node: FACTOR, Next: FAILHARD, Prev: EZGCD, Up: General Switches section - - FACTOR switch - - When the FACTOR switch is on, input expressions and results are -automatically factored. - -examples: - - ____________________________________________________________ - - - on factor; - - - aa := 3*x**3*a + 6*x**2*y*a + 3*x**3*b + 6*x**2*y*b - - + x*y*a + 2*y**2*a + x*y*b + 2*y**2*b; - - - - 2 - AA := (A + B)*(3*X + Y)*(X + 2*Y) - - - off factor; - - aa; - - 3 2 2 3 2 - 3*A*X + 6*A*X *Y + A*X*Y + 2*A*Y + 3*B*X + 6*B*X *Y - - - + B*X*Y + 2*B*Y^{2} - - on factor; - - ab := x**2 - 2; - - 2 - AB := X - 2 - - ____________________________________________________________ - REDUCE factors univariate and multivariate polynomials with integer -coefficients, finding any factors that also have integer coefficients. -The factoring is done by reducing multivariate problems to univariate -ones with symbolic coefficients, and then solving the univariate ones -modulo small primes. The results of these calculations are merged to -determine the factors of the original polynomial. The factorizer -normally selects evaluation points and primes using a random number -generator. Thus, the detailed factoring behavior may be different each -time any particular problem is tackled. - - When the FACTOR switch is turned on, the [*note EXP::.] switch is -turned off, and when the FACTOR switch is turned off, the [*note -EXP::.] switch is turned on, whether it was on previously or not. - - When the switch [*note TRFAC::.] is on, informative messages are -generated at each call to the factorizer. The [*note TRALLFAC::.] -switch causes the production of a more verbose trace message. It takes -precedence over TRFAC if they are both on. - - To factor a polynomial explicitly and store the results, use the -operator [*note FACTORIZE::.] . - - -File: redhelp, Node: FAILHARD, Next: FORT, Prev: FACTOR, Up: General Switches section - - FAILHARD switch - - When the FAILHARD switch is on, the integration operator [*note -INT::.] terminates with an error message if the integral cannot be done -in closed terms. Default is off. - - Use the FAILHARD switch when you are dealing with complicated -integrals and want to know immediately if REDUCE was unable to handle -them. The integration operator sometimes returns a formal integration -form that is more complicated than the original expression, when it is -unable to complete the integration. - - -File: redhelp, Node: FORT, Next: FORTUPPER, Prev: FAILHARD, Up: General Switches section - - FORT switch - - When FORT is on, output is given Fortran-compatible syntax. Default -is OFF . - -examples: - - ____________________________________________________________ - - on fort; - - df(sin(7*x + y),x); - - ANS=7.*COS(7*X+Y) - - - on rounded; - - b := log(sin(pi/5 + n*pi)); - - B=LOG(SIN(3.14159265359*N+0.628318530718)) - - ____________________________________________________________ - REDUCE results can be written to a file (using [*note OUT::.] ) and -used as data by Fortran programs when FORT is in effect. FORT knows -about correct statement length, continuation characters, defining a -symbol when it is first used, and other Fortran details. - - The [*note GENTRAN::.] package offers many more possibilities than -the FORT switch. It produces Fortran (or C or Ratfor) code from REDUCE -procedures or structured specifications, including facilities for -producing double precision output. - - -File: redhelp, Node: FORTUPPER, Next: FULLPREC, Prev: FORT, Up: General Switches section - - FORTUPPER switch - - When FORTUPPER is on, any Fortran-style output appears in upper case. -Default is OFF . - -examples: - - ____________________________________________________________ - - on fort; - - df(sin(7*x + y),x); - - ans=7.*cos(7*x+y) - - - on fortupper; - - df(sin(7*x + y),x); - - ANS=7.*COS(7*X+Y) - - ____________________________________________________________ - - -File: redhelp, Node: FULLPREC, Next: FULLROOTS, Prev: FORTUPPER, Up: General Switches section - - FULLPREC switch - - Trailing zeroes of rounded numbers to the full system precision are -normally not printed. If this information is needed, for example to get -a more understandable indication of the accuracy of certain data, the -switch FULLPREC can be turned on. - -examples: - - ____________________________________________________________ - - on rounded; - - 1/2; - - 0.5 - - - on fullprec; - - ws; - - 0.500000000000 - - ____________________________________________________________ - This is just an output options which neither influences the accuracy -of the computation nor does it give additional information about the -precision of the results. See also [*note SCIENTIFIC_NOTATION::.] . - - -File: redhelp, Node: FULLROOTS, Next: GC, Prev: FULLPREC, Up: General Switches section - - FULLROOTS switch - - Since roots of cubic and quartic polynomials can often be very -messy, a switch FULLROOTS controls the production of results in closed -form. [*note SOLVE::.] will apply the formulas for explicit forms for -degrees 3 and 4 only if FULLROOTS is ON . Otherwise the result forms -are built using [*note ROOT_OF::.] . Default is OFF . - - -File: redhelp, Node: GC, Next: GCD switch, Prev: FULLROOTS, Up: General Switches section - - GC switch - - With the GC switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. - - See [*note RECLAIM::.] for an explanation of garbage collection. -REDUCE does garbage collection when needed even if you have turned the -notices off. - - -File: redhelp, Node: GCD switch, Next: HORNER, Prev: GC, Up: General Switches section - - GCD switch - - When GCD is on, common factors in numerators and denominators of -expressions are canceled. Default is OFF . - -examples: - - ____________________________________________________________ - - - (2*(f*h)**2 - f**2*g*h - (f*g)**2 - f*h**3 + f*h*g**2 - - h**4 + g*h**3)/(f**2*h - f**2*g - f*h**2 + 2*f*g*h - - f*g**2 - g*h**2 + g**2*h); - - - 2 2 2 2 2 2 3 3 4 - F *G + F *G*H - 2*F *H - F*G *H + F*H - G*H + H - ---------------------------------------------------- - 2 2 2 2 2 2 - F *G - F *H + F*G - 2*F*G*H + F*H - G *H + G*H - - - on gcd; - - ws; - - 2 - F*G + 2*F*H + H - ---------------- - F + G - - - e2 := a*c + a*d + b*c + b*d; - - E2 := A*C + A*D + B*C + B*D - - - off exp; - - e2; - - (A + B)*(C + D) - - ____________________________________________________________ - Even with GCD off, a check is automatically made for common variable -and numerical products in the numerators and denominators of expression, -and the appropriate cancellations made. Thus the example demonstrating -the use of GCD is somewhat complicated. Note when [*note EXP::.] is off, -GCD has the side effect of factoring the expression. - - -File: redhelp, Node: HORNER, Next: IFACTOR, Prev: GCD switch, Up: General Switches section - - HORNER switch - - When the HORNER switch is on, polynomial expressions are printed in -Horner's form for faster and safer numerical evaluation. Default is OFF -. The leading variable of the expression is selected as Horner -variable. To select the Horner variable explicitly use the [*note -KORDER::.] declaration. - -examples: - - ____________________________________________________________ - - on horner; - - (13p-4q)^3; - - 3 2 - ( - 64)*q + p*(624*q + p*(( - 2028)*q + p*2197)) - - - korder q; - - ws; - - 3 2 - 2197*p + q*(( - 2028)*p + q*(624*p + q*(-64))) - - ____________________________________________________________ - - -File: redhelp, Node: IFACTOR, Next: INT switch, Prev: HORNER, Up: General Switches section - - IFACTOR switch - - When the IFACTOR switch is on, any integer terms appearing as a -result of the [*note FACTORIZE::.] command are factored themselves into -primes. Default is OFF . If the argument of FACTORIZE is an integer, -IFACTOR has no effect, since the integer is always factored. - -examples: - - ____________________________________________________________ - - factorize(4*x**2 + 28*x + 48); - - {4,X + 3,X + 4} - - - factorize(22587); - - {3,7529} - - - on ifactor; - - factorize(4*x**2 + 28*x + 48); - - {2,2,X + 4,X + 3} - - - factorize(22587); - - {3,7529} - - ____________________________________________________________ - Constant terms that appear within nonconstant polynomial factors are -not factored. - - The IFACTOR switch affects only factoring done specifically with -[*note FACTORIZE::.] , not on factoring done automatically when the -[*note FACTOR::.] switch is on. - - -File: redhelp, Node: INT switch, Next: INTSTR, Prev: IFACTOR, Up: General Switches section - - INT switch - - The INT switch specifies an interactive mode of operation. Default -ON . - - There is no reason to turn INT off during interactive calculations, -since there are no benefits to be gained. If you do have INT off while -inputting a file, and REDUCE finds an error, it prints the message -"Continuing with parsing only." In this state, REDUCE accepts only -[*note END::.] ; or [*note BYE::.] ; from the keyboard; everything -else is ignored, even the command ON INT . - - -File: redhelp, Node: INTSTR, Next: LCM, Prev: INT switch, Up: General Switches section - - INTSTR switch - - If INTSTR (for "internal structure") is on, arguments of an operator -are printed in a more structured form. - -examples: - - ____________________________________________________________ - - operator f; - - f(2x+2y); - - F(2*X + 2*Y) - - - on intstr; - - ws; - - F(2*(X + Y)) - - ____________________________________________________________ - - -File: redhelp, Node: LCM, Next: LESSSPACE, Prev: INTSTR, Up: General Switches section - - LCM switch - - The LCM switch instructs REDUCE to compute the least common multiple -of denominators whenever rational expressions occur. Default is ON . - -examples: - - ____________________________________________________________ - - off lcm; - - z := 1/(x**2 - y**2) + 1/(x-y)**2; - - - - 2*X*(X - Y) - Z := ------------------------- - 4 3 3 4 - X - 2*X *Y + 2*X*Y - Y - - - on lcm; - - z; - - 2*X*(X - Y) - ------------------------- - 4 3 3 4 - X - 2*X *Y + 2*X*Y - Y - - - zz := 1/(x**2 - y**2) + 1/(x-y)**2; - - - - 2*X - ZZ := --------------------- - 3 2 2 3 - X - X *Y - X*Y + Y - - - on gcd; - - z; - - 2*X - ---------------------- - 3 2 2 3 - X - X *Y - X*Y + Y - - ____________________________________________________________ - Note that LCM has effect only when rational expressions are first -combined. It does not examine existing structures for simplifications on -display. That is shown above when z is entered with LCM off. It -remains unsimplified even after LCM is turned back on. However, a new -variable containing the same expression is simplified on entry. The -switch [*note GCD::.] does examine existing structures, as shown in the -last example line above. - - Full greatest common divisor calculations become expensive if work -with large rational expressions is required. A considerable savings of -time can be had if a full gcd check is made only when denominators are -combined, and only a partial check for numerators. This is the effect -of the LCM switch. - - -File: redhelp, Node: LESSSPACE, Next: LIMITEDFACTORS, Prev: LCM, Up: General Switches section - - LESSSPACE switch - - You can turn on the switch LESSSPACE if you want fewer blank lines -in your output. - - -File: redhelp, Node: LIMITEDFACTORS, Next: LIST switch, Prev: LESSSPACE, Up: General Switches section - - LIMITEDFACTORS switch - - To get limited factorization in cases where it is too expensive to -use full multivariate polynomial factorization, the switch -LIMITEDFACTORS can be turned on. In that case, only "inexpensive" -factoring operations, such as square-free factorization, will be used -when [*note FACTORIZE::.] is called. - -examples: - - ____________________________________________________________ - - a := (y-x)^2*(y^3+2x*y+5)*(y^2-3x*y+7)$ - - factorize a; - - { - X + Y, - X - Y, - 3 - 2*X*Y + Y + 5, - 2 - 3*X*Y - Y - 7} - - - on limitedfactors; - - factorize a; - - { - X + Y, - X - Y, - 2 2 4 3 5 3 2 - 6*X *Y + 3*X*Y - 2*X*Y + X*Y - Y - 7*Y - 5*Y - 35} - - ____________________________________________________________ - - -File: redhelp, Node: LIST switch, Next: LISTARGS, Prev: LIMITEDFACTORS, Up: General Switches section - - LIST switch - - The LIST switch causes REDUCE to print each term in any sum on -separate lines. - -examples: - - ____________________________________________________________ - - x**2*(y**2 + 2*y) + x*(y**2 + z)/(2*a); - - - - 2 2 - X*(2*A*X*Y + 4*A*X*Y + Y +Z) - ------------------------------ - 2*A - - - on list; - - ws; - - 2 - (X*(2*A*X*Y - + 4*A*X*Y - 2 - + Y - + Z))/(2*A) - - ____________________________________________________________ - - -File: redhelp, Node: LISTARGS, Next: MCD, Prev: LIST switch, Up: General Switches section - - LISTARGS switch - - If an operator other than those specifically defined for lists is -given a single argument that is a list, then the result of this -operation will be a list in which that operator is applied to each -element of the list. This process can be inhibited globally by turning -on the switch LISTARGS . - -examples: - - ____________________________________________________________ - - log {a,b,c}; - - LOG(A),LOG(B),LOG(C) - - - on listargs; - - log {a,b,c}; - - LOG(A,B,C) - - ____________________________________________________________ - It is possible to inhibit such distribution for a specific operator -by using the declaration [*note LISTARGP::.] . In addition, if an -operator has more than one argument, no such distribution occurs, so -LISTARGS has no effect. - - -File: redhelp, Node: MCD, Next: MODULAR, Prev: LISTARGS, Up: General Switches section - - MCD switch - - When MCD is on, sums and differences of rational expressions are put -on a common denominator. Default is ON . - -examples: - - ____________________________________________________________ - - a/(x+1) + b/5; - - 5*A + B*X + B - ------------- - 5*(X + 1) - - - off mcd; - - a/(x+1) + b/5; - - -1 - (X + 1) *A + 1/5*B - - - 1/6 + 1/7; - - 13/42 - - ____________________________________________________________ - Even with MCD off, rational expressions involving only numbers are -still put over a common denominator. - - Turning MCD off is useful when explicit negative powers are needed, -or if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when MCD is -off are no longer in canonical form, and expressions equivalent to zero -may not simplify to 0. Some operations, such as factoring cannot be done -while MCD is off. This option should therefore be used with some -caution. Turning MCD off is most valuable in intermediate parts of a -complicated calculation, and should be turned back on for the last -stage. - - -File: redhelp, Node: MODULAR, Next: MSG, Prev: MCD, Up: General Switches section - - MODULAR switch - - When MODULAR is on, polynomial coefficients are reduced by the -modulus set by [*note SETMOD::.] . If no modulus has been set, MODULAR -has no effect. - -examples: - - ____________________________________________________________ - - setmod 2; - - 1 - - - on modular; - - (x+y)**2; - - 2 2 - X + Y - - - 145*x**2 + 20*x**3 + 17 + 15*x*y; - - - - 2 - X + X*Y + 1 - - ____________________________________________________________ - Modular operations are only conducted on the coefficients, not the -exponents. The modulus is not restricted to being prime. When the -modulus is prime, division by a number not relatively prime to the -modulus results in a error message. When the modulus is -a composite number, division by a power of the modulus results in an -error message, but division by an integer which is a factor of the -modulus does not. The representation of modular number can be -influenced by [*note BALANCED_MOD::.] . - - -File: redhelp, Node: MSG, Next: MULTIPLICITIES, Prev: MODULAR, Up: General Switches section - - MSG switch - - When MSG is off, the printing of warning messages is suppressed. -Error messages are still printed. - - Warning messages include those about redimensioning an [*note -ARRAY::.] or declaring an [*note OPERATOR::.] where one is expected. - - -File: redhelp, Node: MULTIPLICITIES, Next: NAT, Prev: MSG, Up: General Switches section - - MULTIPLICITIES switch - - When [*note SOLVE::.] is applied to a set of equations with multiple -roots, solution multiplicities are normally stored in the global -variable [*note ROOT_MULTIPLICITIES::.] rather than the solution list. -If you want the multiplicities explicitly displayed, the switch -MULTIPLICITIES should be turned on. In this case, ROOT_MULTIPLICITIES -has no value. - -examples: - - ____________________________________________________________ - - solve(x^2=2x-1,x); - - X=1 - - - root_multiplicities; - - 2 - - - on multiplicities; - - solve(x^2=2x-1,x); - - X=1,X=1 - - - root_multiplicities; - - ____________________________________________________________ - - -File: redhelp, Node: NAT, Next: NERO, Prev: MULTIPLICITIES, Up: General Switches section - - NAT switch - - When NAT is on, output is printed to the screen in natural form, with -raised exponents. NAT should be turned off when outputting expressions -to a file for future input. Default is ON . - -examples: - - ____________________________________________________________ - - (x + y)**3; - - 3 2 2 3 - X + 3*X *Y + 3*X*Y + Y - - - off nat; - - (x + y)**3; - - X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ - - - on fort; - - (x + y)**3; - - ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3 - - ____________________________________________________________ - With NAT off, a dollar sign is printed at the end of each expression. -An output file written with NAT off is ready to be read into REDUCE -using the command [*note IN::.] . - - -File: redhelp, Node: NERO, Next: NOARG, Prev: NAT, Up: General Switches section - - NERO switch - - When NERO is on, zero assignments (such as matrix elements) are not -printed. - -examples: - - ____________________________________________________________ - - matrix a; - a := mat((1,0),(0,1)); - - A(1,1) := 1 - A(1,2) := 0 - A(2,1) := 0 - A(2,2) := 1 - - - on nero; - - a; - - MAT(1,1) := 1 - MAT(2,2) := 1 - - - a(1,2); - ____________________________________________________________ - nothing is printed. - ____________________________________________________________ - - - - b := 0; - ____________________________________________________________ - nothing is printed. - ____________________________________________________________ - - - - off nero; - - b := 0; - - B := 0 - - ____________________________________________________________ - - NERO is often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. - - -File: redhelp, Node: NOARG, Next: NOLNR, Prev: NERO, Up: General Switches section - - NOARG switch - - When [*note DFPRINT::.] is on, expressions in the differentiation -operator [*note DF::.] are printed in a more "natural" notation, with -the differentiation variables appearing as subscripts. When NOARG is on -(the default), the arguments of the differentiated operator are also -suppressed. - -examples: - - ____________________________________________________________ - - operator f; - - df(f x,x); - - DF(F(X),X); - - - on dfprint; - - ws; - - F - X - - - off noarg; - - ws; - - F(X) - X - - ____________________________________________________________ - - -File: redhelp, Node: NOLNR, Next: NOSPLIT, Prev: NOARG, Up: General Switches section - - NOLNR switch - - When NOLNR is on, the linear properties of the integration operator -[*note INT::.] are suppressed if the integral cannot be found in -closed terms. - - REDUCE uses the linear properties of integration to attempt to break -down an integral into manageable pieces. If an integral cannot be found -in closed terms, these pieces are returned. When the NOLNR switch is -off, as many of the pieces as possible are integrated. When it is on, -if any piece fails, the rest of them remain unevaluated. - - -File: redhelp, Node: NOSPLIT, Next: NUMVAL, Prev: NOLNR, Up: General Switches section - - NOSPLIT switch - - Under normal circumstances, the printing routines try to break an -expression across lines at a natural point. This is a fairly expensive -process. If you are not overly concerned about where the end-of-line -breaks come, you can speed up the printing of expressions by turning -off the switch NOSPLIT . This switch is normally on. - - -File: redhelp, Node: NUMVAL, Next: OUTPUT, Prev: NOSPLIT, Up: General Switches section - - NUMVAL switch - - With [*note ROUNDED::.] on, elementary functions with numerical -arguments will return a numerical answer where appropriate. If you wish -to inhibit this evaluation, NUMVAL should be turned off. It is normally -on. - -examples: - - ____________________________________________________________ - - on rounded; - - cos 3.4; - - - 0.966798192579 - - - off numval; - - cos 3.4; - - COS(3.4) - - ____________________________________________________________ - - -File: redhelp, Node: OUTPUT, Next: OVERVIEW, Prev: NUMVAL, Up: General Switches section - - OUTPUT switch - - When OUTPUT is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default -is ON . - - Turn output OFF if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large -expressions for display. Results are still available with [*note WS::.] -, or in their assigned variables. - - -File: redhelp, Node: OVERVIEW, Next: PERIOD, Prev: OUTPUT, Up: General Switches section - - OVERVIEW switch - - When OVERVIEW is on, the amount of detail reported by the factorizer -switches [*note TRFAC::.] and [*note TRALLFAC::.] is reduced. - - -File: redhelp, Node: PERIOD, Next: PRECISE, Prev: OVERVIEW, Up: General Switches section - - PERIOD switch - - When PERIOD is on, periods are added after integers in -Fortran-compatible output (when [*note FORT::.] is on). There is no -effect when FORT is off. Default is ON . - - -File: redhelp, Node: PRECISE, Next: PRET, Prev: PERIOD, Up: General Switches section - - PRECISE switch - - When the PRECISE switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. -Default is ON . - -examples: - - ____________________________________________________________ - - sqrt(x**2); - - X - - - (x**2)**(1/4); - - SQRT(X) - - - on precise; - - sqrt(x**2); - - ABS(X) - - - (x**2)**(1/4); - - SQRT(ABS(X)) - - ____________________________________________________________ - In many types of mathematical work, simplification of powers and -surds can proceed by the fastest means of simplifying the exponents -arithmetically. When it is important to you that the positive root be -returned, turn PRECISE on. One situation where this is important is -when graphing square-root expressions such as sqrt(x^2+y^2) to avoid a -spike caused by REDUCE simplifying sqrt(y^2) to y when x is zero. - - -File: redhelp, Node: PRET, Next: PRI, Prev: PRECISE, Up: General Switches section - - PRET switch - - When PRET is on, input is printed in standard REDUCE format and then -evaluated. - -examples: - - ____________________________________________________________ - - on pret; - - (x+1)^3; - - (x + 1)**3; - 3 2 - X + 3*X + 3*X + 1 - - - - procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - - - procedure fac n; - if not (fixp n and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n - 1 product i + 1; - FAC - - - - fac 5; - - fac 5; - 120 - - ____________________________________________________________ - Note that all input is converted to lower case except strings (which -keep the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on -each side. In addition, syntactical constructs like IF ...THEN ...ELSE -are printed in a standard format. - - -File: redhelp, Node: PRI, Next: RAISE, Prev: PRET, Up: General Switches section - - PRI switch - - When PRI is on, the declarations [*note ORDER::.] and [*note -FACTOR::.] can be used, and the switches [*note ALLFAC::.] , [*note -DIV::.] , [*note RAT::.] , and [*note REVPRI::.] take effect when they -are on. Default is ON . - - Printing of expressions is faster with PRI off. The expressions are -then returned in one standard form, without any of the display options -that can be used to feature or display various parts of the expression. -You can also gain insight into REDUCE's representation of expressions -with PRI off. - - -File: redhelp, Node: RAISE, Next: RAT, Prev: PRI, Up: General Switches section - - RAISE switch - - When RAISE is on, lower case letters are automatically converted to -upper case on input. RAISE is normally on. - - This conversion affects the internal representation of the letter, -and is independent of the case with which a letter is printed, which is -normally lower case. - - -File: redhelp, Node: RAT, Next: RATARG, Prev: RAISE, Up: General Switches section - - RAT switch - - When the RAT switch is on, and kernels have been selected to display -with the [*note FACTOR::.] declaration, the denominator is printed with -each term rather than one common denominator at the end of an -expression. - -examples: - - ____________________________________________________________ - - (x+1)/x + x**2/sin y; - - - 3 - SIN(Y)*X + SIN(Y) + X - ---------------------- factor x; - SIN(Y)*X - - - (x+1)/x + x**2/sin y; - - - 3 - X + X*SIN(Y) + SIN(Y) - ---------------------- on rat; - X*SIN(Y) - - - (x+1)/x + x**2/sin y; - - - 2 - X -1 - ------ + 1 + X - SIN(Y) - - ____________________________________________________________ - The RAT switch only has effect when the [*note PRI::.] switch is on. -When PRI is off, regardless of the setting of RAT , the printing -behavior is as if RAT were off. RAT only has effect upon the display of -expressions, not their internal form. - - -File: redhelp, Node: RATARG, Next: RATIONAL, Prev: RAT, Up: General Switches section - - RATARG switch - - When RATARG is on, rational expressions can be given to operators -such as [*note COEFF::.] and [*note LTERM::.] that normally require -polynomials in one of their arguments. When RATARG is off, rational -expressions cause an error message. - -examples: - - ____________________________________________________________ - - aa := x/y**2 + 1/x + y/x**2; - - - 3 2 3 - X + X*Y + Y - AA := -------------- - 2 2 - X *Y - - - coeff(aa,x); - - 3 2 3 - X + X*Y + Y - ***** -------------- invalid as POLYNOMIAL - 2 2 - X *Y - - - on ratarg; - - coeff(aa,x); - - - Y 1 1 - {--,--,0,-----} - 2 2 2 2 - X X X *Y - - ____________________________________________________________ - - -File: redhelp, Node: RATIONAL, Next: RATIONALIZE, Prev: RATARG, Up: General Switches section - - RATIONAL switch - - When RATIONAL is on, polynomial expressions with rational -coefficients are produced. - -examples: - - ____________________________________________________________ - - x/2 + 3*y/4; - - 2*X + 3*Y - --------- - 4 - - - (x**2 + 5*x + 17)/2; - - 2 - X + 5*X + 17 - ------------- - 2 - - - on rational; - - x/2 + 3y/4; - - 1 3 - -*(X + -*Y) - 2 2 - - - (x**2 + 5*x + 17)/2; - - 1 2 - -*(X + 5*X + 17) - 2 - - ____________________________________________________________ - By using RATIONAL , polynomial expressions with rational -coefficients can be used in some commands that expect polynomials. With -RATIONAL off, such a polynomial becomes a rational expression, with -denominator the least common multiple of the denominators of the -rational number coefficients. - - -File: redhelp, Node: RATIONALIZE, Next: RATPRI, Prev: RATIONAL, Up: General Switches section - - RATIONALIZE switch - - When the RATIONALIZE switch is on, denominators of rational -expressions that contain complex numbers or root expressions are -simplified by multiplication by their conjugates. - -examples: - - ____________________________________________________________ - - qq := (1+sqrt(3))/(sqrt(3)-7); - - SQRT(3) + 1 - QQ := ----------- - SQRT(3) - 7 - - - on rationalize; - - qq; - - - 4*SQRT(3) - 5 - --------------- - 23 - - - 2/(4 + 6**(1/3)); - - 2/3 1/3 - 6 - 4*6 + 16 - ------------------ - 35 - - - (i-1)/(i+3); - - 2*I - 1 - ------- - 5 - - - off rationalize; - - (i-1)/(i+3); - - I - 1 - ------ - I + 3 - - ____________________________________________________________ - - -File: redhelp, Node: RATPRI, Next: REVPRI, Prev: RATIONALIZE, Up: General Switches section - - RATPRI switch - - When the RATPRI switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a -linear style. Default is ON . - -examples: - - ____________________________________________________________ - - 3/17; - - 3 - -- - 17 - - - 2/b + 3/y; - - 3*B + 2*Y - --------- - B*Y - - - off ratpri; - - 3/17; - - 3/17 - - - 2/b + 3/y; - - (3*B + 2*Y)/(B*Y) - - ____________________________________________________________ - - -File: redhelp, Node: REVPRI, Next: RLISP88, Prev: RATPRI, Up: General Switches section - - REVPRI switch - - When the REVPRI switch is on, terms are printed in reverse order from -the normal printing order. - -examples: - - ____________________________________________________________ - - x**5 + x**2 + 18 + sqrt(y); - - 5 2 - SQRT(Y) + X + X + 18 - - - a + b + c + w; - - A + B + C + W - - - on revpri; - - x**5 + x**2 + 18 + sqrt(y); - - 2 5 - 17 + X + X + SQRT(Y) - - - a + b + c + w; - - W + C + B + A - - ____________________________________________________________ - Turn REVPRI on when you want to display a polynomial in ascending -rather than descending order. - - -File: redhelp, Node: RLISP88, Next: ROUNDALL, Prev: REVPRI, Up: General Switches section - - RLISP88 switch - - Rlisp '88 is a superset of the Rlisp that has been traditionally -used for the support of REDUCE. It is fully documented in the book -Marti, J.B., "RLISP '88: An Evolutionary Approach to Program Design and -Reuse", World Scientific, Singapore (1993). It supports different -looping constructs from the traditional Rlisp, and treats "-" as a -letter unless separated by spaces. Turning on the switch RLISP88 -converts to Rlisp '88 parsing conventions in symbolic mode, and enables -the use of Rlisp '88 extensions. Turning off the switch reverts to the -traditional Rlisp and the previous mode ( ([*note SYMBOLIC::.] or -[*note ALGEBRAIC::.] ) in force before RLISP88 was turned on. - - -File: redhelp, Node: ROUNDALL, Next: ROUNDBF, Prev: RLISP88, Up: General Switches section - - ROUNDALL switch - - In [*note ROUNDED::.] mode, rational numbers are normally converted -to a floating point representation. If ROUNDALL is off, this conversion -does not occur. ROUNDALL is normally ON . - -examples: - - ____________________________________________________________ - - on rounded; - - 1/2; - - 0.5 - - - off roundall; - ____________________________________________________________ - - -File: redhelp, Node: ROUNDBF, Next: ROUNDED, Prev: ROUNDALL, Up: General Switches section - - ROUNDBF switch - - When [*note ROUNDED::.] is on, the normal defaults cause underflows -to be converted to zero. If you really want the small number that -results in such cases, ROUNDBF can be turned on. - -examples: - - ____________________________________________________________ - - on rounded; - - exp(-100000.1^2); - - 0 - - - on roundbf; - - exp(-100000.1^2); - - 1.18441281937E-4342953505 - - ____________________________________________________________ - If a polynomial is input in [*note ROUNDED::.] mode at the default -precision into any [*note ROOTS::.] function, and it is not possible to -represent any of the coefficients of the polynomial precisely in the -system floating point representation, the switch ROUNDBF will be -automatically turned on. All rounded computation will use the internal -bigfloat representation until the user subsequently turns ROUNDBF off. -(A message is output to indicate that this condition is in effect.) - - -File: redhelp, Node: ROUNDED, Next: SAVESTRUCTR, Prev: ROUNDBF, Up: General Switches section - - ROUNDED switch - - When ROUNDED is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 -digits. The precise number can be found by the command [*note -PRECISION::.] (0). - -examples: - - ____________________________________________________________ - - pi; - - PI - - - 35/217; - - 5 - -- - 31 - - - on rounded; - - pi; - - 3.14159265359 - - - 35/217; - - 0.161 - - - sqrt(3); - - 1.73205080756 - - ____________________________________________________________ - - If more than the default number of decimal places are required, use -the [*note PRECISION::.] command to set the required number. - - -File: redhelp, Node: SAVESTRUCTR, Next: SOLVESINGULAR, Prev: ROUNDED, Up: General Switches section - - SAVESTRUCTR switch - - When SAVESTRUCTR is on, results of the [*note STRUCTR::.] command are -returned as a list whose first element is the representation for the -expression and the remaining elements are equations showing the -relationships of the generated variables. - -examples: - - ____________________________________________________________ - - off exp; - - structr((x+y)^3 + sin(x)^2); - - ANS3 - where - 3 2 - ANS3 := ANS1 + ANS2 - ANS2 := SIN(X) - ANS1 := X + Y - - - ans3; - - ANS3 - - - on savestructr; - - structr((x+y)^{3} + sin(x)^{2}); - - 3 2 - ANS3,ANS3=ANS1 + ANS2 ,ANS2=SIN(X),ANS1=X + Y - - - ans3 where rest ws; - - 3 2 - (X + Y) + SIN(X) - - ____________________________________________________________ - In normal operation, [*note STRUCTR::.] is only a display command. -With SAVESTRUCTR on, you can access the various parts of the expression -produced by STRUCTR . - - The generic system names use the stem ANS . You can change this to -your own stem by the command [*note VARNAME::.] . REDUCE adds integers -to this stem to make unique identifiers. - - -File: redhelp, Node: SOLVESINGULAR, Next: TIME, Prev: SAVESTRUCTR, Up: General Switches section - - SOLVESINGULAR switch - - When SOLVESINGULAR is on, singular or underdetermined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is ON . - -examples: - - ____________________________________________________________ - - solve({2x + y,4x + 2y},{x,y}); - - ARBCOMPLEX(1) - {{X= - -------------,Y=ARBCOMPLEX(1)}} - 2 - - - solve({7x + 15y - z,x - y - z},{x,y,z}); - - - 8*ARBCOMPLEX(3) - {{X=---------------- - 11 - 3*ARBCOMPLEX(3) - Y= - ---------------- - 11 - Z=ARBCOMPLEX(3)}} - - - off solvesingular; - - solve({2x + y,4x + 2y},{x,y}); - - ***** SOLVE given singular equations - - - solve({7x + 15y - z,x - y - z},{x,y,z}); - - - ***** SOLVE given singular equations - - ____________________________________________________________ - The integer following the identifier [*note ARBCOMPLEX::.] above is -assigned by the system, and serves to identify the variable uniquely. -It has no other significance. - - -File: redhelp, Node: TIME, Next: TRALLFAC, Prev: SOLVESINGULAR, Up: General Switches section - - TIME switch - - When TIME is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. - -examples: - - ____________________________________________________________ - - on time; - - Time: 4940 ms - - - df(sin(x**2 + y),y); - - 2 - COS(X + Y ) - Time: 180 ms - - - solve(x**2 - 6*y,x); - - {X= - SQRT(Y)*SQRT(6), - X=SQRT(Y)*SQRT(6)} - Time: 320 ms - - ____________________________________________________________ - When TIME is first turned on, the time since the beginning of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed -after the results of each command. Idle time or time spent typing in -commands is not counted. If TIME is turned off, the first reading after -it is turned on again gives the time elapsed since it was turned off. -The time printed is CPU or wall clock time, depending on the system. - - -File: redhelp, Node: TRALLFAC, Next: TRFAC, Prev: TIME, Up: General Switches section - - TRALLFAC switch - - When TRALLFAC is on, a more detailed trace of factorizer calls is -generated. - - The TRALLFAC switch takes precedence over [*note TRFAC::.] if they -are both on. TRFAC gives a factorization trace with less detail in it. -When the [*note FACTOR::.] switch is on also, all input polynomials are -sent to the factorizer automatically and trace information is -generated. The [*note OUT::.] command saves the results of the -factoring, but not the trace. - - -File: redhelp, Node: TRFAC, Next: TRIGFORM, Prev: TRALLFAC, Up: General Switches section - - TRFAC switch - - When TRFAC is on, a narrative trace of any calls to the factorizer is -generated. Default is OFF . - - When the switch [*note FACTOR::.] is on, and TRFAC is on, every input -polynomial is sent to the factorizer, and a trace generated. With -FACTOR off, only polynomials that are explicitly factored with the -command [*note FACTORIZE::.] generate trace information. - - The [*note OUT::.] command saves the results of the factoring, but -not the trace. The [*note TRALLFAC::.] switch gives trace information -to a greater level of detail. - - -File: redhelp, Node: TRIGFORM, Next: TRINT, Prev: TRFAC, Up: General Switches section - - TRIGFORM switch - - When [*note FULLROOTS::.] is on, [*note SOLVE::.] will compute the -roots of a cubic or quartic polynomial is closed form. When TRIGFORM -is on, the roots will be expressed by trigonometric forms. Otherwise -nested surds are used. Default is ON . - - -File: redhelp, Node: TRINT, Next: TRNONLNR, Prev: TRIGFORM, Up: General Switches section - - TRINT switch - - When TRINT is on, a narrative tracing various steps in the -integration process is produced. - - The [*note OUT::.] command saves the results of the integration, but -not the trace. - - -File: redhelp, Node: TRNONLNR, Next: VAROPT, Prev: TRINT, Up: General Switches section - - TRNONLNR switch - - When TRNONLNR is on, a narrative tracing various steps in the -process for solving non-linear equations is produced. - - TRNONLNR can only be used after the solve package has been loaded -(e.g., by an explicit call of [*note LOAD_PACKAGE::.] ). The [*note -OUT::.] command saves the results of the equation solving, but not the -trace. - - -File: redhelp, Node: VAROPT, Prev: TRNONLNR, Up: General Switches section - - VAROPT switch - - When VAROPT is on, the sequence of variables is optimized by [*note -SOLVE::.] with respect to execution speed. Otherwise, the sequence -given in the call to [*note SOLVE::.] is preserved. Default is ON . - - In combination with the switch [*note ARBVARS::.] , VAROPT can be -used to control variable elimination. - -examples: - - ____________________________________________________________ - - off arbvars; - - solve({x+2z,x-3y},{x,y,z}); - - x x - {{y=-,z= - -}} - 3 2 - - - solve({x*y=1,z=x},{x,y,z}); - - 1 - {{z=x,y=-}} - x - - - off varopt; - - solve({x+2z,x-3y},{x,y,z}); - - 2*z - {{x= - 2*z,y= - ---}} - 3 - - - solve({x*y=1,z=x},{x,y,z}); - - 1 - {{y=-,x=z}} - z - - ____________________________________________________________ - - -File: redhelp, Node: General Switches section, Next: Matrix Operations section, Prev: Elementary Functions section, Up: Top - - General Switches section - -* Menu: - -* SWITCHES:: introduction -* ALGINT:: switch -* ALLBRANCH:: switch -* ALLFAC:: switch -* ARBVARS:: switch -* BALANCED_MOD:: switch -* BFSPACE:: switch -* COMBINEEXPT:: switch -* COMBINELOGS:: switch -* COMP:: switch -* COMPLEX:: switch -* CREF:: switch -* CRAMER:: switch -* DEFN:: switch -* DEMO:: switch -* DFPRINT:: switch -* DIV:: switch -* ECHO:: switch -* ERRCONT:: switch -* EVALLHSEQP:: switch -* EXP switch:: switch -* EXPANDLOGS:: switch -* EZGCD:: switch -* FACTOR:: switch -* FAILHARD:: switch -* FORT:: switch -* FORTUPPER:: switch -* FULLPREC:: switch -* FULLROOTS:: switch -* GC:: switch -* GCD switch:: switch -* HORNER:: switch -* IFACTOR:: switch -* INT switch:: switch -* INTSTR:: switch -* LCM:: switch -* LESSSPACE:: switch -* LIMITEDFACTORS:: switch -* LIST switch:: switch -* LISTARGS:: switch -* MCD:: switch -* MODULAR:: switch -* MSG:: switch -* MULTIPLICITIES:: switch -* NAT:: switch -* NERO:: switch -* NOARG:: switch -* NOLNR:: switch -* NOSPLIT:: switch -* NUMVAL:: switch -* OUTPUT:: switch -* OVERVIEW:: switch -* PERIOD:: switch -* PRECISE:: switch -* PRET:: switch -* PRI:: switch -* RAISE:: switch -* RAT:: switch -* RATARG:: switch -* RATIONAL:: switch -* RATIONALIZE:: switch -* RATPRI:: switch -* REVPRI:: switch -* RLISP88:: switch -* ROUNDALL:: switch -* ROUNDBF:: switch -* ROUNDED:: switch -* SAVESTRUCTR:: switch -* SOLVESINGULAR:: switch -* TIME:: switch -* TRALLFAC:: switch -* TRFAC:: switch -* TRIGFORM:: switch -* TRINT:: switch -* TRNONLNR:: switch -* VAROPT:: switch - - -File: redhelp, Node: COFACTOR, Next: DET, Up: Matrix Operations section - - COFACTOR operator - - The operator COFACTOR returns the cofactor of the element in row - and column of a [*note MATRIX::.] . Errors occur if - or do not evaluate to integer expressions or if the -matrix is not square. - -syntax: - - COFACTOR (,,) - -examples: - - ____________________________________________________________ - - cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); - - - A*R - C*P - - - cofactor(mat((a,b,c),(d,e,f)),1,1); - - - ***** non-square matrix - - ____________________________________________________________ - - -File: redhelp, Node: DET, Next: MAT, Prev: COFACTOR, Up: Matrix Operations section - - DET operator - - The DET operator returns the determinant of its (square [*note -MATRIX::.] ) argument. - -syntax: - - DET () or DET - - must evaluate to a square matrix. - -examples: - - ____________________________________________________________ - - - matrix m,n; - - - m := mat((a,b),(c,d)); - - M(1,1) := A - M(1,2) := B - M(2,1) := C - M(2,2) := D - - - - det m; - - A*D - B*C - - - n := mat((1,2),(1,2)); - - N(1,1) := 1 - N(1,2) := 2 - N(2,1) := 1 - N(2,2) := 2 - - - - - det(n); - - 0 - - - - det(5); - - 5 - - ____________________________________________________________ - Given a numerical argument, DET returns the number. However, given a -variable name that has not been declared of type matrix, or a non-square -matrix, DET returns an error message. - - -File: redhelp, Node: MAT, Next: MATEIGEN, Prev: DET, Up: Matrix Operations section - - MAT operator - - The MAT operator is used to represent a two-dimensional [*note -MATRIX::.] . - -syntax: - - MAT ((,*) (, *)*) - - may be any valid REDUCE scalar expression. - -examples: - - ____________________________________________________________ - - mat((1,2),(3,4)); - - MAT(1,1) := 1 - MAT(2,3) := 2 - MAT(2,1) := 3 - MAT(2,2) := 4 - - - mat(2,1); - - ***** Matrix mismatch - Cont? (Y or N) - - - matrix qt; - - qt := ws; - - QT(1,1) := 1 - QT(1,2) := 2 - QT(2,1) := 3 - QT(2,2) := 4 - - - matrix a,b; - - a := mat((x),(y),(z)); - - A(1,1) := X - A(2,1) := Y - A(3,1) := Z - - - b := mat((sin x,cos x,1)); - - B(1,1) := SIN(X) - B(1,2) := COS(X) - B(1,3) := 1 - - ____________________________________________________________ - Matrices need not have a size declared (unlike arrays). MAT -redimensions a matrix variable as needed. It is necessary, of course, -that all rows be the same length. An anonymous matrix, as shown in the -first example, must be named before it can be referenced (note error -message). When using MAT to fill a 1 x n matrix, the row of values must -be inside a second set of parentheses, to eliminate ambiguity. - - -File: redhelp, Node: MATEIGEN, Next: MATRIX, Prev: MAT, Up: Matrix Operations section - - MATEIGEN operator - - The MATEIGEN operator calculates the eigenvalue equation and the -corresponding eigenvectors of a [*note MATRIX::.] . - -syntax: - - MATEIGEN (,) - - must be a declared matrix of values, and must be -a legal REDUCE identifier. - -examples: - - ____________________________________________________________ - - aa := mat((2,5),(1,0))$ - - mateigen(aa,alpha); - - 2 - {{ALPHA - 2*ALPHA - 5, - 1, - 5*ARBCOMPLEX(1) - MAT(1,1) := ---------------, - ALPHA - 2 - @ - MAT(2,1) := ARBCOMPLEX(1) - }} - - charpoly := first first ws; - - 2 - CHARPOLY := ALPHA - 2*ALPHA - 5 - - - bb := mat((1,0,1),(1,1,0),(0,0,1))$ - - mateigen(bb,lamb); - - {{LAMB - 1,3, - [ 0 ] - [ARBCOMPLEX(2)] - [ 0 ] - }} - - ____________________________________________________________ - The MATEIGEN operator returns a list of lists of three elements. The -first element is a square free factor of the characteristic polynomial; -the second element is its multiplicity; and the third element is the -corresponding eigenvector. If the characteristic polynomial can be -completely factored, the product of the first elements of all the -sublists will produce the minimal polynomial. You can access the -various parts of the answer with the usual list access operators. - - If the matrix is degenerate, more than one eigenvector can be -produced for the same eigenvalue, as shown by more than one arbitrary -variable in the eigenvector. The identification numbers of the -arbitrary complex variables shown in the examples above may not be the -same as yours. Note that since LAMBDA is a reserved word in REDUCE, -you cannot use it as a tag-id for this operator. - - -File: redhelp, Node: MATRIX, Next: NULLSPACE, Prev: MATEIGEN, Up: Matrix Operations section - - MATRIX declaration - - Identifiers are declared to be of type MATRIX . - -syntax: - - MATRIX option (,) - - , option (,)* - - must not be an already-defined operator or array or the -name of a scalar variable. Dimensions are optional, and if used appear -inside parentheses. must be a positive integer. - -examples: - - ____________________________________________________________ - - matrix a,b(1,4),c(4,4); - - b(1,1); - - 0 - - - a(1,1); - - ***** Matrix A not set - - - a := mat((x0,y0),(x1,y1)); - - A(1,1) := X0 - A(1,2) := Y0 - A(2,1) := X0 - A(2,2) := X1 - - - length a; - - {2,2} - - - b := a**2; - - 2 - B(1,1) := X0 + X1*Y0 - B(1,2) := Y0*(X0 + Y1) - B(2,1) := X1*(X0 + Y1) - 2 - B(2,2) := X1*Y0 + Y1 - - ____________________________________________________________ - When a matrix variable has not been dimensioned, matrix elements -cannot be referenced until the matrix is set by the [*note MAT::.] -operator. When a matrix is dimensioned in its declaration, matrix -elements are set to 0. Matrix elements cannot stand for themselves. -When you use [*note LET::.] on a matrix element, there is no effect -unless the element contains a constant, in which case an error message -is returned. The same behavior occurs with [*note CLEAR::.] . Do -use [*note CLEAR::.] to try to set a matrix element to 0. [*note -LET::.] statements can be applied to matrices as a whole, if the -right-hand side of the expression is a matrix expression, and the -left-hand side identifier has been declared to be a matrix. - - Arithmetical operators apply to matrices of the correct dimensions. -The operators + and - can be used with matrices of the same dimensions. -The operator * can be used to multiply m x n matrices by n x p -matrices. Matrix multiplication is non-commutative. Scalars can also be -multiplied with matrices, with the result that each element of the -matrix is multiplied by the scalar. The operator / applied to two -matrices computes the first matrix multiplied by the inverse of the -second, if the inverse exists, and produces an error message otherwise. -Matrices can be divided by scalars, which results in dividing each -element of the matrix. Scalars can also be divided by matrices when the -matrices are invertible, and the result is the multiplication of the -scalar by the inverse of the matrix. Matrix inverses can by found by -1/A or /A , where A is a matrix. Square matrices can be raised to -positive integer powers, and also to negative integer powers if they are -nonsingular. - - When a matrix variable is assigned to the results of a calculation, -the matrix is redimensioned if necessary. - - -File: redhelp, Node: NULLSPACE, Next: RANK, Prev: MATRIX, Up: Matrix Operations section - - NULLSPACE operator - -syntax: - - NULLSPACE () - - calculates for its [*note MATRIX::.] argument, A , a -list of linear independent vectors (a basis) whose linear combinations -satisfy the equation a x = 0. The basis is provided in a form such that -as many upper components as possible are isolated. - -examples: - - ____________________________________________________________ - - nullspace mat((1,2,3,4),(5,6,7,8)); - - - { - [ 1 ] - [ ] - [ 0 ] - [ ] - [ - 3] - [ ] - [ 2 ] - , - [ 0 ] - [ ] - [ 1 ] - [ ] - [ - 2] - [ ] - [ 1 ] - } - - ____________________________________________________________ - Note that with B := NULLSPACE A , the expression LENGTH B is the -nullity/ of A, and that SECOND LENGTH A - LENGTH B calculates the rank/ -of A. The rank of a matrix expression can also be found more directly -by the [*note RANK::.] operator. - - In addition to the REDUCE matrix form, NULLSPACE accepts as input a -matrix given as a [*note LIST::.] of lists, that is interpreted as a -row matrix. If that form of input is chosen, the vectors in the result -will be represented by lists as well. This additional input syntax -facilitates the use of NULLSPACE in applications different from -classical linear algebra. - - -File: redhelp, Node: RANK, Next: TP, Prev: NULLSPACE, Up: Matrix Operations section - - RANK operator - -syntax: - - RANK () - - RANK calculates the rank of its matrix argument. - -examples: - - ____________________________________________________________ - - rank mat((a,b,c),(d,e,f)); - - 2 - - ____________________________________________________________ - The argument to RANK can also be a [*note LIST::.] of lists, -interpreted either as a row matrix or a set of equations. If that form -of input is chosen, the vectors in the result will be represented by -lists as well. This additional input syntax facilitates the use of -RANK in applications different from classical linear algebra. - - -File: redhelp, Node: TP, Next: TRACE, Prev: RANK, Up: Matrix Operations section - - TP operator - - The TP operator returns the transpose of its [*note MATRIX::.] -argument. - -syntax: - - TP or TP () - - must be a matrix, which either has had its dimensions -set in its declaration, or has had values put into it by MAT . - -examples: - - ____________________________________________________________ - - matrix m,n; - - m := mat((1,2,3),(4,5,6))$ - - n := tp m; - - N(1,1) := 1 - N(1,2) := 4 - N(2,1) := 2 - N(2,2) := 5 - N(3,1) := 3 - N(3,2) := 6 - - ____________________________________________________________ - In an assignment statement involving TP , the matrix identifier on -the left-hand side is redimensioned to the correct size for the -transpose. - - -File: redhelp, Node: TRACE, Prev: TP, Up: Matrix Operations section - - TRACE operator - - The TRACE operator finds the trace of its [*note MATRIX::.] argument. - -syntax: - - TRACE () or TRACE - - or must evaluate to a square matrix. - -examples: - - ____________________________________________________________ - - matrix a; - - a := mat((x1,y1),(x2,y2))$ - - trace a; - - X1 + Y2 - - ____________________________________________________________ - The trace is the sum of the entries along the diagonal of a square -matrix. Given a non-matrix expression, or a non-square matrix, TRACE -returns an error message. - - -File: redhelp, Node: Matrix Operations section, Next: Groebner package section, Prev: General Switches section, Up: Top - - Matrix Operations section - -* Menu: - -* COFACTOR:: operator -* DET:: operator -* MAT:: operator -* MATEIGEN:: operator -* MATRIX:: declaration -* NULLSPACE:: operator -* RANK:: operator -* TP:: operator -* TRACE:: operator - - -File: redhelp, Node: Groebner bases, Next: Ideal Parameters, Up: Groebner package section - - GROEBNER BASES introduction - - The GROEBNER package calculates GROEBNER BASES using the -BUCHBERGER ALGORITHM and provides related algorithms for arithmetic -with ideal bases, such as ideal quotients, Hilbert polynomials ( -HOLLMANN ALGORITHM ), basis conversion ( FAUGERE-GIANNI-LAZARD-MORA -ALGORITHM ), independent variable set ( KREDEL-WEISPFENNING ALGORITHM ). - - Some routines of the Groebner package are used by [*note SOLVE::.] - -in that context the package is loaded automatically. However, if you -want to use the package by explicit calls you must load it by - ____________________________________________________________ - - load_package groebner; - ____________________________________________________________ - - For the common parameter setting of most operators in this package -see [*note Ideal Parameters::.] . - - -File: redhelp, Node: Ideal Parameters, Next: Term order section, Prev: Groebner bases, Up: Groebner package section - - IDEAL PARAMETERS - - Most operators of the GROEBNER package compute expressions in a -polynomial ring which given as [,,...] where is the -current REDUCE coefficient domain. All algebraically exact domains of -REDUCE are supported. The package can operate over rings and fields. -The operation mode is distinguished automatically. In general the ring -mode is a bit faster than the field mode. The factoring variant can be -applied only over domains which allow you factoring of multivariate -polynomials. - - The variable sequence is either declared explicitly as argument -in form of a [*note LIST::.] in [*note TORDER::.] , or it is extracted -automatically from the expressions. In the second case the current -REDUCE system order is used (see [*note KORDER::.] ) for arranging the -variables. If some kernels should play the role of formal parameters -(the ground domain then is the polynomial ring over these), the -variable sequences must be given explicitly. - - All REDUCE [*note KERNEL::.] s can be used as variables. But please -note, that all variables are considered as independent. E.g. when using -SIN(A) and COS(A) as variables, the basic relation -SIN(A)^2+COS(A)^2-1=0 must be explicitly added to an equation set -because the Groebner operators don't include such knowledge -automatically. - - The terms (monomials) in polynomials are arranged according to the -current [*note Term order::.] . Note that the algebraic properties of -the computed results only are valid as long as neither the ordering nor -the variable sequence changes. - - The input expressions can be polynomials

, rational -functions / or equations = built from polynomials or -rational functions. Apart from the TRACING algorithms [*note -groebnert::.] and [*note preducet::.] , where the equations have a -specific meaning, equations are converted to simple expressions by -taking the difference of the left-hand and right-hand sides --=>

. Rational functions are converted to polynomials by -converting the expression to a common denominator form first, and then -using the numerator only =>

. So eventual zeros of the -denominators are ignored. - - A basis on input or output of an algorithm is coded as [*note -LIST::.] of expressions ,,... . - - -File: redhelp, Node: Term order, Next: TORDER, Up: Term order section - - TERM ORDER introduction - - For all GROEBNER operations the polynomials are represented in -distributive form: a sum of terms (monomials). The terms are ordered -corresponding to the actual TERM ORDER which is set by the [*note -TORDER::.] operator, and to the actual variable sequence which is -either given as explicit parameter or by the system [*note KERNEL::.] -order. - - -File: redhelp, Node: TORDER, Next: torder_compile, Prev: Term order, Up: Term order section - - TORDER operator - - The operator TORDER sets the actual variable sequence and term order. - - 1. simple term order: - -syntax: - - TORDER (, ) - - where is a [*note LIST::.] of variables ([*note KERNEL::.] s) -and is the name of a simple [*note Term order::.] mode [*note lex -term order::.] , [*note gradlex term order::.] , [*note revgradlex term -order::.] or another implemented parameterless mode. - - 2. stepped term order: - -syntax: - - TORDER (,,) - - where is the name of a two step term order, one of [*note -gradlexgradlex term order::.] , [*note gradlexrevgradlex term order::.] -, [*note lexgradlex term order::.] or [*note lexrevgradlex term -order::.] , and is a positive integer. - - 3. weighted term order - -syntax: - - TORDER (, WEIGHTED , ,,...); - - where the are positive integers, see [*note weighted term -order::.] . - - 4. matrix term order - -syntax: - - TORDER (, MATRIX , ); - - where is a matrix with integer elements, see [*note -torder_compile::.] . - - 5. compiled term order - -syntax: - - TORDER (, CO ); - - where is the name of a routine generated by [*note -torder_compile::.] . - - TORDER sets the variable sequence and the term order mode. If the an -empty list is used as variable sequence, the automatic variable -extraction is activated. The defaults are the empty variable list an the -[*note lex term order::.] . The previous setting is returned as a list. - - Alternatively to the above syntax the arguments of TORDER may be -collected in a [*note LIST::.] and passed as one argument to TORDER . - - -File: redhelp, Node: torder_compile, Next: lex term order, Prev: TORDER, Up: Term order section - - TORDER_COMPILE operator - - A matrix can be converted into a compilable LISP program for faster -execution by using - -syntax: - - TORDER_COMPILE (,) - - where is an identifier for the new term order and is an -integer matrix to be used as [*note matrix term order::.] . Afterwards -the term order can be activated by using in a [*note TORDER::.] -expression. The resulting program is compiled if the switch [*note -COMP::.] is on, or if the TORDER_COMPILE expression is part of a -compiled module. - - -File: redhelp, Node: lex term order, Next: gradlex term order, Prev: torder_compile, Up: Term order section - - LEX TERM ORDER - - The terms are ordered lexicographically: two terms t1 t2 are -compared for their degrees along the fixed variable sequence: t1 is -higher than t2 if the first different degree is higher in t1. This -order has the ELIMINATION PROPERTY for GROEBNER BASIS calculations. If -the ideal has a univariate polynomial in the last variable the groebner -basis will contain such polynomial. LEX is best suited for solving of -polynomial equation systems. - - -File: redhelp, Node: gradlex term order, Next: revgradlex term order, Prev: lex term order, Up: Term order section - - GRADLEX TERM ORDER - - The terms are ordered first with their total degree, and if the -total degree is identical the comparison is [*note lex term order::.] . -With GROEBNER basis calculations this term order produces polynomials -of lowest degree. - - -File: redhelp, Node: revgradlex term order, Next: gradlexgradlex term order, Prev: gradlex term order, Up: Term order section - - REVGRADLEX TERM ORDER - - The terms are ordered first with their total degree (degree sum), -and if the total degree is identical the comparison is the inverse of -[*note lex term order::.] . With [*note GROEBNER::.] and [*note -groebnerf::.] calculations this term order is similar to [*note gradlex -term order::.] ; it is known as most efficient ordering with respect to -computing time. - - -File: redhelp, Node: gradlexgradlex term order, Next: gradlexrevgradlex term order, Prev: revgradlex term order, Up: Term order section - - GRADLEXGRADLEX TERM ORDER - - The terms are separated into two groups where the second parameter -of the [*note TORDER::.] call determines the length of the first group. -For a comparison first the total degrees of both variable groups are -compared. If both are equal [*note gradlex term order::.] comparison -is applied to the first group, and if that does not decide [*note -gradlex term order::.] is applied for the second group. This order has -the elimination property for the variable groups. It can be used e.g. -for separating variables from parameters. - - -File: redhelp, Node: gradlexrevgradlex term order, Next: lexgradlex term order, Prev: gradlexgradlex term order, Up: Term order section - - GRADLEXREVGRADLEX TERM ORDER - - Similar to [*note gradlexgradlex term order::.] , but using [*note -revgradlex term order::.] for the second group. - - -File: redhelp, Node: lexgradlex term order, Next: lexrevgradlex term order, Prev: gradlexrevgradlex term order, Up: Term order section - - LEXGRADLEX TERM ORDER - - Similar to [*note gradlexgradlex term order::.] , but using [*note -lex term order::.] for the first group. - - -File: redhelp, Node: lexrevgradlex term order, Next: weighted term order, Prev: lexgradlex term order, Up: Term order section - - LEXREVGRADLEX TERM ORDER - - Similar to [*note gradlexgradlex term order::.] , but using [*note -lex term order::.] for the first group [*note revgradlex term -order::.] for the second group. - - -File: redhelp, Node: weighted term order, Next: graded term order, Prev: lexrevgradlex term order, Up: Term order section - - WEIGHTED TERM ORDER - - establishes a graduated ordering similar to [*note gradlex term -order::.] , where the exponents first are multiplied by the given -weights. If there are less weight values than variables, the weight -list is extended by ones. If the weighted degree comparison is not -decidable, the [*note lex term order::.] is used. - - -File: redhelp, Node: graded term order, Next: matrix term order, Prev: weighted term order, Up: Term order section - - GRADED TERM ORDER - - establishes a cascaded term ordering: first a graduated ordering -similar to [*note gradlex term order::.] is used, where the exponents -first are multiplied by the given weights. If there are less weight -values than variables, the weight list is extended by ones. If the -weighted degree comparison is not decidable, the term ordering -described in the following parameters of the [*note TORDER::.] command -is used. - - -File: redhelp, Node: matrix term order, Prev: graded term order, Up: Term order section - - MATRIX TERM ORDER - - Any arbitrary term order mode can be installed by a matrix with -integer elements where the row length corresponds to the variable -number. The matrix must have at least as many rows as columns. It must -have full rank, and the top nonzero element of each column must be -positive. - - The matrix TERM ORDER MODE defines a term order where the exponent -vectors of the monomials are first multiplied by the matrix and the -resulting vectors are compared lexicographically. - - If the switch [*note COMP::.] is on, the matrix is converted into a -compiled LISP program for faster execution. A matrix can also be -compiled explicitly, see [*note torder_compile::.] . - - -File: redhelp, Node: Term order section, Next: Basic Groebner operators section, Prev: Ideal Parameters, Up: Groebner package section - - Term order section - -* Menu: - -* Term order:: introduction -* TORDER:: operator -* torder_compile:: operator -* lex term order:: concept -* gradlex term order:: concept -* revgradlex term order:: concept -* gradlexgradlex term order::concept -* gradlexrevgradlex term order::concept -* lexgradlex term order:: concept -* lexrevgradlex term order::concept -* weighted term order:: concept -* graded term order:: concept -* matrix term order:: concept - - -File: redhelp, Node: GVARS, Next: GROEBNER, Up: Basic Groebner operators section - - GVARS operator - -syntax: - - GVARS (,,... ) - - where are expressions or [*note EQUATION::.] s. - - GVARS extracts from the expressions the [*note KERNEL::.] S which can -play the role of variables for a [*note GROEBNER::.] or [*note -groebnerf::.] calculation. - - -File: redhelp, Node: GROEBNER, Next: groebopt, Prev: GVARS, Up: Basic Groebner operators section - - GROEBNER operator - -syntax: - - GROEBNER (EXP , ...) - - where EXP , ... is a list of expressions or equations. - - The operator GROEBNER implements the Buchberger algorithm for -computing Groebner bases for a given set of expressions with respect to -the given set of variables in the order given. As a side effect, the -sequence of variables is stored as a REDUCE list in the shared variable -[*note gvarslast::.] - this is important in cases where the algorithm -rearranges the variable sequence because [*note groebopt::.] is ON . - -examples: - - ____________________________________________________________ - - groebner({x**2+y**2-1,x-y}) - - {X - Y,2*Y**2 -1} - - ____________________________________________________________ - -related: - - [*note groebnerf::.] operator - - [*note gvarslast::.] variable - - [*note groebopt::.] switch - - [*note groebprereduce::.] switch - - [*note groebfullreduction::.] switch - - [*note gltbasis::.] switch - - [*note gltb::.] variable - - [*note glterms::.] variable - - [*note groebstat::.] switch - - [*note trgroeb::.] switch - - [*note trgroebs::.] switch - - [*note groebprot::.] switch - - [*note groebprotfile::.] variable - - [*note groebnert::.] operator - - -File: redhelp, Node: groebopt, Next: gvarslast, Prev: GROEBNER, Up: Basic Groebner operators section - - GROEBOPT switch - - If GROEBOPT is set ON, the sequence of variables is optimized with -respect to execution speed of GROEBNER calculations; note that the -final list of variables is available in [*note gvarslast::.] . By -default GROEBOPT is off, conserving the original variable sequence. - - An explicitly declared dependency using the [*note DEPEND::.] -declaration supersedes the variable optimization. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - - guarantees that a will be placed in front of x and y. - - -File: redhelp, Node: gvarslast, Next: groebprereduce, Prev: groebopt, Up: Basic Groebner operators section - - GVARSLAST variable - - After a [*note GROEBNER::.] or [*note groebnerf::.] calculation the -actual variable sequence is stored in the variable GVARSLAST . If -[*note groebopt::.] is ON GVARSLAST shows the variable sequence after -reordering. - - -File: redhelp, Node: groebprereduce, Next: groebfullreduction, Prev: gvarslast, Up: Basic Groebner operators section - - GROEBPREREDUCE switch - - If GROEBPREREDUCE set ON, [*note GROEBNER::.] and [*note -groebnerf::.] try to simplify the input expressions: if the head term -of an input expression is a multiple of the head term of another -expression, it can be reduced; these reductions are done cyclicly as -long as possible in order to shorten the main part of the algorithm. - - By default GROEBPREREDUCE is off. - - -File: redhelp, Node: groebfullreduction, Next: gltbasis, Prev: groebprereduce, Up: Basic Groebner operators section - - GROEBFULLREDUCTION switch - - If GROEBFULLREDUCTION set off, the polynomial reduction steps during -[*note GROEBNER::.] and [*note groebnerf::.] are limited to the pure -head term reduction; subsequent terms are reduced otherwise. - - By default GROEBFULLREDUCTION is on. - - -File: redhelp, Node: gltbasis, Next: gltb, Prev: groebfullreduction, Up: Basic Groebner operators section - - GLTBASIS switch - - If GLTBASIS set on, the leading terms of the result basis of a -[*note GROEBNER::.] or [*note groebnerf::.] calculation are extracted. -They are collected as a basis of monomials, which is available as value -of the global variable [*note gltb::.] . - - -File: redhelp, Node: gltb, Next: glterms, Prev: gltbasis, Up: Basic Groebner operators section - - GLTB variable - - See [*note gltbasis::.] - - -File: redhelp, Node: glterms, Next: groebstat, Prev: gltb, Up: Basic Groebner operators section - - GLTERMS variable - - If the expressions in a [*note GROEBNER::.] or [*note groebnerf::.] -call contain parameters (symbols which are not member of the variable -list), the share variable GLTERMS is set to a list of expression which -during the calculation were assumed to be nonzero. The calculated bases -are valid only under the assumption that all these expressions do not -vanish. - - -File: redhelp, Node: groebstat, Next: trgroeb, Prev: glterms, Up: Basic Groebner operators section - - GROEBSTAT switch - - if GROEBSTAT is on, a summary of the [*note GROEBNER::.] or [*note -groebnerf::.] computation is printed at the end including the computing -time, the number of intermediate H polynomials and the counters for the -criteria hits. - - -File: redhelp, Node: trgroeb, Next: trgroebs, Prev: groebstat, Up: Basic Groebner operators section - - TRGROEB switch - - if TRGROEB is on, intermediate H polynomials are printed during a -[*note GROEBNER::.] or [*note groebnerf::.] calculation. - - -File: redhelp, Node: trgroebs, Next: gzerodim?, Prev: trgroeb, Up: Basic Groebner operators section - - TRGROEBS switch - - if TRGROEBS is on, intermediate H and S polynomials are printed -during a [*note GROEBNER::.] or [*note groebnerf::.] calculation. - - -File: redhelp, Node: gzerodim?, Next: gdimension, Prev: trgroebs, Up: Basic Groebner operators section - - GZERODIM? operator - -syntax: - - GZERODIM!? () - - where is a Groebner basis in the current [*note Term order::.] -with the actual setting (see [*note Ideal Parameters::.] ). - - GZERODIM!? tests whether the ideal spanned by the given basis has -dimension zero. If yes, the number of zeros is returned, [*note NIL::.] -otherwise. - - -File: redhelp, Node: gdimension, Next: gindependent_sets, Prev: gzerodim?, Up: Basic Groebner operators section - - GDIMENSION operator - -syntax: - - GDIMENSION () - - where is a [*note GROEBNER::.] basis in the current term order -(see [*note Ideal Parameters::.] ). GDIMENSION computes the dimension -of the ideal spanned by the given basis and returns the dimension as an -integer number. The Kredel-Weispfenning algorithm is used: the dimension -is the length of the longest independent variable set, see [*note -gindependent_sets::.] - - -File: redhelp, Node: gindependent_sets, Next: dd_groebner, Prev: gdimension, Up: Basic Groebner operators section - - GINDEPENDENT_SETS operator - -syntax: - - GINDEPENDENT_SETS () - - where is a [*note GROEBNER::.] basis in any TERM ORDER (which -must be the current TERM ORDER ) with the specified variables (see -[*note Ideal Parameters::.] ). - - GINDEPENDENT_SETS computes the maximal left independent variable -sets of the ideal, that are the variable sets which play the role of -free parameters in the current ideal basis. Each set is a list which is -a subset of the variable list. The result is a list of these sets. For -an ideal with dimension zero the list is empty. The -Kredel-Weispfenning algorithm is used. - - -File: redhelp, Node: dd_groebner, Next: glexconvert, Prev: gindependent_sets, Up: Basic Groebner operators section - - DD_GROEBNER operator - - For a homogeneous system of polynomials under [*note graded term -order::.] , [*note gradlex term order::.] , [*note revgradlex term -order::.] or [*note weighted term order::.] a Groebner Base can be -computed with limiting the grade of the intermediate S polynomials: - -syntax: - - DD_GROEBNER (,,) - - where is a non negative integer and is an integer or -"infinity". A pair of polynomials is considered only if the grade of -the lcm of their head terms is between and . For the term -orders GRADED or WEIGHTED the (first) weight vector is used for the -grade computation. Otherwise the total degree of a term is used. - - -File: redhelp, Node: glexconvert, Next: greduce, Prev: dd_groebner, Up: Basic Groebner operators section - - GLEXCONVERT operator - -syntax: - - GLEXCONVERT ([,][,MAXDEG=] [,NEWVARS=]) - - where is a [*note GROEBNER::.] basis in the current term -order, (optional) is a positive integer and (optional) is a -list of variables (see [*note Ideal Parameters::.] ). - - The operator GLEXCONVERT converts the basis of a zero-dimensional -ideal (finite number of isolated solutions) from arbitrary ordering -into a basis under [*note lex term order::.] . - - The parameter defines the new variable sequence. If -omitted, the original variable sequence is used. If only a subset of -variables is specified here, the partial ideal basis is evaluated. - - If is a list with one element, the minimal UNIVARIATE -POLYNOMIAL is computed. - - is an upper limit for the degrees. The algorithm stops with -an error message, if this limit is reached. - - A warning occurs, if the ideal is not zero dimensional. - - During the call the TERM ORDER of the input basis must be active. - - -File: redhelp, Node: greduce, Next: preduce, Prev: glexconvert, Up: Basic Groebner operators section - - GREDUCE operator - -syntax: - - GREDUCE (exp, exp1, exp2, ... , expm) - - where exp is an expression, and exp1, exp2, ... , expm is a list of -expressions or equations. - - GREDUCE is functionally equivalent with a call to [*note -GROEBNER::.] and then a call to [*note preduce::.] . - - -File: redhelp, Node: preduce, Next: idealquotient, Prev: greduce, Up: Basic Groebner operators section - - PREDUCE operator - -syntax: - - PREDUCE (

, , ... ) - - where

is an expression, and , ... is a list of expressions -or equations. - - PREDUCE computes the remainder of EXP modulo the given set of -polynomials resp. equations. This result is unique (canonical) only if -the given set is a GROEBNER basis under the current [*note Term -order::.] - - see also: [*note preducet::.] operator. - - -File: redhelp, Node: idealquotient, Next: hilbertpolynomial, Prev: preduce, Up: Basic Groebner operators section - - IDEALQUOTIENT operator - -syntax: - - IDEALQUOTIENT (, ..., ) - - where ,... is a list of expressions or equations, is a -single expression or equation. - - IDEALQUOTIENT computes the ideal quotient: ideal spanned by the -expressions ,... divided by the single polynomial/expression . -The result is the [*note GROEBNER::.] basis of the quotient ideal. - - -File: redhelp, Node: hilbertpolynomial, Prev: idealquotient, Up: Basic Groebner operators section - - HILBERTPOLYNOMIAL operator - -syntax: - - hilbertpolynomial() - - where is a [*note GROEBNER::.] basis in the current [*note -Term order::.] . - - The degree of the HILBERT POLYNOMIAL is the dimension of the ideal -spanned by the basis. For an ideal of dimension zero the Hilbert -polynomial is a constant which is the number of common zeros of the -ideal (including eventual multiplicities). The HOLLMANN ALGORITHM is -used. - - -File: redhelp, Node: Basic Groebner operators section, Next: Factorizing Groebner bases section, Prev: Term order section, Up: Groebner package section - - Basic Groebner operators section - -* Menu: - -* GVARS:: operator -* GROEBNER:: operator -* groebopt:: switch -* gvarslast:: variable -* groebprereduce:: switch -* groebfullreduction:: switch -* gltbasis:: switch -* gltb:: variable -* glterms:: variable -* groebstat:: switch -* trgroeb:: switch -* trgroebs:: switch -* gzerodim?:: operator -* gdimension:: operator -* gindependent_sets:: operator -* dd_groebner:: operator -* glexconvert:: operator -* greduce:: operator -* preduce:: operator -* idealquotient:: operator -* hilbertpolynomial:: operator - - -File: redhelp, Node: groebnerf, Next: groebmonfac, Up: Factorizing Groebner bases section - - GROEBNERF operator - -syntax: - - GROEBNERF (, ...[,,, ... ]); - - where , ... is a list of expressions or equations, and ,... -is an optional list of polynomials to be considered as non zero for -this calculation. An empty list must be passed as second argument if -the non-zero list is specified. - - GROEBNERF tries to separate polynomials into individual factors and -to branch the computation in a recursive manner (factorization tree). -The result is a list of partial Groebner bases. Multiplicities (one -factor with a higher power, the same partial basis twice) are deleted -as early as possible in order to speed up the calculation. - - The third parameter of GROEBNERF declares some polynomials nonzero. -If any of these is found in a branch of the calculation the branch is -canceled. - -example: - - ____________________________________________________________ - - groebnerf({ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3, - 2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3, - x**3*y+x**2*y+3*x**3+2*x**2 }, {y,x}); - - {{Y - 3,X}, - - 2 - {2*Y + 2*X - 1,2*X - 5*X - 5}} - ____________________________________________________________ - -related: - - [*note groebresmax::.] variable - - [*note groebmonfac::.] variable - - [*note groebrestriction::.] variable - - [*note GROEBNER::.] operator - - [*note gvarslast::.] variable - - [*note groebopt::.] switch - - [*note groebprereduce::.] switch - - [*note groebfullreduction::.] switch - - [*note gltbasis::.] switch - - [*note gltb::.] variable - - [*note glterms::.] variable - - [*note groebstat::.] switch - - [*note trgroeb::.] switch - - [*note trgroebs::.] switch - - [*note groebnert::.] operator - - -File: redhelp, Node: groebmonfac, Next: groebresmax, Prev: groebnerf, Up: Factorizing Groebner bases section - - GROEBMONFAC variable - - The variable GROEBMONFAC is connected to the handling of monomial -factors. A monomial factor is a product of variable powers as a factor, -e.g. x**2*y in x**3*y - 2*x**2*y**2. A monomial factor represents a -solution of the type x = 0 or y = 0 with a certain multiplicity. With -[*note groebnerf::.] the multiplicity of monomial factors is lowered -to the value of the shared variable GROEBMONFAC which by default is 1 -(= monomial factors remain present, but their multiplicity is brought -down). With GROEBMONFAC := 0 the monomial factors are suppressed -completely. - - -File: redhelp, Node: groebresmax, Next: groebrestriction, Prev: groebmonfac, Up: Factorizing Groebner bases section - - GROEBRESMAX variable - - The variable GROEBRESMAX controls during [*note groebnerf::.] -calculations the number of partial results. Its default value is 300. If -more partial results are calculated, the calculation is terminated. - - -File: redhelp, Node: groebrestriction, Prev: groebresmax, Up: Factorizing Groebner bases section - - GROEBRESTRICTION variable - - During [*note groebnerf::.] calculations irrelevant branches can be -excluded by setting the variable GROEBRESTRICTION . The following -restrictions are implemented: - -syntax: - - GROEBRESTRICTION := NONNEGATIVE - - GROEBRESTRICTION := POSITIVE - - GROEBRESTRICTION := ZEROPOINT - - With NONNEGATIVE branches are excluded where one polynomial has no -nonnegative real zeros; with POSITIVE the restriction is sharpened to -positive zeros only. The restriction ZEROPOINT excludes all branches -which do not have the origin (0,0,...0) in their solution set. - - -File: redhelp, Node: Factorizing Groebner bases section, Next: Tracing Groebner bases section, Prev: Basic Groebner operators section, Up: Groebner package section - - Factorizing Groebner bases section - -* Menu: - -* groebnerf:: operator -* groebmonfac:: variable -* groebresmax:: variable -* groebrestriction:: variable - - -File: redhelp, Node: groebprot, Next: groebprotfile, Up: Tracing Groebner bases section - - GROEBPROT switch - - If GROEBPROT is ON the computation steps during [*note preduce::.] , -[*note greduce::.] and [*note GROEBNER::.] are collected in a list -which is assigned to the variable [*note groebprotfile::.] . - - -File: redhelp, Node: groebprotfile, Next: groebnert, Prev: groebprot, Up: Tracing Groebner bases section - - GROEBPROTFILE variable - - See [*note groebprot::.] switch. - - -File: redhelp, Node: groebnert, Next: preducet, Prev: groebprotfile, Up: Tracing Groebner bases section - - GROEBNERT operator - -syntax: - - GROEBNERT (=,...) - - where are [*note KERNEL::.] S (simple or indexed variables), - are polynomials. - - GROEBNERT is functionally equivalent to a [*note GROEBNER::.] call -for ,..., but the result is a set of equations where the left-hand -sides are the basis elements while the right-hand sides are the same -values expressed as combinations of the input formulas, expressed in -terms of the names - -example: - - ____________________________________________________________ - - groebnert({p1=2*x**2+4*y**2-100,p2=2*x-y+1}); - - GB1 := {2*X - Y + 1=P2, - - 2 - 9*Y - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2} - ____________________________________________________________ - - -File: redhelp, Node: preducet, Prev: groebnert, Up: Tracing Groebner bases section - - PREDUCET operator - -syntax: - - PREDUCE (

,=...) - - where

is an expression, are kernels (simple or indexed -variables), EXP are polynomials. - - PREDUCET computes the remainder of

modulo ,... similar to -[*note preduce::.] , but the result is an equation which expresses the -remainder as combination of the polynomials. - -example: - - ____________________________________________________________ - - - GB2 := {G1=2*X - Y + 1,G2=9*Y**2 - 2*Y - 199} - preducet(q=x**2,gb2); - - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2 - ____________________________________________________________ - - -File: redhelp, Node: Tracing Groebner bases section, Next: Groebner Bases for Modules section, Prev: Factorizing Groebner bases section, Up: Groebner package section - - Tracing Groebner bases section - -* Menu: - -* groebprot:: switch -* groebprotfile:: variable -* groebnert:: operator -* preducet:: operator - - -File: redhelp, Node: Module, Next: gmodule, Up: Groebner Bases for Modules section - - MODULE - - Given a polynomial ring, e.g. R=Z[x,y,...] and an integer n>1. The -vectors with n elements of R form a free MODULE under elementwise -addition and multiplication with elements of R. - - For a submodule given by a finite basis a Groebner basis can be -computed, and the facilities of the GROEBNER package are available -except the operators [*note groebnerf::.] and GROESOLVE . The vectors -are encoded using auxiliary variables which represent the unit vectors -in the module. These are declared in the share variable [*note -gmodule::.] . - - -File: redhelp, Node: gmodule, Prev: Module, Up: Groebner Bases for Modules section - - GMODULE variable - - The vectors of a free [*note Module::.] over a polynomial ring R are -encoded as linear combinations with unit vectors of M which are -represented by auxiliary variables. These must be collected in the -variable GMODULE before any call to an operator of the Groebner package. - - ____________________________________________________________ - - torder({x,y,v1,v2,v3})$ - gmodule := {v1,v2,v3}$ - g:=groebner({x^2*v1 + y*v2,x*y*v1 - v3,2y*v1 + y*v3}); - ____________________________________________________________ - compute the Groebner basis of the submodule - - ____________________________________________________________ - - ([x^2,y,0],[xy,0,-1],[0,2y,y]) - ____________________________________________________________ - The members of the list GMODULE are automatically appended to the -end of the variable list, if they are not yet members there. They take -part in the actual term ordering. - - -File: redhelp, Node: Groebner Bases for Modules section, Next: Computing with distributive polynomials section, Prev: Tracing Groebner bases section, Up: Groebner package section - - Groebner Bases for Modules section - -* Menu: - -* Module:: concept -* gmodule:: variable - - -File: redhelp, Node: gsort, Next: gsplit, Up: Computing with distributive polynomials section - - GSORT operator - -syntax: - - GSORT (

) - - where

is a polynomial or a list of polynomials. - - The polynomials are reordered and sorted corresponding to the -current [*note Term order::.] . - -examples: - - ____________________________________________________________ - - - torder lex; - - gsort(x**2+2x*y+y**2,{y,x}); - - y**2+2y*x+x**2 - - ____________________________________________________________ - - -File: redhelp, Node: gsplit, Next: gspoly, Prev: gsort, Up: Computing with distributive polynomials section - - GSPLIT operator - -syntax: - - GSPLIT (

[,]); - - where

is a polynomial or a list of polynomials. - - The polynomial is reordered corresponding to the the current [*note -Term order::.] and then separated into leading term and reductum. -Result is a list with the leading term as first and the reductum as -second element. - -examples: - - ____________________________________________________________ - - - torder lex; - - gsplit(x**2+2x*y+y**2,{y,x}); - - {y**2,2y*x+x**2} - - ____________________________________________________________ - - -File: redhelp, Node: gspoly, Prev: gsplit, Up: Computing with distributive polynomials section - - GSPOLY operator - -syntax: - - GSPOLY (,); - - where and are polynomials. - - The SUBTRACTION polynomial of p1 and p2 is computed corresponding to -the method of the Buchberger algorithm for computing GROEBNER BASES : -p1 and p2 are multiplied with terms such that when subtracting them the -leading terms cancel each other. - - -File: redhelp, Node: Computing with distributive polynomials section, Prev: Groebner Bases for Modules section, Up: Groebner package section - - Computing with distributive polynomials section - -* Menu: - -* gsort:: operator -* gsplit:: operator -* gspoly:: operator - - -File: redhelp, Node: Groebner package section, Next: High Energy Physics section, Prev: Matrix Operations section, Up: Top - - Groebner package section - -* Menu: - -* Groebner bases:: introduction -* Ideal Parameters:: concept -* Term order section:: -* Basic Groebner operators section:: -* Factorizing Groebner bases section:: -* Tracing Groebner bases section:: -* Groebner Bases for Modules section:: -* Computing with distributive polynomials section:: - - -File: redhelp, Node: HEPHYS, Next: HE-dot, Up: High Energy Physics section - - HEPHYS introduction - - The High-energy Physics package is historic for REDUCE, since REDUCE -originated as a program to aid in computations with Dirac expressions. -The commutation algebra of the gamma matrices is independent of their -representation, and is a natural subject for symbolic mathematics. Dirac -theory is applied to beta decay and the computation of cross-sections -and scattering. The high-energy physics operators are available in the -REDUCE main program, rather than as a module which must be loaded. - - -File: redhelp, Node: HE-dot, Next: EPS, Prev: HEPHYS, Up: High Energy Physics section - - . HE-DOT operator - - The . operator is used to denote the scalar product of two Lorentz -four-vectors. - -syntax: - - . - - must be an identifier declared to be of type VECTOR to have -the scalar product definition. When applied to arguments that are not -vectors, the [*note CONS::.] operator is used, whose symbol is also -"dot." - -examples: - - ____________________________________________________________ - - vector aa,bb,cc; - - let aa.bb = 0; - - aa.bb; - - 0 - - - aa.cc; - - AA.CC - - - q := aa.cc; - - Q := AA.CC - - - q; - - AA.CC - - ____________________________________________________________ - Since vectors are special high-energy physics entities that do not -contain values, the . product will not return a true scalar product. -You can assign a scalar identifier to the result of a . operation, or -assign a . operation to have the value of the scalar you supply, as -shown above. Note that the result of a . operation is a scalar, not a -vector. - - The metric tensor g(u,v) can be represented by U.V . If contraction -over the indices is required, U and V should be declared to be of type -[*note INDEX::.] . - - The dot operator has the highest precedence of the infix operators, -so expressions involving . and other operators have the scalar product -evaluated first before other operations are done. - - -File: redhelp, Node: EPS, Next: G, Prev: HE-dot, Up: High Energy Physics section - - EPS operator - - The EPS operator denotes the completely antisymmetric tensor of -order 4 and its contraction with Lorentz four-vectors, as used in -high-energy physics calculations. - -syntax: - - EPS (,,, ) - - must be a valid vector expression, and may be an index. - -examples: - - ____________________________________________________________ - - vector g0,g1,g2,g3; - - eps(g1,g0,g2,g3); - - - EPS(G0,G1,G2,G3); - - - eps(g1,g2,g0,g3); - - EPS(G0,G1,G2,G3); - - - eps(g1,g2,g3,g1); - - 0 - - ____________________________________________________________ - Vector identifiers are ordered alphabetically by REDUCE. When an odd -number of transpositions is required to restore the canonical order to -the four arguments of EPS , the term is ordered and carries a minus -sign. When an even number of transpositions is required, the term is -returned ordered and positive. When one of the arguments is repeated, -the value 0 is returned. A contraction of the form eps(_i j mu nu p_mu -q_nu) is represented by EPS(I,J,P,Q) when I and J have been declared to -be of type [*note INDEX::.] . - - -File: redhelp, Node: G, Next: INDEX, Prev: EPS, Up: High Energy Physics section - - G operator - - G is an n-ary operator used to denote a product of gamma matrices -contracted with Lorentz four-vectors, in high-energy physics. - -syntax: - - G (, ,*) - - is a scalar identifier representing a fermion line -identifier, can be any valid vector expression, -representing a vector or a gamma matrix. - -examples: - - ____________________________________________________________ - - vector aa,bb,cc; - - vector a; - - g(line1,aa,bb); - - AA.BB - - - g(line2,aa,a); - - 0 - - - g(id,aa,bb,cc); - - 0 - - - g(li1,aa,bb) + k; - - AA.BB + K - - - let aa.bb = m*k; - - g(ln1,aa)*g(ln1,bb); - - K*M - - - g(ln1,aa)*g(ln2,bb); - - 0 - - ____________________________________________________________ - The vector A is reserved in arguments of G to denote the special -gamma matrix gamma_5. It must be declared to be a vector before you use -it. - - Gamma matrix expressions are associated with fermion lines in a -Feynman diagram. If more than one line occurs in an expression, the -gamma matrices involved are separate (operating in independent spin -space), as shown in the last two example lines above. A product of -gamma matrices associated with a single line can be entered either as a -single G command with several vector arguments, or as products of -separate G commands each with a single argument. - - While the product of vectors is not defined, the product, sum and -difference of several gamma expressions are defined, as is the product -of a gamma expression with a scalar. If an expression involving gamma -matrices includes a scalar, the scalar is treated as if it were the -product of itself with a unit 4 x 4 matrix. - - Dirac expressions are evaluated by computing the trace of the -expression using the commutation algebra of gamma matrices. The -algorithms used are described in articles by J. S. R. Chisholm in Vol. 30, p. 426, 1963, and J. Kahane, , Vol. 9, p. 1732, 1968. The trace is then divided -by 4 to distinguish between the trace of a scalar and the trace of an -expression that is the product of a scalar with a unit 4 x 4 matrix. - - Trace calculations may be prevented over any line identifier by -declaring it to be [*note NOSPUR::.] . If it is later desired to -evaluate these traces, the declaration can be undone with the [*note -SPUR::.] declaration. - - The notation of Bjorken and Drell, -1964, is assumed in all operations involving gamma matrices. For an -example of the use of G in a calculation, see the . - - -File: redhelp, Node: INDEX, Next: MASS, Prev: G, Up: High Energy Physics section - - INDEX declaration - - The declaration INDEX flags a four-vector as an index for subsequent -high-energy physics calculations. - -syntax: - - INDEX ,* - - must have been declared of type VECTOR . - -examples: - - ____________________________________________________________ - - vector aa,bb,cc; - - index uu; - - let aa.bb = 0; - - (aa.uu)*(bb.uu); - - 0 - - - (aa.uu)*(cc.uu); - - AA.CC - - ____________________________________________________________ - Index variables are used to represent contraction over components of -vectors when scalar products are taken by the . operator, as well as -indicating contraction for the [*note EPS::.] operator or metric tensor. - - The special status of a vector as an index can be revoked with the -declaration [*note REMIND::.] . The object remains a vector, however. - - -File: redhelp, Node: MASS, Next: MSHELL, Prev: INDEX, Up: High Energy Physics section - - MASS command - - The MASS command associates a scalar variable as a mass with the -corresponding vector variable, in high-energy physics calculations. - -syntax: - - MASS = ,= * - - can be a declared vector variable; MASS will declare it -to be of type VECTOR if it is not. This may override an existing matrix -variable by that name. must be a scalar variable. - -examples: - - ____________________________________________________________ - - vector bb,cc; - - mass cc=m; - - mshell cc; - - cc.cc; - - 2 - M - - ____________________________________________________________ - Once a mass has been attached to a vector with a MASS declaration, -the [*note MSHELL::.] declaration puts the associated particle "on the -mass shell." Subsequent scalar (.) products of the vector with itself -will be replaced by the square of the mass expression. - - -File: redhelp, Node: MSHELL, Next: NOSPUR, Prev: MASS, Up: High Energy Physics section - - MSHELL command - - The MSHELL command puts particles on the mass shell in high-energy -physics calculations. - -syntax: - - MSHELL ,* - - must have had a mass attached to it by a [*note MASS::.] -declaration. - -examples: - - ____________________________________________________________ - - vector v1,v2; - - mass v1=m,v2=q; - - mshell v1; - - v1.v1; - - 2 - M - - - v2.v2; - - V2.V2 - - - mshell v2; - - v1.v1*v2.v2; - - 2 2 - M *Q - - ____________________________________________________________ - Even though a mass is attached to a vector variable representing a -particle, the replacement does not take place until the MSHELL -declaration is given for that vector variable. - - -File: redhelp, Node: NOSPUR, Next: REMIND, Prev: MSHELL, Up: High Energy Physics section - - NOSPUR declaration - - The NOSPUR declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. - -syntax: - - NOSPUR ,* - - is a scalar identifier that will be used as a line -identifier. - -examples: - - ____________________________________________________________ - - vector a1,b1,c1; - - g(line1,a1,b1)*g(line2,b1,c1); - - A1.B1*B1.C1 - - - nospur line2; - - g(line1,a1,b1)*g(line2,b1,c1); - - A1.B1*G(LINE2,B1,C1) - - ____________________________________________________________ - Nospur declarations can be removed by making the declaration [*note -SPUR::.] . - - -File: redhelp, Node: REMIND, Next: SPUR, Prev: NOSPUR, Up: High Energy Physics section - - REMIND declaration - - The REMIND declaration removes the special status of its arguments -as indices, which was set in the [*note INDEX::.] declaration, in -high-energy physics calculations. - -syntax: - - REMIND ,* - - must have been declared to be of type [*note INDEX::.] . - - -File: redhelp, Node: SPUR, Next: VECDIM, Prev: REMIND, Up: High Energy Physics section - - SPUR declaration - - The SPUR declaration removes the special exemption from trace -calculations that was declared by [*note NOSPUR::.] , in high-energy -physics calculations. - -syntax: - - SPUR ,* - - must be a line-identifier that has previously been declared -NOSPUR . - - -File: redhelp, Node: VECDIM, Next: VECTOR, Prev: SPUR, Up: High Energy Physics section - - VECDIM command - - The command VECDIM changes the vector dimension from 4 to an -arbitrary integer or symbol. Used in high-energy physics calculations. - -syntax: - - VECDIM - - must be either an integer or a valid scalar identifier -that does not have a floating-point value. - - The [*note EPS::.] operator and the gamma_5 symbol (A ) are not -properly defined in anything except four dimensions and will print an -error message if you use them that way. The other high-energy physics -operators should work without problem. - - -File: redhelp, Node: VECTOR, Prev: VECDIM, Up: High Energy Physics section - - VECTOR declaration - - The VECTOR declaration declares that its arguments are of type -VECTOR . - -syntax: - - VECTOR ,* - - must be a valid REDUCE identifier. It may have already -been used for a matrix, array, operator or scalar variable. After an -identifier has been declared to be a vector, it may not be used as a -scalar variable. - - Vectors are special entities for high-energy physics calculations. -You cannot put values into their coordinates; they do not have -coordinates. They are legal arguments for the high-energy physics -operators [*note EPS::.] , [*note G::.] and . (dot). Vector variables -are used to represent gamma matrices and gamma matrices contracted with -Lorentz 4-vectors, since there are no Dirac variables per se in the -system. Vectors do follow the usual vector rules for arithmetic -operations: + and - operate upon two or more vectors, producing a -vector; * and / cannot be used between vectors; the scalar product is -represented by the . operator; and the product of a scalar and vector -expression is well defined, and is a vector. - - You can represent components of vectors by including representations -of unit vectors in your system. For instance, letting E0 represent the -unit vector (1,0,0,0), the command - - V1.E0 := 0; would set up the substitution of zero for the first -component of the vector V1 . - - Identifiers that are declared by the INDEX and MASS declarations are -automatically declared to be vectors. - - The following errors can occur in calculations using the high energy -physics package: - - A REPRESENTS ONLY GAMMA5 IN VECTOR EXPRESSIONS You have tried to use -A in some way other than gamma5 in a high-energy physics expression. - - GAMMA5 NOT ALLOWED UNLESS VECDIM IS 4 You have used gamma_5 in a -high-energy physics computation involving a vector dimension other than -4. - - HAS NO MASS - - One of the arguments to [*note MSHELL::.] has had no mass assigned -to it, in high-energy physics calculations. - - MISSING ARGUMENTS FOR G OPERATOR A line symbol is missing in a gamma -matrix expression in high-energy physics calculations. - - UNMATCHED INDEX - - The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. - - -File: redhelp, Node: High Energy Physics section, Next: Numeric Package section, Prev: Groebner package section, Up: Top - - High Energy Physics section - -* Menu: - -* HEPHYS:: introduction -* HE-dot:: . operator -* EPS:: operator -* G:: operator -* INDEX:: declaration -* MASS:: command -* MSHELL:: command -* NOSPUR:: declaration -* REMIND:: declaration -* SPUR:: declaration -* VECDIM:: command -* VECTOR:: declaration - - -File: redhelp, Node: Numeric Package, Next: Interval, Up: Numeric Package section - - NUMERIC PACKAGE introduction - - The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use the [*note -ROUNDED::.] mode arithmetic of REDUCE, including the variable precision -feature which is exploited in some algorithms in an adaptive manner in -order to reach the desired accuracy. - - -File: redhelp, Node: Interval, Next: numeric accuracy, Prev: Numeric Package, Up: Numeric Package section - - INTERVAL type - - Intervals are generally coded as lower bound and upper bound -connected by the operator .. , usually associated to a variable in an -equation. - -syntax: - - = ( .. ) - - where is a [*note KERNEL::.] and , are numbers or -expression which evaluate to numbers with <=. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - means that the variable x is taken in the range from 2.5 up to 3.5. - - -File: redhelp, Node: numeric accuracy, Next: TRNUMERIC, Prev: Interval, Up: Numeric Package section - - NUMERIC ACCURACY - - The keyword parameters ACCURACY=A and ITERATIONS=I , where A and I -must be positive integer numbers, control the iterative algorithms: the -iteration is continued until the local error is below 10**-a; if that -is impossible within I steps, the iteration is terminated with an error -message. The values reached so far are then returned as the result. - - -File: redhelp, Node: TRNUMERIC, Next: num_min, Prev: numeric accuracy, Up: Numeric Package section - - TRNUMERIC switch - - Normally the algorithms produce only a minimum of printed output -during their operation. In cases of an unsuccessful or unexpected long -operation a TRACE OF THE ITERATION can be printed by setting TRNUMERIC -ON . - - -File: redhelp, Node: num_min, Next: num_solve, Prev: TRNUMERIC, Up: Numeric Package section - - NUM_MIN operator - - The Fletcher Reeves version of the STEEPEST DESCENT algorithms is -used to find the MINIMUM of a function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be specified; if not, -random values are taken instead. The steepest descent algorithms in -general find only local minima. - -syntax: - - NUM_MIN (, [=] [,[=] ... [,accuracy=] -[,iterations=]) - - or - - NUM_MIN (exp, [=] [,[=] ...] [,accuracy=] -[,iterations=]) - - where is a function expression, are the variables in - and are the (optional) start values. For and see -[*note numeric accuracy::.] . - - NUM_MIN tries to find the next local minimum along the descending -path starting at the given point. The result is a [*note LIST::.] with -the minimum function value as first element followed by a list of -[*note EQUATION::.] S , where the variables are equated to the -coordinates of the result point. - -examples: - - ____________________________________________________________ - - num_min(sin(x)+x/5, x) - - {4.9489585606,{X=29.643767785}} - - - num_min(sin(x)+x/5, x=0) - - { - 1.3342267466,{X= - 1.7721582671}} - - ____________________________________________________________ - - -File: redhelp, Node: num_solve, Next: num_int, Prev: num_min, Up: Numeric Package section - - NUM_SOLVE operator - - An adaptively damped Newton iteration is used to find an -approximative root of a function (function vector) or the solution of -an [*note EQUATION::.] (equation system). The expressions must have -continuous derivatives for all variables. A starting point for the -iteration can be given. If not given random values are taken instead. -When the number of forms is not equal to the number of variables, the -Newton method cannot be applied. Then the minimum of the sum of -absolute squares is located instead. - - With [*note COMPLEX::.] on, solutions with imaginary parts can be -found, if either the expression(s) or the starting point contain a -nonzero imaginary part. - -syntax: - - NUM_SOLVE (, [=][,accuracy=][,iterations=]) - - or - - NUM_SOLVE (,...,, [=],...,[=] -[,accuracy=][,iterations=]) - - or - - NUM_SOLVE (,...,, [=],...,[=] -[,accuracy=][,iterations=]) - - where are function expressions, are the variables, - are optional start values. For and see [*note numeric -accuracy::.] . - - NUM_SOLVE tries to find a zero/solution of the expression(s). -Result is a list of equations, where the variables are equated to the -coordinates of the result point. - - The JACOBIAN MATRIX is stored as side effect the shared variable -JACOBIAN . - -examples: - - ____________________________________________________________ - - num_solve({sin x=cos y, x + y = 1},{x=1,y=2}); - - - {X= - 1.8561957251,Y=2.856195584} - - - jacobian; - - [COS(X) SIN(Y)] - [ ] - [ 1 1 ] - - ____________________________________________________________ - - -File: redhelp, Node: num_int, Next: num_odesolve, Prev: num_solve, Up: Numeric Package section - - NUM_INT operator - - For the numerical evaluation of univariate integrals over a finite -interval the following strategy is used: If [*note INT::.] finds a -formal antiderivative which is bounded in the integration interval, -this is evaluated and the end points and the difference is returned. -Otherwise a [*note Chebyshev fit::.] is computed, starting with order -20, eventually up to order 80. If that is recognized as sufficiently -convergent it is used for computing the integral by directly -integrating the coefficient sequence. If none of these methods is -successful, an adaptive multilevel quadrature algorithm is used. - - For multivariate integrals only the adaptive quadrature is used. -This algorithm tolerates isolated singularities. The value ITERATIONS -here limits the number of local interval intersection levels. is a -measure for the relative total discretization error (comparison of -order 1 and order 2 approximations). - -syntax: - - NUM_INT (,=( .. ) [,=( .. ),...] -[,accuracy=][,iterations=]) - - where is the function to be integrated, are the -integration variables, are the lower bounds, are the upper -bounds. - - Result is the value of the integral. - -examples: - - ____________________________________________________________ - - num_int(sin x,x=(0 .. 3.1415926)); - - 2.0000010334 - - ____________________________________________________________ - - -File: redhelp, Node: num_odesolve, Next: bounds, Prev: num_int, Up: Numeric Package section - - NUM_ODESOLVE operator - - The RUNGE-KUTTA method of order 3 finds an approximate graph for the -solution of real ODE INITIAL VALUE PROBLEM . - -syntax: - - NUM_ODESOLVE (,=, =( .. ) -[,accuracy=][,iterations=]) - - or - - NUM_ODESOLVE (,,..., =,=,... -=( .. ) [,accuracy=][,iterations=]) - - where and specify the dependent variable(s) and the -starting point value (vector), , and specify the -independent variable and the integration interval (starting point and -end point), are equations or expressions which contain the first -derivative of the independent variable with respect to the dependent -variable. - - The ODEs are converted to an explicit form, which then is used for a -Runge Kutta iteration over the given range. The number of steps is -controlled by the value of (default: 20). If the steps are too -coarse to reach the desired accuracy in the neighborhood of the -starting point, the number is increased automatically. - - Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. - -examples: - - ____________________________________________________________ - - depend(y,x); - - num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5); - - - ,{0.2,1.2214},{0.4,1.49181796},{0.6,1.8221064563}, - {0.8,2.2255208258},{1.0,2.7182511366}} - - ____________________________________________________________ - In most cases you must declare the dependency relation between the -variables explicitly using [*note DEPEND::.] ; otherwise the formal -derivative might be converted to zero. - - The operator [*note SOLVE::.] is used to convert the form into an -explicit ODE. If that process fails or if it has no unique result, the -evaluation is stopped with an error message. - - -File: redhelp, Node: bounds, Next: Chebyshev fit, Prev: num_odesolve, Up: Numeric Package section - - BOUNDS operator - - Upper and lower bounds of a real valued function over an [*note -Interval::.] or a rectangular multivariate domain are computed by the -operator BOUNDS . The algorithmic basis is the computation with -inequalities: starting from the interval(s) of the variables, the -bounds are propagated in the expression using the rules for inequality -computation. Some knowledge about the behavior of special functions -like ABS, SIN, COS, EXP, LOG, fractional exponentials etc. is -integrated and can be evaluated if the operator BOUNDS is called with -rounded mode on (otherwise only algebraic evaluation rules are -available). - - If BOUNDS finds a singularity within an interval, the evaluation is -stopped with an error message indicating the problem part of the -expression. - -syntax: - - BOUNDS (,=( .. ) [,=( .. ) ...]) - - or - - BOUNDS (,=( .. ) [,=( .. ) ...]) - - where is the function to be investigated, are the -variables of , and specify the area as set of [*note -Interval::.] S . - - BOUNDS computes upper and lower bounds for the expression in the -given area. An [*note Interval::.] is returned. - -examples: - - ____________________________________________________________ - - bounds(sin x,x=(1 .. 2)); - - -1 .. 1 - - - on rounded; - - bounds(sin x,x=(1 .. 2)); - - 0.84147098481 .. 1 - - - bounds(x**2+x,x=(-0.5 .. 0.5)); - - - 0.25 .. 0.75 - - ____________________________________________________________ - - -File: redhelp, Node: Chebyshev fit, Next: num_fit, Prev: bounds, Up: Numeric Package section - - CHEBYSHEV FIT - - The operator family CHEBYSHEV_... implements approximation and -evaluation of functions by the Chebyshev method. Let T(N,A,B,X) be the -Chebyshev polynomial of order N transformed to the interval (A,B) . -Then a function F(X) can be approximated in (A,B) by a series - - ____________________________________________________________ - - for i := 0:n sum c(i)*T(i,a,b,x) - ____________________________________________________________ - The operator CHEBYSHEV_FIT computes this approximation and returns a -list, which has as first element the sum expressed as a polynomial and -as second element the sequence of Chebyshev coefficients. CHEBYSHEV_DF -and CHEBYSHEV_INT transform a Chebyshev coefficient list into the -coefficients of the corresponding derivative or integral respectively. -For evaluating a Chebyshev approximation at a given point in the basic -interval the operator CHEBYSHEV_EVAL can be used. CHEBYSHEV_EVAL is -based on a recurrence relation which is in general more stable than a -direct evaluation of the complete polynomial. - -syntax: - - CHEBYSHEV_FIT (,=( .. ),) - - CHEBYSHEV_EVAL (,=( .. ), =) - - CHEBYSHEV_DF (,=( .. )) - - CHEBYSHEV_INT (,=( .. )) - - where is an algebraic expression (the target function), -is the variable of , and are numerical real values which -describe an [*note Interval::.] < , the integer is the -approximation order (set to 20 if missing), is a number in the -interval and is a series of Chebyshev coefficients. - -examples: - - ____________________________________________________________ - - - on rounded; - - - w:=chebyshev_fit(sin x/x,x=(1 .. 3),5); - - - 3 2 - w := {0.03824*x - 0.2398*x + 0.06514*x + 0.9778, - {0.8991,-0.4066,-0.005198,0.009464,-0.00009511}} - - - chebyshev_eval(second w, x=(1 .. 3), x=2.1); - - - 0.4111 - - ____________________________________________________________ - - -File: redhelp, Node: num_fit, Prev: Chebyshev fit, Up: Numeric Package section - - NUM_FIT operator - - The operator NUM_FIT finds for a set of points the linear -combination of a given set of functions (function basis) which -approximates the points best under the objective of the LEAST SQUARES -criterion (minimum of the sum of the squares of the deviation). The -solution is found as zero of the gradient vector of the sum of squared -errors. - -syntax: - - NUM_FIT (,,=) - - where is a list of numeric values, is a variable used -for the approximation, is a list of coordinate values which -correspond to , is a set of functions varying in VAR which -is used for the approximation. - - The result is a list containing as first element the function which -approximates the given values, and as second element a list of -coefficients which were used to build this function from the basis. - -examples: - - ____________________________________________________________ - - - pts:=for i:=1 step 1 until 5 collect i$ - - vals:=for i:=1 step 1 until 5 collect - - for j:=1:i product j$ - - num_fit(vals,{1,x,x**2},x=pts); - - 2 - {14.571428571*X - 61.428571429*X + 54.6,{54.6, - - 61.428571429,14.571428571}} - - ____________________________________________________________ - - -File: redhelp, Node: Numeric Package section, Next: Roots Package section, Prev: High Energy Physics section, Up: Top - - Numeric Package section - -* Menu: - -* Numeric Package:: introduction -* Interval:: type -* numeric accuracy:: concept -* TRNUMERIC:: switch -* num_min:: operator -* num_solve:: operator -* num_int:: operator -* num_odesolve:: operator -* bounds:: operator -* Chebyshev fit:: concept -* num_fit:: operator - - -File: redhelp, Node: Roots Package, Next: MKPOLY, Up: Roots Package section - - ROOTS PACKAGE introduction - - The root finding package is designed so that it can be used to find -some or all of the roots of univariate polynomials with real or complex -coefficients, to the accuracy specified by the user. - - Not all operators of ROOTS PACKAGE are described here. For using the -operators - - ISOLATER (intervals isolating real roots) - - RLROOTNO (number of real roots in an interval) - - ROOTSAT-PREC (roots at system precision) - - ROOTVAL (result in equation form) - - FIRSTROOT (computing only one root) - - GETROOT (selecting roots from a collection) - - please consult the full documentation of the package. - - -File: redhelp, Node: MKPOLY, Next: NEARESTROOT, Prev: Roots Package, Up: Roots Package section - - MKPOLY operator - - Given a roots list as returned by [*note ROOTS::.] , the operator -MKPOLY constructs a polynomial which has these numbers as roots. - -syntax: - - MKPOLY - - where is a [*note LIST::.] with equations, which all have the -same [*note KERNEL::.] on their left-hand sides and numbers as -right-hand sides. - -examples: - - ____________________________________________________________ - - mkpoly{x=1,x=-2,x=i,x=-i}; - - x**4 + x**3 - x**2 + x - 2 - - ____________________________________________________________ - Note that this polynomial is unique only up to a numeric factor. - - -File: redhelp, Node: NEARESTROOT, Next: REALROOTS, Prev: MKPOLY, Up: Roots Package section - - NEARESTROOT operator - - The operator NEARESTROOT finds one root of a polynomial with an -iteration using a given starting point. - -syntax: - - NEARESTROOT (

,) - - where

is a univariate polynomial and is a number. - -examples: - - ____________________________________________________________ - - nearestroot(x^2+2,2); - - {x=1.41421*i} - - ____________________________________________________________ - The minimal accuracy of the result values is controlled by [*note -ROOTACC::.] . - - -File: redhelp, Node: REALROOTS, Next: ROOTACC, Prev: NEARESTROOT, Up: Roots Package section - - REALROOTS operator - - The operator REALROOTS finds that real roots of a polynomial to an -accuracy that is sufficient to separate them and which is a minimum of -6 decimal places. - -syntax: - - REALROOTS (

) or - - REALROOTS (

,,) - - where

is a univariate polynomial. The optional parameters - and classify an interval: if given, exactly the real roots -in this interval will be returned. and can also take the -values INFINITY or -INFINITY . If omitted all real roots will be -returned. Result is a [*note LIST::.] of equations which represent the -roots of the polynomial at the given accuracy. - -examples: - - ____________________________________________________________ - - realroots(x^5-2); - - {x=1.1487} - - - realroots(x^3-104*x^2+403*x-300,2,infinity); - - - {x=3.0,x=100.0} - - - realroots(x^3-104*x^2+403*x-300,-infinity,2); - - - {x=1} - - ____________________________________________________________ - The minimal accuracy of the result values is controlled by [*note -ROOTACC::.] . - - -File: redhelp, Node: ROOTACC, Next: ROOTS, Prev: REALROOTS, Up: Roots Package section - - ROOTACC operator - - The operator ROOTACC allows you to set the accuracy up to which the -roots package computes its results. - -syntax: - - ROOTACC () - - Here is an integer value. The internal accuracy of the ROOTS -package is adjusted to a value of MAX(6,N) . The default value is 6 . - - -File: redhelp, Node: ROOTS, Next: ROOT_VAL, Prev: ROOTACC, Up: Roots Package section - - ROOTS operator - - The operator ROOTS is the main top level function of the roots -package. It will find all roots, real and complex, of the polynomial p -to an accuracy that is sufficient to separate them and which is a -minimum of 6 decimal places. - -syntax: - - ROOTS (

) - - where

is a univariate polynomial. Result is a [*note LIST::.] of -equations which represent the roots of the polynomial at the given -accuracy. In addition, ROOTS stores separate lists of real roots and -complex roots in the global variables [*note ROOTSREAL::.] and [*note -ROOTSCOMPLEX::.] . - -examples: - - ____________________________________________________________ - - roots(x^5-2); - - {x=-0.929316 + 0.675188*i, - x=-0.929316 - 0.675188*i, - x=0.354967 + 1.09248*i, - x=0.354967 - 1.09248*i, - x=1.1487} - - ____________________________________________________________ - The minimal accuracy of the result values is controlled by [*note -ROOTACC::.] . - - -File: redhelp, Node: ROOT_VAL, Next: ROOTSCOMPLEX, Prev: ROOTS, Up: Roots Package section - - ROOT_VAL operator - - The operator ROOT_VAL computes the roots of a univariate polynomial -at system precision (or greater if required for root separation) and -presents its result as a list of numbers. - -syntax: - - ROOTS (

) - - where

is a univariate polynomial. - -examples: - - ____________________________________________________________ - - root_val(x^5-2); - - {-0.929316490603 + 0.6751879524*i, - -0.929316490603 - 0.6751879524*i, - 0.354967313105 + 1.09247705578*i, - 0.354967313105 - 1.09247705578*i, - 1.148698355} - - ____________________________________________________________ - - -File: redhelp, Node: ROOTSCOMPLEX, Next: ROOTSREAL, Prev: ROOT_VAL, Up: Roots Package section - - ROOTSCOMPLEX variable - - When the operator [*note ROOTS::.] is called the complex roots are -collected in the global variable ROOTSCOMPLEX as [*note LIST::.] . - - -File: redhelp, Node: ROOTSREAL, Prev: ROOTSCOMPLEX, Up: Roots Package section - - ROOTSREAL variable - - When the operator [*note ROOTS::.] is called the real roots are -collected in the global variable ROOTREAL as [*note LIST::.] . - - -File: redhelp, Node: Roots Package section, Next: Special Functions section, Prev: Numeric Package section, Up: Top - - Roots Package section - -* Menu: - -* Roots Package:: introduction -* MKPOLY:: operator -* NEARESTROOT:: operator -* REALROOTS:: operator -* ROOTACC:: operator -* ROOTS:: operator -* ROOT_VAL:: operator -* ROOTSCOMPLEX:: variable -* ROOTSREAL:: variable - - -File: redhelp, Node: Special Function Package, Next: Constants, Up: Special Functions section - - SPECIAL FUNCTION PACKAGE introduction - - The REDUCE SPECIAL FUNCTION PACKAGE supplies extended algebraic and -numeric support for a wide class of objects. This package was released -together with REDUCE 3.5 (October 1993) for the first time, a major -update is released with REDUCE 3.6. - - The functions included in this package are in most cases (unless -otherwise stated) defined and named like in the book by Abramowitz and -Stegun: Handbook of Mathematical Functions, Dover Publications. - - The aim is to collect as much information on the special functions -and simplification capabilities as possible, i.e. algebraic -simplifications and numeric (rounded mode) code, limits of the -functions together with the definitions of the functions, which are in -most cases a power series, a (definite) integral and/or a differential -equation. - - What can be found: Some famous constants, a variety of Bessel -functions, special polynomials, the Gamma function, the (Riemann) Zeta -function, Elliptic Functions, Elliptic Integrals, 3J symbols -(Clebsch-Gordan coefficients) and integral functions. - - What is missing: Mathieu functions, LerchPhi, etc.. The information -about the special functions which solve certain differential equation -is very limited. In several cases numerical approximation is -restricted to real arguments or is missing completely. - - The implementation of this package uses REDUCE rule sets to a large -extent, which guarantees a high 'readability' of the functions -definitions in the source file directory. It makes extensions to the -special functions code easy in most cases too. To look at these rules -it may be convenient to use the showrules operator e.g. - - [*note SHOWRULES::.] Besseli; - - . - - Some evaluations are improved if the special function package is -loaded, e.g. some (infinite) sums and products leading to expressions -including special functions are known in this case. - - Note: The special function package has to be loaded explicitly by -calling - ____________________________________________________________ - - load_package specfn; - ____________________________________________________________ - - The functions [*note MeijerG::.] and [*note HYPERGEOMETRIC::.] -require additionally - ____________________________________________________________ - - load_package specfn2; - ____________________________________________________________ - - -File: redhelp, Node: Constants, Next: Bernoulli Euler Zeta section, Prev: Special Function Package, Up: Special Functions section - - CONSTANTS - - There are a few constants known to the special function package, -namely - - EULER CONSTANT (which can be computed as -[*note PSI::.] (1)) and - - KHINCHIN CONSTANT (which is defined in Khinchin's book - - "Continued Fractions") and - - GOLDEN_RATIO (which can be computed as (1 + sqrt 5)/2) and - - CATALAN CONSTANT (which is known as an infinite sum of reciprocal -powers) - -examples: - - ____________________________________________________________ - - on rounded; - Euler_Gamma; - - 0.577215664902 - - - Khinchin; - - 2.68545200107 - - - Catalan - - 0.915965594177 - - - Golden_Ratio - - 1.61803398875 - - ____________________________________________________________ - - -File: redhelp, Node: BERNOULLI, Next: BERNOULLIP, Up: Bernoulli Euler Zeta section - - BERNOULLI operator - - The BERNOULLI operator returns the nth Bernoulli number. - -syntax: - - BERNOULLI () - -examples: - - ____________________________________________________________ - - bernoulli 20; - - - 174611 / 330 - - - bernoulli 17; - - 0 - - ____________________________________________________________ - All Bernoulli numbers with odd indices except for 1 are zero. - - -File: redhelp, Node: BERNOULLIP, Next: EULER, Prev: BERNOULLI, Up: Bernoulli Euler Zeta section - - BERNOULLIP operator - - The BERNOULLIP operator returns the nth Bernoulli Polynomial -evaluated at x. - -syntax: - - BERNOULLIP (,) - -examples: - - ____________________________________________________________ - - BernoulliP(3,z); - - 2 - z*(2*z - 3*z + 1)/2 - - - - BernoulliP(10,3); - - 338585 / 66 - - ____________________________________________________________ - The value of the nth Bernoulli Polynomial at 0 is the nth Bernoulli -number. - - -File: redhelp, Node: EULER, Next: EULERP, Prev: BERNOULLIP, Up: Bernoulli Euler Zeta section - - EULER operator - - The EULER operator returns the nth Euler number. - -syntax: - - EULER () - -examples: - - ____________________________________________________________ - - Euler 20; - - 370371188237525 - - - Euler 0; - - 1 - - ____________________________________________________________ - The EULER numbers are evaluated by a recursive algorithm which makes -it hard to compute Euler numbers above say 200. - - Euler numbers appear in the coefficients of the power series -representation of 1/cos(z). - - -File: redhelp, Node: EULERP, Next: ZETA, Prev: EULER, Up: Bernoulli Euler Zeta section - - EULERP operator - - The EULERP operator returns the nth Euler Polynomial. - -syntax: - - EULERP (,) - -examples: - - ____________________________________________________________ - - EulerP(2,xx); - - xx*(xx - 1) - - - EulerP(10,3); - - 2046 - - ____________________________________________________________ - The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. - - -File: redhelp, Node: ZETA, Prev: EULERP, Up: Bernoulli Euler Zeta section - - ZETA operator - - The ZETA operator returns Riemann's Zeta function, - - Zeta (z) := sum(1/(k**z),k,1,infinity) - -syntax: - - ZETA () - -examples: - - ____________________________________________________________ - - Zeta(2); - - 2 - pi / 6 - - - on rounded; - - Zeta 1.01; - - 100.577943338 - - ____________________________________________________________ - Numerical computation for the Zeta function for arguments close to 1 -are tedious, because the series is converging very slowly. In this case -a formula (e.g. found in Bender/Orzag: Advanced Mathematical Methods for -Scientists and Engineers, McGraw-Hill) is used. - - No numerical approximation for complex arguments is done. - - -File: redhelp, Node: Bernoulli Euler Zeta section, Next: Bessel Functions section, Prev: Constants, Up: Special Functions section - - Bernoulli Euler Zeta section - -* Menu: - -* BERNOULLI:: operator -* BERNOULLIP:: operator -* EULER:: operator -* EULERP:: operator -* ZETA:: operator - - -File: redhelp, Node: BESSELJ, Next: BESSELY, Up: Bessel Functions section - - BESSELJ operator - - The BESSELJ operator returns the Bessel function of the first kind. - -syntax: - - BESSELJ (,) - -examples: - - ____________________________________________________________ - - BesselJ(1/2,pi); - - 0 - - - on rounded; - - BesselJ(0,1); - - 0.765197686558 - - ____________________________________________________________ - - -File: redhelp, Node: BESSELY, Next: HANKEL1, Prev: BESSELJ, Up: Bessel Functions section - - BESSELY operator - - The BESSELY operator returns the Bessel function of the second kind. - -syntax: - - BESSELY (,) - -examples: - - ____________________________________________________________ - - BesselY (1/2,pi); - - - sqrt(2) / pi - - - on rounded; - - BesselY (1,3); - - 0.324674424792 - - ____________________________________________________________ - The operator BESSELY is also called Weber's function. - - -File: redhelp, Node: HANKEL1, Next: HANKEL2, Prev: BESSELY, Up: Bessel Functions section - - HANKEL1 operator - - The HANKEL1 operator returns the Hankel function of the first kind. - -syntax: - - HANKEL1 (,) - -examples: - - ____________________________________________________________ - - on complex; - - Hankel1 (1/2,pi); - - - i * sqrt(2) / pi - - - Hankel1 (1,pi); - - besselj(1,pi) + i*bessely(1,pi) - - ____________________________________________________________ - The operator HANKEL1 is also called Bessel function of the third -kind. There is currently no numeric evaluation of Hankel functions. - - -File: redhelp, Node: HANKEL2, Next: BESSELI, Prev: HANKEL1, Up: Bessel Functions section - - HANKEL2 operator - - The HANKEL2 operator returns the Hankel function of the second kind. - -syntax: - - HANKEL2 (,) - -examples: - - ____________________________________________________________ - - on complex; - - Hankel2 (1/2,pi); - - - i * sqrt(2) / pi - - - Hankel2 (1,pi); - - besselj(1,pi) - i*bessely(1,pi) - - ____________________________________________________________ - The operator HANKEL2 is also called Bessel function of the third -kind. There is currently no numeric evaluation of Hankel functions. - - -File: redhelp, Node: BESSELI, Next: BESSELK, Prev: HANKEL2, Up: Bessel Functions section - - BESSELI operator - - The BESSELI operator returns the modified Bessel function I. - -syntax: - - BESSELI (,) - -examples: - - ____________________________________________________________ - - on rounded; - - Besseli (1,1); - - 0.565159103992 - - ____________________________________________________________ - The knowledge about the operator BESSELI is currently fairly limited. - - -File: redhelp, Node: BESSELK, Next: StruveH, Prev: BESSELI, Up: Bessel Functions section - - BESSELK operator - - The BESSELK operator returns the modified Bessel function K. - -syntax: - - BESSELK (,) - -examples: - - ____________________________________________________________ - - df(besselk(0,x),x); - - - besselk(1,x) - - ____________________________________________________________ - There is currently no numeric support for the operator BESSELK . - - -File: redhelp, Node: StruveH, Next: StruveL, Prev: BESSELK, Up: Bessel Functions section - - STRUVEH operator - - The STRUVEH operator returns Struve's H function. - -syntax: - - STRUVEH (,) - -examples: - - ____________________________________________________________ - - struveh(-3/2,x); - - - besselj(3/2,x) / i - - ____________________________________________________________ - - -File: redhelp, Node: StruveL, Next: KummerM, Prev: StruveH, Up: Bessel Functions section - - STRUVEL operator - - The STRUVEL operator returns the modified Struve L function . - -syntax: - - STRUVEL (,) - -examples: - - ____________________________________________________________ - - struvel(-3/2,x); - - besseli(3/2,x) - - ____________________________________________________________ - - -File: redhelp, Node: KummerM, Next: KummerU, Prev: StruveL, Up: Bessel Functions section - - KUMMERM operator - - The KUMMERM operator returns Kummer's M function. - -syntax: - - KUMMERM (,,) - -examples: - - ____________________________________________________________ - - kummerm(1,1,x); - - x - e - - - on rounded; - - kummerm(1,3,1.3); - - 1.62046942914 - - ____________________________________________________________ - Kummer's M function is one of the Confluent Hypergeometric functions. -For reference see the [*note HYPERGEOMETRIC::.] operator. - - -File: redhelp, Node: KummerU, Next: WhittakerW, Prev: KummerM, Up: Bessel Functions section - - KUMMERU operator - - The KUMMERU operator returns Kummer's U function. - -syntax: - - KUMMERU (,,) - -examples: - - ____________________________________________________________ - - df(kummeru(1,1,x),x) - - - kummeru(2,2,x) - - ____________________________________________________________ - Kummer's U function is one of the Confluent Hypergeometric functions. -For reference see the [*note HYPERGEOMETRIC::.] operator. - - -File: redhelp, Node: WhittakerW, Prev: KummerU, Up: Bessel Functions section - - WHITTAKERW operator - - The WHITTAKERW operator returns Whittaker's W function. - -syntax: - - WHITTAKERW (,,) - -examples: - - ____________________________________________________________ - - WhittakerW(2,2,2); - - 1 - 4*sqrt(2)*kummeru(-,5,2) - 2 - ------------------------- - e - - ____________________________________________________________ - Whittaker's W function is one of the Confluent Hypergeometric -functions. For reference see the [*note HYPERGEOMETRIC::.] operator. - - -File: redhelp, Node: Bessel Functions section, Next: Airy Functions section, Prev: Bernoulli Euler Zeta section, Up: Special Functions section - - Bessel Functions section - -* Menu: - -* BESSELJ:: operator -* BESSELY:: operator -* HANKEL1:: operator -* HANKEL2:: operator -* BESSELI:: operator -* BESSELK:: operator -* StruveH:: operator -* StruveL:: operator -* KummerM:: operator -* KummerU:: operator -* WhittakerW:: operator - - -File: redhelp, Node: Airy_Ai, Next: Airy_Bi, Up: Airy Functions section - - AIRY_AI operator - - The AIRY_AI operator returns the Airy Ai function for a given -argument. - -syntax: - - AIRY_AI () - -examples: - - ____________________________________________________________ - - on complex; - on rounded; - Airy_Ai(0); - - - 0.355028053888 - - - Airy_Ai(3.45 + 17.97i); - - - 5.5561528511e+9 - 8.80397899932e+9*i - - ____________________________________________________________ - - -File: redhelp, Node: Airy_Bi, Next: Airy_Aiprime, Prev: Airy_Ai, Up: Airy Functions section - - AIRY_BI operator - - The AIRY_BI operator returns the Airy Bi function for a given -argument. - -syntax: - - AIRY_BI () - -examples: - - ____________________________________________________________ - - Airy_Bi(0); - - 0.614926627446 - - - Airy_Bi(3.45 + 17.97i); - - 8.80397899932e+9 - 5.5561528511e+9*i - - ____________________________________________________________ - - -File: redhelp, Node: Airy_Aiprime, Next: Airy_Biprime, Prev: Airy_Bi, Up: Airy Functions section - - AIRY_AIPRIME operator - - The AIRY_AIPRIME operator returns the Airy Aiprime function for a -given argument. - -syntax: - - AIRY_AIPRIME () - -examples: - - ____________________________________________________________ - - Airy_Aiprime(0); - - - 0.258819403793 - - - Airy_Aiprime(3.45+17.97i); - - - 3.83386421824e+19 + 2.16608828136e+19*i - - ____________________________________________________________ - - -File: redhelp, Node: Airy_Biprime, Prev: Airy_Aiprime, Up: Airy Functions section - - AIRY_BIPRIME operator - - The AIRY_BIPRIME operator returns the Airy Biprime function for a -given argument. - -syntax: - - AIRY_BIPRIME () - -examples: - - ____________________________________________________________ - - Airy_Biprime(0); - - - Airy_Biprime(3.45 + 17.97i); - - 3.84251916792e+19 - 2.18006297399e+19*i - - ____________________________________________________________ - - -File: redhelp, Node: Airy Functions section, Next: Jacobi Elliptic Functions and Elliptic Integrals section, Prev: Bessel Functions section, Up: Special Functions section - - Airy Functions section - -* Menu: - -* Airy_Ai:: operator -* Airy_Bi:: operator -* Airy_Aiprime:: operator -* Airy_Biprime:: operator - - -File: redhelp, Node: JacobiSN, Next: JacobiCN, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBISN operator - - The JACOBISN operator returns the Jacobi Elliptic function sn. - -syntax: - - JACOBISN (,) - -examples: - - ____________________________________________________________ - - Jacobisn(0.672, 0.36) - - 0.609519691792 - - - Jacobisn(1,0.9) - - 0.770085724907881 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiCN, Next: JacobiDN, Prev: JacobiSN, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBICN operator - - The JACOBICN operator returns the Jacobi Elliptic function cn. - -syntax: - - JACOBICN (,) - -examples: - - ____________________________________________________________ - - Jacobicn(7.2, 0.6) - - 0.837288298482018 - - - Jacobicn(0.11, 19) - - 0.994403862690043 - 1.6219006985556e-16*i - - ____________________________________________________________ - - -File: redhelp, Node: JacobiDN, Next: JacobiCD, Prev: JacobiCN, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIDN operator - - The JACOBIDN operator returns the Jacobi Elliptic function dn. - -syntax: - - JACOBIDN (,) - -examples: - - ____________________________________________________________ - - Jacobidn(15, 0.683) - - 0.640574162024592 - - - Jacobidn(0,0) - - 1 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiCD, Next: JacobiSD, Prev: JacobiDN, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBICD operator - - The JACOBICD operator returns the Jacobi Elliptic function cd. - -syntax: - - JACOBICD (,) - -examples: - - ____________________________________________________________ - - Jacobicd(1, 0.34) - - 0.657683337805273 - - - Jacobicd(0.8,0.8) - - 0.925587311582301 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiSD, Next: JacobiND, Prev: JacobiCD, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBISD operator - - The JACOBISD operator returns the Jacobi Elliptic function sd. - -syntax: - - JACOBISD (,) - -examples: - - ____________________________________________________________ - - Jacobisd(12, 0.4) - - 0.357189729437272 - - - Jacobisd(0.35,1) - - - 1.17713873203043 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiND, Next: JacobiDC, Prev: JacobiSD, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIND operator - - The JACOBIND operator returns the Jacobi Elliptic function nd. - -syntax: - - JACOBIND (,) - -examples: - - ____________________________________________________________ - - Jacobind(0.2, 17) - - 1.46553203037507 + 0.0000000000334032759313703*i - - - Jacobind(30, 0.001) - - 1.00048958438 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiDC, Next: JacobiNC, Prev: JacobiND, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIDC operator - - The JACOBIDC operator returns the Jacobi Elliptic function dc. - -syntax: - - JACOBIDC (,) - -examples: - - ____________________________________________________________ - - Jacobidc(0.003,1) - - 1 - - - Jacobidc(2, 0.75) - - 6.43472885111 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiNC, Next: JacobiSC, Prev: JacobiDC, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBINC operator - - The JACOBINC operator returns the Jacobi Elliptic function nc. - -syntax: - - JACOBINC (,) - -examples: - - ____________________________________________________________ - - Jacobinc(1,0) - - 1.85081571768093 - - - Jacobinc(56, 0.4387) - - 39.304842663512 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiSC, Next: JacobiNS, Prev: JacobiNC, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBISC operator - - The JACOBISC operator returns the Jacobi Elliptic function sc. - -syntax: - - JACOBISC (,) - -examples: - - ____________________________________________________________ - - Jacobisc(9, 0.88) - - - 1.16417697982095 - - - Jacobisc(0.34, 7) - - 0.305851938390775 - 9.8768100944891e-12*i - - ____________________________________________________________ - - -File: redhelp, Node: JacobiNS, Next: JacobiDS, Prev: JacobiSC, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBINS operator - - The JACOBINS operator returns the Jacobi Elliptic function ns. - -syntax: - - JACOBINS (,) - -examples: - - ____________________________________________________________ - - Jacobins(3, 0.9) - - 1.00945801599785 - - - Jacobins(0.887, 15) - - 0.683578280513975 - 0.85023411082469*i - - ____________________________________________________________ - - -File: redhelp, Node: JacobiDS, Next: JacobiCS, Prev: JacobiNS, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIDS operator - - The JACOBISN operator returns the Jacobi Elliptic function ds. - -syntax: - - JACOBIDS (,) - -examples: - - ____________________________________________________________ - - Jacobids(98,0.223) - - - 1.061253961477 - - - Jacobids(0.36,0.6) - - 2.76693172243692 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiCS, Next: JacobiAMPLITUDE, Prev: JacobiDS, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBICS operator - - The JACOBICS operator returns the Jacobi Elliptic function cs. - -syntax: - - JACOBICS (,) - -examples: - - ____________________________________________________________ - - Jacobics(0, 0.767) - - infinity - - - Jacobics(1.43, 0) - - 0.141734127352112 - - ____________________________________________________________ - - -File: redhelp, Node: JacobiAMPLITUDE, Next: AGM_FUNCTION, Prev: JacobiCS, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIAMPLITUDE operator - - The JACOBIAMPLITUDE operator returns the amplitude of u. - -syntax: - - JACOBIAMPLITUDE (,) - -examples: - - ____________________________________________________________ - - JacobiAmplitude(7.239, 0.427) - - 0.0520978301448978 - - - JacobiAmplitude(0,0.1) - - 0 - - ____________________________________________________________ - Amplitude u = asin(JACOBISN(U,M) ) - - -File: redhelp, Node: AGM_FUNCTION, Next: LANDENTRANS, Prev: JacobiAMPLITUDE, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - AGM_FUNCTION operator - - The AGM_FUNCTION operator returns a list of (N, AGM, list of -aNtoa0, list of bNtob0, list of cNtoc0) where a0, b0 and c0 are the -initial values; N is the index number of the last term used to generate -the AGM. AGM is the Arithmetic Geometric Mean. - -syntax: - - AGM_FUNCTION (,,) - -examples: - - ____________________________________________________________ - - AGM_function(1,1,1) - - 1,1,1,1,1,1,0,1 - - - AGM_function(1, 0.1, 1.3) - - {6, - 2.27985615996629, - {2.27985615996629, 2.27985615996629, - 2.2798561599706, 2.2798624278857, - 2.28742283656583, 2.55, 1}, - {2.27985615996629, 2.27985615996629, - 2.27985615996198, 2.2798498920555, - 2.27230201920557, 2.02484567313166, 4.1}, - {0, 4.30803136219904e-12, 0.0000062679151007581, - 0.00756040868012758, 0.262577163434171, - 1.55, 5.9}} - - ____________________________________________________________ - The other Jacobi functions use this function with initial values -a0=1, b0=sqrt(1-m), c0=sqrt(m). - - -File: redhelp, Node: LANDENTRANS, Next: EllipticF, Prev: AGM_FUNCTION, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - LANDENTRANS operator - - The LANDENTRANS operator generates the descending landen -transformation of the given imput values, returning a list of these -values; initial to final in each case. - -syntax: - - LANDENTRANS (,) - -examples: - - ____________________________________________________________ - - landentrans(0,0.1) - - {{0,0,0,0,0},{0.1,0.0025041751943776, - - - - - 0.00000156772498954046,6.1444078 9914461e-13,0}} - - ____________________________________________________________ - The first list ascends in value, and the second descends in value. - - -File: redhelp, Node: EllipticF, Next: EllipticK, Prev: LANDENTRANS, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - ELLIPTICF operator - - The ELLIPTICF operator returns the Elliptic Integral of the First -Kind. - -syntax: - - ELLITPICF (,) - -examples: - - ____________________________________________________________ - - EllipticF(0.3, 8.222) - - 0.3 - - - EllipticF(7.396, 0.1) - - 7.58123216114307 - - ____________________________________________________________ - The Complete Elliptic Integral of the First Kind can be found by -putting the first argument to pi/2 or by using ELLIPTICK and the second -argument. - - -File: redhelp, Node: EllipticK, Next: EllipticKprime, Prev: EllipticF, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - ELLIPTICK operator - - The ELLIPTICK operator returns the Elliptic value K. - -syntax: - - ELLIPTICK () - -examples: - - ____________________________________________________________ - - EllipticK(0.2) - - 1.65962359861053 - - - EllipticK(4.3) - - 0.808442364282734 - 1.05562492399206*i - - - EllipticK(0.000481) - - 1.57098526617635 - - ____________________________________________________________ - The ELLIPTICK function is the Complete Elliptic Integral of the -First Kind. - - -File: redhelp, Node: EllipticKprime, Next: EllipticE, Prev: EllipticK, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - ELLIPTICKPRIME operator - - The ELLIPTICK' operator returns the Elliptic value K(m). - -syntax: - - ELLIPTICKPRIME () - -examples: - - ____________________________________________________________ - - EllipticKprime(0.2) - - 2.25720532682085 - - - EllipticKprime(4.3) - - 1.05562492399206 - - - EllipticKprime(0.000481) - - 5.206621921966 - - ____________________________________________________________ - The ELLIPTICKPRIME function is the Complete Elliptic Integral of the -First Kind of (1-m). - - -File: redhelp, Node: EllipticE, Next: EllipticTHETA, Prev: EllipticKprime, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - ELLIPTICE operator - - The ELLIPTICE operator used with two arguments returns the Elliptic -Integral of the Second Kind. - -syntax: - - ELLIPTICE (,) - -examples: - - ____________________________________________________________ - - EllipticE(1.2,0.22) - - 1.15094019180949 - - - EllipticE(0,4.35) - - 0 - - - EllipticE(9,0.00719) - - 8.98312465929145 - - ____________________________________________________________ - The Complete Elliptic Integral of the Second Kind can be obtained by -using just the second argument, or by using pi/2 as the first argument. - - The ELLIPTICE operator used with one argument returns the Elliptic -value E. - -syntax: - - ELLIPTICE () - -examples: - - ____________________________________________________________ - - EllipticE(0.22) - - 1.48046637439519 - - - EllipticE(pi/2, 0.22) - - 1.48046637439519 - - ____________________________________________________________ - - -File: redhelp, Node: EllipticTHETA, Next: JacobiZETA, Prev: EllipticE, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - ELLIPTICTHETA operator - - The ELLIPTICTHETA operator returns one of the four Theta functions. -It cannot except any number other than 1,2,3 or 4 as its first argument. - -syntax: - - ELLIPTICTHETA (,,) - -examples: - - ____________________________________________________________ - - EllipticTheta(1, 1.4, 0.72) - - 0.91634775373 - - - EllipticTheta(2, 3.9, 6.1 ) - - -48.0202736969 + 20.9881034377 i - - - EllipticTheta(3, 0.67, 0.2) - - 1.0083077448 - - - EllipticTheta(4, 8, 0.75) - - 0.894963369304 - - - EllipticTheta(5, 1, 0.1) - - ***** In EllipticTheta(a,u,m); a = 1,2,3 or 4. - - ____________________________________________________________ - Theta functions are important because every one of the Jacobian -Elliptic functions can be expressed as the ratio of two theta functions. - - -File: redhelp, Node: JacobiZETA, Prev: EllipticTHETA, Up: Jacobi Elliptic Functions and Elliptic Integrals section - - JACOBIZETA operator - - The JACOBIZETA operator returns the Jacobian function Zeta. - -syntax: - - JACOBIZETA (,) - -examples: - - ____________________________________________________________ - - JacobiZeta(3.2, 0.8) - - - 0.254536403439 - - - JacobiZeta(0.2, 1.6) - - 0.171766095970451 - 0.0717028569800147*i - - ____________________________________________________________ - The Jacobian function Zeta is related to the Jacobian function Theta. -But it is significantly different from Riemann's Zeta Function [*note -ZETA::.] . - - -File: redhelp, Node: Jacobi Elliptic Functions and Elliptic Integrals section, Next: Gamma and Related Functions section, Prev: Airy Functions section, Up: Special Functions section - - Jacobi Elliptic Functions and Elliptic Integrals section - -* Menu: - -* JacobiSN:: operator -* JacobiCN:: operator -* JacobiDN:: operator -* JacobiCD:: operator -* JacobiSD:: operator -* JacobiND:: operator -* JacobiDC:: operator -* JacobiNC:: operator -* JacobiSC:: operator -* JacobiNS:: operator -* JacobiDS:: operator -* JacobiCS:: operator -* JacobiAMPLITUDE:: operator -* AGM_FUNCTION:: operator -* LANDENTRANS:: operator -* EllipticF:: operator -* EllipticK:: operator -* EllipticKprime:: operator -* EllipticE:: operator -* EllipticTHETA:: operator -* JacobiZETA:: operator - - -File: redhelp, Node: POCHHAMMER, Next: GAMMA, Up: Gamma and Related Functions section - - POCHHAMMER operator - - The POCHHAMMER operator implements the Pochhammer notation (shifted -factorial). - -syntax: - - POCHHAMMER (,) - -examples: - - ____________________________________________________________ - - pochhammer(17,4); - - 116280 - - - - pochhammer(1/2,z); - - factorial(2*z) - -------------------- - 2*z - (2 *factorial(z)) - - ____________________________________________________________ - A number of complex rules for POCHHAMMER are inactive, because they -cause a huge system load in algebraic mode. If one wants to use more -rules for the simplification of Pochhammer's notation, one can do: - - let special!*pochhammer!*rules; - - -File: redhelp, Node: GAMMA, Next: BETA, Prev: POCHHAMMER, Up: Gamma and Related Functions section - - GAMMA operator - - The GAMMA operator returns the Gamma function. - -syntax: - - GAMMA () - -examples: - - ____________________________________________________________ - - gamma(10); - - 362880 - - - gamma(1/2); - - sqrt(pi) - - ____________________________________________________________ - - -File: redhelp, Node: BETA, Next: PSI, Prev: GAMMA, Up: Gamma and Related Functions section - - BETA operator - - The BETA operator returns the Beta function defined by - - Beta (z,w) := defint(t**(z-1)* (1 - t)**(w-1),t,0,1) . - -syntax: - - BETA (,) - -examples: - - ____________________________________________________________ - - Beta(2,2); - - 1 / 6 - - - Beta(x,y); - - gamma(x)*gamma(y) / gamma(x + y) - - ____________________________________________________________ - The operator BETA is simplified towards the [*note GAMMA::.] -operator. - - -File: redhelp, Node: PSI, Next: POLYGAMMA, Prev: BETA, Up: Gamma and Related Functions section - - PSI operator - - The PSI operator returns the Psi (or DiGamma) function. - - Psi(x) := df(Gamma(z),z)/ Gamma (z) - -syntax: - - GAMMA () - -examples: - - ____________________________________________________________ - - Psi(3); - - (2*log(2) + psi(1/2) + psi(1) + 3)/2 - - - on rounded; - - - Psi(1); - - 0.577215664902 - - ____________________________________________________________ - Euler's constant can be found as - Psi(1). - - -File: redhelp, Node: POLYGAMMA, Prev: PSI, Up: Gamma and Related Functions section - - POLYGAMMA operator - - The POLYGAMMA operator returns the Polygamma function. - - Polygamma(n,x) := df(Psi(z),z,n); - -syntax: - - POLYGAMMA (,) - -examples: - - ____________________________________________________________ - - Polygamma(1,2); - - 2 - (pi - 6) / 6 - - - on rounded; - - Polygamma(1,2.35); - - 0.52849689109 - - ____________________________________________________________ - The Polygamma function is used for simplification of the [*note -ZETA::.] function for some arguments. - - -File: redhelp, Node: Gamma and Related Functions section, Next: Miscellaneous Functions section, Prev: Jacobi Elliptic Functions and Elliptic Integrals section, Up: Special Functions section - - Gamma and Related Functions section - -* Menu: - -* POCHHAMMER:: operator -* GAMMA:: operator -* BETA:: operator -* PSI:: operator -* POLYGAMMA:: operator - - -File: redhelp, Node: DILOG extended, Next: Lambert_W function, Up: Miscellaneous Functions section - - DILOG EXTENDED operator - - The package SPECFN supplies an extended support for the [*note -DILOG::.] operator which implements the DILOGARITHM FUNCTION . - - dilog(x) := - defint(log(t)/(t - 1),t,1,x); - -syntax: - - DILOG (,) - -examples: - - ____________________________________________________________ - - defint(log(t)/(t - 1),t,1,x); - - - dilog (x) - - - dilog 2; - - 2 - - pi /12 - - - - on rounded; - - Dilog 20; - - - 5.92783972438 - - ____________________________________________________________ - The operator DILOG is sometimes called Spence's Integral for n = 2. - - -File: redhelp, Node: Lambert_W function, Prev: DILOG extended, Up: Miscellaneous Functions section - - LAMBERT_W FUNCTION operator - - Lambert's W function is the inverse of the function w * e^w. It is -used in the [*note SOLVE::.] package for equations containing -exponentials and logarithms. - -syntax: - - LAMBERT_W () - -examples: - - ____________________________________________________________ - - Lambert_W(-1/e); - - -1 - - - solve(w + log(w),w); - - w=lambert_w(1) - - - on rounded; - - Lambert_W(-0.05); - - - 0.0527059835515 - - ____________________________________________________________ - The current implementation will compute the principal branch in -rounded mode only. - - -File: redhelp, Node: Miscellaneous Functions section, Next: Orthogonal Polynomials section, Prev: Gamma and Related Functions section, Up: Special Functions section - - Miscellaneous Functions section - -* Menu: - -* DILOG extended:: operator -* Lambert_W function:: operator - - -File: redhelp, Node: ChebyshevT, Next: ChebyshevU, Up: Orthogonal Polynomials section - - CHEBYSHEVT operator - - The CHEBYSHEVT operator computes the nth Chebyshev T Polynomial (of -the first kind). - -syntax: - - CHEBYSHEVT (,) - -examples: - - ____________________________________________________________ - - ChebyshevT(3,xx); - - 2 - xx*(4*xx - 3) - - - - ChebyshevT(3,4); - - 244 - - ____________________________________________________________ - Chebyshev's T polynomials are computed using the recurrence relation: - - ChebyshevT(n,x) := 2x*ChebyshevT(n-1,x) - ChebyshevT(n-2,x) with - - ChebyshevT(0,x) := 0 and ChebyshevT(1,x) := x - - -File: redhelp, Node: ChebyshevU, Next: HermiteP, Prev: ChebyshevT, Up: Orthogonal Polynomials section - - CHEBYSHEVU operator - - The CHEBYSHEVU operator returns the nth Chebyshev U Polynomial (of -the second kind). - -syntax: - - CHEBYSHEVU (,) - -examples: - - ____________________________________________________________ - - ChebyshevU(3,xx); - - 2 - 4*x*(2*x - 1) - - - - ChebyshevU(3,4); - - 496 - - ____________________________________________________________ - Chebyshev's U polynomials are computed using the recurrence relation: - - ChebyshevU(n,x) := 2x*ChebyshevU(n-1,x) - ChebyshevU(n-2,x) with - - ChebyshevU(0,x) := 0 and ChebyshevU(1,x) := 2x - - -File: redhelp, Node: HermiteP, Next: LaguerreP, Prev: ChebyshevU, Up: Orthogonal Polynomials section - - HERMITEP operator - - The HERMITEP operator returns the nth Hermite Polynomial. - -syntax: - - HERMITEP (,) - -examples: - - ____________________________________________________________ - - HermiteP(3,xx); - - 2 - 4*xx*(2*xx - 3) - - - HermiteP(3,4); - - 464 - - ____________________________________________________________ - Hermite polynomials are computed using the recurrence relation: - - HermiteP(n,x) := 2x*HermiteP(n-1,x) - 2*(n-1)*HermiteP(n-2,x) with - - HermiteP(0,x) := 1 and HermiteP(1,x) := 2x - - -File: redhelp, Node: LaguerreP, Next: LegendreP, Prev: HermiteP, Up: Orthogonal Polynomials section - - LAGUERREP operator - - The LAGUERREP operator computes the nth Laguerre Polynomial. The -two argument call of LaguerreP is a (common) abbreviation of -LaguerreP(n,0,x). - -syntax: - - LAGUERREP (,) or - - LAGUERREP (,,) - -examples: - - ____________________________________________________________ - - LaguerreP(3,xx); - - 3 2 - (- xx + 9*xx - 18*xx + 6)/6 - - - - LaguerreP(2,3,4); - - -2 - - ____________________________________________________________ - Laguerre polynomials are computed using the recurrence relation: - - LaguerreP(n,a,x) := (2n+a-1-x)/n*LaguerreP(n-1,a,x) - - (n+a-1) * LaguerreP(n-2,a,x) with - - LaguerreP(0,a,x) := 1 and LaguerreP(2,a,x) := -x+1+a - - -File: redhelp, Node: LegendreP, Next: JacobiP, Prev: LaguerreP, Up: Orthogonal Polynomials section - - LEGENDREP operator - - The binary LEGENDREP operator computes the nth Legendre Polynomial -which is a special case of the nth Jacobi Polynomial with - - LegendreP(n,x) := JacobiP(n,0,0,x) - - The ternary form returns the associated Legendre Polynomial (see -below). - -syntax: - - LEGENDREP (,) or - - LEGENDREP (,,) - -examples: - - ____________________________________________________________ - - LegendreP(3,xx); - - 2 - xx*(5*xx - 3) - ---------------- - 2 - - - - LegendreP(3,2,xx); - - 2 - 15*xx*( - xx + 1) - - ____________________________________________________________ - The ternary form of the operator LEGENDREP is the associated -Legendre Polynomial defined as - - P(n,m,x) = (-1)**m * (1-x**2)**(m/2) * df(LegendreP(n,x),x,m) - - -File: redhelp, Node: JacobiP, Next: GegenbauerP, Prev: LegendreP, Up: Orthogonal Polynomials section - - JACOBIP operator - - The JACOBIP operator computes the nth Jacobi Polynomial. - -syntax: - - JACOBIP (,,, ) - -examples: - - ____________________________________________________________ - - JacobiP(3,4,5,xx); - - 3 2 - 7*(65*xx - 13*xx - 13*xx + 1) - ---------------------------------- - 8 - - - - JacobiP(3,4,5,6); - - 94465/8 - - ____________________________________________________________ - - -File: redhelp, Node: GegenbauerP, Next: SolidHarmonicY, Prev: JacobiP, Up: Orthogonal Polynomials section - - GEGENBAUERP operator - - The GEGENBAUERP operator computes Gegenbauer's (ultraspherical) -polynomials. - -syntax: - - GEGENBAUERP (,,) - -examples: - - ____________________________________________________________ - - GegenbauerP(3,2,xx); - - 2 - 4*xx*(8*xx - 3) - - - - GegenbauerP(3,2,4); - - 2000 - - ____________________________________________________________ - - -File: redhelp, Node: SolidHarmonicY, Next: SphericalHarmonicY, Prev: GegenbauerP, Up: Orthogonal Polynomials section - - SOLIDHARMONICY operator - - The SOLIDHARMONICY operator computes Solid harmonic (Laplace) -polynomials. - -syntax: - - SOLIDHARMONICY (,, -,,,) - -examples: - - ____________________________________________________________ - - - SolidHarmonicY(3,-2,x,y,z,r2); - - 2 2 - sqrt(105)*z*(-2*i*x*y + x - y ) - --------------------------------- - 4*sqrt(pi)*sqrt(2) - - ____________________________________________________________ - - -File: redhelp, Node: SphericalHarmonicY, Prev: SolidHarmonicY, Up: Orthogonal Polynomials section - - SPHERICALHARMONICY operator - - The SPHERICALHARMONICY operator computes Spherical harmonic (Laplace) -polynomials. These are special cases of the solid harmonic polynomials, -[*note SolidHarmonicY::.] . - -syntax: - - SPHERICALHARMONICY (,, ,) - -examples: - - ____________________________________________________________ - - SphericalHarmonicY(3,2,theta,phi); - - - 2 2 2 - sqrt(105)*cos(theta)*sin(theta) *(cos(phi) +2*cos(phi)*sin(phi)*i-sin(phi) ) - ----------------------------------------------------------------------------- - 4*sqrt(pi)*sqrt(2) - - ____________________________________________________________ - - -File: redhelp, Node: Orthogonal Polynomials section, Next: Integral Functions section, Prev: Miscellaneous Functions section, Up: Special Functions section - - Orthogonal Polynomials section - -* Menu: - -* ChebyshevT:: operator -* ChebyshevU:: operator -* HermiteP:: operator -* LaguerreP:: operator -* LegendreP:: operator -* JacobiP:: operator -* GegenbauerP:: operator -* SolidHarmonicY:: operator -* SphericalHarmonicY:: operator - - -File: redhelp, Node: Si, Next: Shi, Up: Integral Functions section - - SI operator - - The SI operator returns the Sine Integral function. - -syntax: - - SI () - -examples: - - ____________________________________________________________ - - limit(Si(x),x,infinity); - - pi / 2 - - - on rounded; - - Si(0.35); - - 0.347626790989 - - ____________________________________________________________ - The numeric values for the operator SI are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: Shi, Next: s_i, Prev: Si, Up: Integral Functions section - - SHI operator - - The SHI operator returns the hyperbolic Sine Integral function. - -syntax: - - SHI () - -examples: - - ____________________________________________________________ - - df(shi(x),x); - - sinh(x) / x - - - on rounded; - - Shi(0.35); - - 0.352390716351 - - ____________________________________________________________ - The numeric values for the operator SHI are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: s_i, Next: Ci, Prev: Shi, Up: Integral Functions section - - S_I operator - - The S_I operator returns the Sine Integral function si. - -syntax: - - S_I () - -examples: - - ____________________________________________________________ - - s_i(xx); - - (2*Si(xx) - pi) / 2 - - - df(s_i(x),x); - - sin(x) / x - - ____________________________________________________________ - The operator name S_I is simplified towards [*note Si::.] . Since -REDUCE is not case sensitive by default the name "si" can't be used. - - -File: redhelp, Node: Ci, Next: Chi, Prev: s_i, Up: Integral Functions section - - CI operator - - The CI operator returns the Cosine Integral function. - -syntax: - - CI () - -examples: - - ____________________________________________________________ - - defint(cos(t)/t,t,x,infinity); - - - ci (x) - - - on rounded; - - Ci(0.35); - - - 0.50307556932 - - ____________________________________________________________ - The numeric values for the operator CI are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: Chi, Next: ERF extended, Prev: Ci, Up: Integral Functions section - - CHI operator - - The CHI operator returns the Hyperbolic Cosine Integral function. - -syntax: - - CHI () - -examples: - - ____________________________________________________________ - - defint((cosh(t)-1)/t,t,0,x); - - - log(x) + psi(1) + chi(x) - - - on rounded; - - Chi(0.35); - - - 0.44182471827 - - ____________________________________________________________ - The numeric values for the operator CHI are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: ERF extended, Next: erfc, Prev: Chi, Up: Integral Functions section - - ERF EXTENDED operator - - The special function package supplies an extended support for the -[*note ERF::.] operator which implements the ERROR FUNCTION - - defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) - - . - -syntax: - - ERF () - -examples: - - ____________________________________________________________ - - erf(-x); - - - erf(x) - - - on rounded; - - erf(0.35); - - 0.379382053562 - - ____________________________________________________________ - The numeric values for the operator ERF are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: erfc, Next: Ei, Prev: ERF extended, Up: Integral Functions section - - ERFC operator - - The ERFC operator returns the complementary Error function - - 1 - defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) - - . - -syntax: - - ERFC () - -examples: - - ____________________________________________________________ - - erfc(xx); - - - erf(xx) + 1 - - ____________________________________________________________ - The operator ERFC is simplified towards the [*note ERF::.] operator. - - -File: redhelp, Node: Ei, Next: Fresnel_C, Prev: erfc, Up: Integral Functions section - - EI operator - - The EI operator returns the Exponential Integral function. - -syntax: - - EI () - -examples: - - ____________________________________________________________ - - df(ei(x),x); - - x - e - --- - x - - - on rounded; - - Ei(0.35); - - - 0.0894340019184 - - ____________________________________________________________ - The numeric values for the operator EI are computed via the power -series representation, which limits the argument range. - - -File: redhelp, Node: Fresnel_C, Next: Fresnel_S, Prev: Ei, Up: Integral Functions section - - FRESNEL_C operator - - The FRESNEL_C operator represents Fresnel's Cosine function. - -syntax: - - FRESNEL_C () - -examples: - - ____________________________________________________________ - - int(cos(t^2*pi/2),t,0,x); - - fresnel_c(x) - - - on rounded; - - fresnel_c(2.1); - - 0.581564135061 - - ____________________________________________________________ - The operator FRESNEL_C has a limited numeric evaluation of large -values of its argument. - - -File: redhelp, Node: Fresnel_S, Prev: Fresnel_C, Up: Integral Functions section - - FRESNEL_S operator - - The FRESNEL_S operator represents Fresnel's Sine Integral function. - -syntax: - - FRESNEL_S () - -examples: - - ____________________________________________________________ - - int(sin(t^2*pi/2),t,0,x); - - fresnel_s(x) - - - on rounded; - - fresnel_s(2.1); - - 0.374273359378 - - ____________________________________________________________ - The operator FRESNEL_S has a limited numeric evaluation of large -values of its argument. - - -File: redhelp, Node: Integral Functions section, Next: Combinatorial Operators section, Prev: Orthogonal Polynomials section, Up: Special Functions section - - Integral Functions section - -* Menu: - -* Si:: operator -* Shi:: operator -* s_i:: operator -* Ci:: operator -* Chi:: operator -* ERF extended:: operator -* erfc:: operator -* Ei:: operator -* Fresnel_C:: operator -* Fresnel_S:: operator - - -File: redhelp, Node: BINOMIAL, Next: STIRLING1, Up: Combinatorial Operators section - - BINOMIAL operator - - The BINOMIAL operator returns the Binomial coefficient if both -parameter are integer and expressions involving the Gamma function -otherwise. - -syntax: - - BINOMIAL (,) - -examples: - - ____________________________________________________________ - - Binomial(49,6); - - 13983816 - - - - Binomial(n,3); - - gamma(n + 1) - --------------- - 6*gamma(n - 2) - - ____________________________________________________________ - The operator BINOMIAL evaluates the Binomial coefficients from the -explicit form and therefore it is not the best algorithm if you want to -compute many binomial coefficients with big indices in which case a -recursive algorithm is preferable. - - -File: redhelp, Node: STIRLING1, Next: STIRLING2, Prev: BINOMIAL, Up: Combinatorial Operators section - - STIRLING1 operator - - The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -first kind, i.e. the number of permutations of n symbols which have -exactly m cycles (divided by (-1)**(n-m)). - -syntax: - - STIRLING1 (,) - -examples: - - ____________________________________________________________ - - Stirling1 (17,4); - - -87077748875904 - - - Stirling1 (n,n-1); - - -gamma(n+1) - ------------- - 2*gamma(n-1) - - ____________________________________________________________ - The operator STIRLING1 evaluates the Stirling numbers of the first -kind by rulesets for special cases or by a computing the closed form, -which is a series involving the operators [*note BINOMIAL::.] and -[*note STIRLING2::.] . - - -File: redhelp, Node: STIRLING2, Prev: STIRLING1, Up: Combinatorial Operators section - - STIRLING2 operator - - The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. - -syntax: - - STIRLING2 (,) - -examples: - - ____________________________________________________________ - - Stirling2 (17,4); - - 694337290 - - - Stirling2 (n,n-1); - - gamma(n+1) - ------------- - 2*gamma(n-1) - - ____________________________________________________________ - The operator STIRLING2 evaluates the Stirling numbers of the second -kind by rulesets for special cases or by a computing the closed form. - - -File: redhelp, Node: Combinatorial Operators section, Next: 3j and 6j symbols section, Prev: Integral Functions section, Up: Special Functions section - - Combinatorial Operators section - -* Menu: - -* BINOMIAL:: operator -* STIRLING1:: operator -* STIRLING2:: operator - - -File: redhelp, Node: ThreejSymbol, Next: Clebsch_Gordan, Up: 3j and 6j symbols section - - THREEJSYMBOL operator - - The THREEJSYMBOL operator implements the 3j symbol. - -syntax: - - THREEJSYMBOL (,, ) - -examples: - - ____________________________________________________________ - - - ThreejSymbol({j+1,m},{j+1,-m},{1,0}); - - - j - ( - 1) *(abs(j - m + 1) - abs(j + m + 1)) - ------------------------------------------- - 3 2 m - 2*sqrt(2*j + 9*j + 13*j + 6)*( - 1) - - ____________________________________________________________ - - -File: redhelp, Node: Clebsch_Gordan, Next: SixjSymbol, Prev: ThreejSymbol, Up: 3j and 6j symbols section - - CLEBSCH_GORDAN operator - - The CLEBSCH_GORDAN operator implements the Clebsch_Gordan -coefficients. This is closely related to the [*note ThreejSymbol::.] . - -syntax: - - CLEBSCH_GORDAN (,, ) - -examples: - - ____________________________________________________________ - - Clebsch_Gordan({2,0},{2,0},{2,0}); - - - -2 - --------- - sqrt(14) - - ____________________________________________________________ - - -File: redhelp, Node: SixjSymbol, Prev: Clebsch_Gordan, Up: 3j and 6j symbols section - - SIXJSYMBOL operator - - The SIXJSYMBOL operator implements the 6j symbol. - -syntax: - - SIXJSYMBOL (,) - -examples: - - ____________________________________________________________ - - - SixjSymbol({7,6,3},{2,4,6}); - - 1 - ------------- - 14*sqrt(858) - - ____________________________________________________________ - The operator SIXJSYMBOL uses the [*note INEQ::.] package in order to -find minima and maxima for the summation index. - - -File: redhelp, Node: 3j and 6j symbols section, Next: Miscellaneous section, Prev: Combinatorial Operators section, Up: Special Functions section - - 3j and 6j symbols section - -* Menu: - -* ThreejSymbol:: operator -* Clebsch_Gordan:: operator -* SixjSymbol:: operator - - -File: redhelp, Node: HYPERGEOMETRIC, Next: MeijerG, Up: Miscellaneous section - - HYPERGEOMETRIC operator - - The HYPERGEOMETRIC operator provides simplifications for the -generalized hypergeometric functions. The HYPERGEOMETRIC operator is -included in the package specfn2. - -syntax: - - HYPERGEOMETRIC (,, -) - -examples: - - ____________________________________________________________ - - load specfn2; - - hypergeometric ({1/2,1},{3/2},-x^2); - - - atan(x) - -------- - x - - - hypergeometric ({},{},z); - - z - e - - ____________________________________________________________ - The special case where the length of the first list is equal to 2 and -the length of the second list is equal to 1 is often called "the -hypergeometric function" (notated as 2F1(a1,a2,b;x)). - - -File: redhelp, Node: MeijerG, Next: Heaviside, Prev: HYPERGEOMETRIC, Up: Miscellaneous section - - MEIJERG operator - - The MEIJERG operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or special functions or (generalized) [*note -HYPERGEOMETRIC::.] functions. - - The MEIJERG operator is included in the package specfn2. - -syntax: - - MEIJERG (,, ) - - The first element of the lists has to be the list containing the -first group (mostly called "m" and "n") of parameters. This passes the -four parameters of a Meijer's G function implicitly via the length of -the lists. - -examples: - - ____________________________________________________________ - - load specfn2; - - MeijerG({{},1},{{0}},x); - - heaviside(-x+1) - - - MeijerG({{}},{{1+1/4},1-1/4},(x^2)/4) * sqrt pi; - - - - 2 - sqrt(2)*sin(x)*x - ------------------ - 4*sqrt(x) - - ____________________________________________________________ - Many well-known functions can be written as G functions, e.g. -exponentials, logarithms, trigonometric functions, Bessel functions and -hypergeometric functions. The formulae can be found e.g. in - - A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: Integrals and Series, -Volume 3: More special functions, Gordon and Breach Science Publishers -(1990). - - -File: redhelp, Node: Heaviside, Next: erfi, Prev: MeijerG, Up: Miscellaneous section - - HEAVISIDE operator - - The HEAVISIDE operator returns the Heaviside function. - - Heaviside(~w) => if (w < 0) then 0 else 1 - - when numberp w; - -syntax: - - HEAVISIDE () - - This operator is often included in the result of the simplification -of a generalized [*note HYPERGEOMETRIC::.] function or a [*note -MeijerG::.] function. - - No simplification is done for this function. - - -File: redhelp, Node: erfi, Prev: Heaviside, Up: Miscellaneous section - - ERFI operator - - The ERFI operator returns the error function of an imaginary -argument. - - erfi(~x) => 2/sqrt(pi) * defint(e**(t**2),t,0,x); - -syntax: - - ERFI () - - This operator is sometimes included in the result of the -simplification of a generalized [*note HYPERGEOMETRIC::.] function or a -[*note MeijerG::.] function. - - No simplification is done for this function. - - -File: redhelp, Node: Miscellaneous section, Prev: 3j and 6j symbols section, Up: Special Functions section - - Miscellaneous section - -* Menu: - -* HYPERGEOMETRIC:: operator -* MeijerG:: operator -* Heaviside:: operator -* erfi:: operator - - -File: redhelp, Node: Special Functions section, Next: Taylor series section, Prev: Roots Package section, Up: Top - - Special Functions section - -* Menu: - -* Special Function Package::introduction -* Constants:: concept -* Bernoulli Euler Zeta section:: -* Bessel Functions section:: -* Airy Functions section:: -* Jacobi Elliptic Functions and Elliptic Integrals section:: -* Gamma and Related Functions section:: -* Miscellaneous Functions section:: -* Orthogonal Polynomials section:: -* Integral Functions section:: -* Combinatorial Operators section:: -* 3j and 6j symbols section:: -* Miscellaneous section:: - - -File: redhelp, Node: TAYLOR introduction, Next: taylor, Up: Taylor series section - - TAYLOR introduction - - This short note describes a package of REDUCE procedures that allow -Taylor expansion in one or more variables and efficient manipulation of -the resulting Taylor series. Capabilities include basic operations -(addition, subtraction, multiplication and division) and also -application of certain algebraic and transcendental functions. To a -certain extent, Laurent expansion can be performed as well. - - -File: redhelp, Node: taylor, Next: taylorautocombine, Prev: TAYLOR introduction, Up: Taylor series section - - TAYLOR operator - - The TAYLOR operator is used for expanding an expression into a -Taylor series. - -syntax: - - TAYLOR ( , , , - - , , , *) - - can be any valid REDUCE algebraic expression. -must be a [*note KERNEL::.] , and is the expansion variable. The - following it denotes the point about which the expansion -is to take place. must be a non-negative integer and denotes -the maximum expansion order. If more than one triple is specified -TAYLOR will expand its first argument independently with respect to -all the variables. Note that once the expansion has been done it is -not possible to calculate higher orders. - - Instead of a [*note KERNEL::.] , may also be a list of -kernels. In this case expansion will take place in a way so that the -sum/ of the degrees of the kernels does not exceed the maximum -expansion order. If the expansion point evaluates to the special -identifier INFINITY , TAYLOR tries to expand in a series in 1/. - - The expansion is performed variable per variable, i.e. in the -example above by first expanding exp(x^2+y^2) with respect to X and -then expanding every coefficient with respect to Y . - -examples: - - ____________________________________________________________ - - taylor(e^(x^2+y^2),x,0,2,y,0,2); - - - 2 2 2 2 2 2 - 1 + Y + X + Y *X + O(X ,Y ) - - - taylor(e^(x^2+y^2),{x,y},0,2); - - - 2 2 2 2 - 1 + Y + X + O({X ,Y }) - - ____________________________________________________________ - The following example shows the case of a non-analytical function. - ____________________________________________________________ - - - taylor(x*y/(x+y),x,0,2,y,0,2); - - - ***** Not a unit in argument to QUOTTAYLOR - - ____________________________________________________________ - - Note that it is not generally possible to apply the standard reduce -operators to a Taylor kernel. For example, [*note PART::.] , [*note -COEFF::.] , or [*note COEFFN::.] cannot be used. Instead, the -expression at hand has to be converted to standard form first using -the [*note taylortostandard::.] operator. - - Differentiation of a Taylor expression is possible. If you -differentiate with respect to one of the Taylor variables the order -will decrease by one. - - Substitution is a bit restricted: Taylor variables can only be -replaced by other kernels. There is one exception to this rule: you -can always substitute a Taylor variable by an expression that -evaluates to a constant. Note that REDUCE will not always be able to -determine that an expression is constant: an example is sin(acos(4)). - - Only simple taylor kernels can be integrated. More complicated -expressions that contain Taylor kernels as parts of themselves are -automatically converted into a standard representation by means of the -[*note taylortostandard::.] operator. In this case a suitable warning -is printed. - - -File: redhelp, Node: taylorautocombine, Next: taylorautoexpand, Prev: taylor, Up: Taylor series section - - TAYLORAUTOCOMBINE switch - - If you set TAYLORAUTOCOMBINE to ON , REDUCE automatically combines -Taylor expressions during the simplification process. This is -equivalent to applying [*note taylorcombine::.] to every expression -that contains Taylor kernels. Default is ON . - - -File: redhelp, Node: taylorautoexpand, Next: taylorcombine, Prev: taylorautocombine, Up: Taylor series section - - TAYLORAUTOEXPAND switch - - TAYLORAUTOEXPAND makes Taylor expressions "contagious" in the sense -that [*note taylorcombine::.] tries to Taylor expand all non-Taylor -subexpressions and to combine the result with the rest. Default is -OFF . - - -File: redhelp, Node: taylorcombine, Next: taylorkeeporiginal, Prev: taylorautoexpand, Up: Taylor series section - - TAYLORCOMBINE operator - - This operator tries to combine all Taylor kernels found in its -argument into one. Operations currently possible are: - - Addition, subtraction, multiplication, and division. - - Roots, exponentials, and logarithms. - - Trigonometric and hyperbolic functions and their inverses. - -examples: - - ____________________________________________________________ - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - taylorcombine log hugo; - - 3 - X + O(X ) - - - taylorcombine(hugo + x); - - 1 2 3 - (1 + X + -*X + O(X )) + X - 2 - - - on taylorautoexpand; - - taylorcombine(hugo + x); - - 1 2 3 - 1 + 2*X + -*X + O(X ) - 2 - - ____________________________________________________________ - Application of unary operators like LOG and ATAN will nearly always -succeed. For binary operations their arguments have to be Taylor -kernels with the same template. This means that the expansion variable -and the expansion point must match. Expansion order is not so -important, different order usually means that one of them is truncated -before doing the operation. - - If [*note taylorkeeporiginal::.] is set to ON and if all Taylor -kernels in its argument have their original expressions kept -TAYLORCOMBINE will also combine these and store the result as the -original expression of the resulting Taylor kernel. There is also the -switch [*note taylorautoexpand::.] . - - There are a few restrictions to avoid mathematically undefined -expressions: it is not possible to take the logarithm of a Taylor -kernel which has no terms (i.e. is zero), or to divide by such a -beast. There are some provisions made to detect singularities during -expansion: poles that arise because the denominator has zeros at the -expansion point are detected and properly treated, i.e. the Taylor -kernel will start with a negative power. (This is accomplished by -expanding numerator and denominator separately and combining the -results.) Essential singularities of the known functions (see above) -are handled correctly. - - -File: redhelp, Node: taylorkeeporiginal, Next: taylororiginal, Prev: taylorcombine, Up: Taylor series section - - TAYLORKEEPORIGINAL switch - - TAYLORKEEPORIGINAL , if set to ON , forces the [*note taylor::.] -and all Taylor kernel manipulation operators to keep the original -expression, i.e. the expression that was Taylor expanded. All -operations performed on the Taylor kernels are also applied to this -expression which can be recovered using the operator [*note -taylororiginal::.] . Default is OFF . - - -File: redhelp, Node: taylororiginal, Next: taylorprintorder, Prev: taylorkeeporiginal, Up: Taylor series section - - TAYLORORIGINAL operator - - Recovers the original expression (the one that was expanded) from -the Taylor kernel that is given as its argument. - -syntax: - - TAYLORORIGINAL () or TAYLORORIGINAL - -examples: - - ____________________________________________________________ - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - taylororiginal hugo; - - ***** Taylor kernel doesn't have an original part in TAYLORORIGINAL - - - on taylorkeeporiginal; - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - taylororiginal hugo; - - X - E - - ____________________________________________________________ - An error is signalled if the argument is not a Taylor kernel or if -the original expression was not kept, i.e. if [*note -taylorkeeporiginal::.] was set OFF during expansion. - - -File: redhelp, Node: taylorprintorder, Next: taylorprintterms, Prev: taylororiginal, Up: Taylor series section - - TAYLORPRINTORDER switch - - TAYLORPRINTORDER , if set to ON , causes the remainder to be -printed in big-O notation. Otherwise, three dots are printed. Default -is ON . - - -File: redhelp, Node: taylorprintterms, Next: taylorrevert, Prev: taylorprintorder, Up: Taylor series section - - TAYLORPRINTTERMS variable - - Only a certain number of (non-zero) coefficients are printed. If -there are more, an expression of the form N TERMS is printed to -indicate how many non-zero terms have been suppressed. The number of -terms printed is given by the value of the shared algebraic variable -TAYLORPRINTTERMS . Allowed values are integers and the special -identifier ALL . The latter setting specifies that all terms are to be -printed. The default setting is 5. - -examples: - - ____________________________________________________________ - - taylor(e^(x^2+y^2),x,0,4,y,0,4); - - - 2 1 4 2 2 2 5 5 - 1 + Y + -*Y + X + Y *X + (4 terms) + O(X ,Y ) - 2 - - - taylorprintterms := all; - - TAYLORPRINTTERMS := ALL - - - taylor(e^(x^2+y^2),x,0,4,y,0,4); - - - 2 1 4 2 2 2 1 4 2 1 4 1 2 4 - 1 + Y + -*Y + X + Y *X + -*Y *X + -*X + -*Y *X - 2 2 2 2 - 1 4 4 5 5 - + -*Y *X + O(X ,Y ) - 4 - - - ____________________________________________________________ - - -File: redhelp, Node: taylorrevert, Next: taylorseriesp, Prev: taylorprintterms, Up: Taylor series section - - TAYLORREVERT operator - - TAYLORREVERT allows reversion of a Taylor series of a function f, -i.e., to compute the first terms of the expansion of the inverse of f -from the expansion of f. - -syntax: - - TAYLORREVERT (, , ) - - The first argument must evaluate to a Taylor kernel with the second -argument being one of its expansion variables. - -examples: - - ____________________________________________________________ - - taylor(u - u**2,u,0,5); - - 2 6 - U - U + O(U ) - - - taylorrevert (ws,u,x); - - 2 3 4 5 6 - X + X + 2*X + 5*X + 14*X + O(X ) - - ____________________________________________________________ - - -File: redhelp, Node: taylorseriesp, Next: taylortemplate, Prev: taylorrevert, Up: Taylor series section - - TAYLORSERIESP operator - - This operator may be used to determine if its argument is a Taylor -kernel. - -syntax: - - TAYLORSERIESP () or TAYLORSERIESP - -examples: - - ____________________________________________________________ - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - if taylorseriesp hugo then OK; - - OK - - - if taylorseriesp(hugo + y) then OK else NO; - - - NO - - ____________________________________________________________ - Note that this operator is subject to the same restrictions as, -e.g., ORDP or NUMBERP , i.e. it may only be used in boolean -expressions in IF or LET statements. - - -File: redhelp, Node: taylortemplate, Next: taylortostandard, Prev: taylorseriesp, Up: Taylor series section - - TAYLORTEMPLATE operator - - The template of a Taylor kernel, i.e. the list of all variables -with respect to which expansion took place together with expansion -point and order can be extracted using - -syntax: - - TAYLORTEMPLATE () or TAYLORTEMPLATE - - This returns a list of lists with the three elements -(VAR,VAR0,ORDER). An error is signalled if the argument is not a -Taylor kernel. - -examples: - - ____________________________________________________________ - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - taylortemplate hugo; - - {{X,0,2}} - - ____________________________________________________________ - - -File: redhelp, Node: taylortostandard, Prev: taylortemplate, Up: Taylor series section - - TAYLORTOSTANDARD operator - - This operator converts all Taylor kernels in its argument into -standard form and resimplifies the result. - -syntax: - - TAYLORTOSTANDARD () or TAYLORTOSTANDARD - - -examples: - - ____________________________________________________________ - - hugo := taylor(exp(x),x,0,2); - - 1 2 3 - HUGO := 1 + X + -*X + O(X ) - 2 - - - taylortostandard hugo; - - 2 - X + 2*X + 2 - ------------ - 2 - - ____________________________________________________________ - - -File: redhelp, Node: Taylor series section, Next: Gnuplot package section, Prev: Special Functions section, Up: Top - - Taylor series section - -* Menu: - -* TAYLOR introduction:: introduction -* taylor:: operator -* taylorautocombine:: switch -* taylorautoexpand:: switch -* taylorcombine:: operator -* taylorkeeporiginal:: switch -* taylororiginal:: operator -* taylorprintorder:: switch -* taylorprintterms:: variable -* taylorrevert:: operator -* taylorseriesp:: operator -* taylortemplate:: operator -* taylortostandard:: operator - - -File: redhelp, Node: GNUPLOT and REDUCE, Next: Axes names, Up: Gnuplot package section - - GNUPLOT AND REDUCE introduction - - The GNUPLOT system provides easy to use graphics output for curves -or surfaces which are defined by formulas and/or data sets. GNUPLOT -supports a great variety of output devices such as X-windows, VGA -screen, postscript, picTeX. The REDUCE GNUPLOT package lets one use -the GNUPLOT graphical output directly from inside REDUCE, either for -the interactive display of curves/surfaces or for the production of -pictures on paper. - - Note that this package may not be supported on all system platforms. - - For a detailed description you should read the GNUPLOT system -documentation, available together with the GNUPLOT installation -material from several servers by anonymous FTP. - - The REDUCE developers thank the GNUPLOT people for their permission -to distribute GNUPLOT together with REDUCE. - - -File: redhelp, Node: Axes names, Next: Pointset, Prev: GNUPLOT and REDUCE, Up: Gnuplot package section - - AXES NAMES - - Inside REDUCE the choice of variable names for a graph is completely -free. For referring to the GNUPLOT axes the names X and Y for 2 -dimensions, X,Y and Z for 3 dimensions are used in the usual schoolbook -sense independent from the variables of the REDUCE expression. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - - -File: redhelp, Node: Pointset, Next: PLOT, Prev: Axes names, Up: Gnuplot package section - - POINTSET type - - A curve can be give as set of precomputed points (a polygon) in 2 or -3 dimensions. Such a point set is a [*note LIST::.] of points, where -each point is a [*note LIST::.] 2 (or 3) numbers. These numbers are -interpreted as (X,Y) (or X,Y,Z ) coordinates. All points of one set -must have the same dimension. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - Also a surface in 3d can be given by precomputed points, but only on -a logically orthogonal mesh: the surface is defined by a list of curves -(in 3d) which must have a uniform length. GNUPLOT then will draw an -orthogonal mesh by first drawing the given lines, and second connecting -the 1st point of the 1st curve with the 1st point of the 2nd curve, -that one with the 1st point of the 3rd curve and so on for all curves -and for all indexes. - - -File: redhelp, Node: PLOT, Next: PLOTRESET, Prev: Pointset, Up: Gnuplot package section - - PLOT command - - The command PLOT is the main entry for drawing a picture from inside -REDUCE. - -syntax: - - PLOT (,,...) - - where is a , a or an ,,,) - - , :- matrices. - - , :- positive integers. - - COPY_INTO copies matrix into with (1,1) at -(,). - -examples: - - ____________________________________________________________ - - - G := mat((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)); - - - [0 0 0 0 0] - [ ] - [0 0 0 0 0] - [ ] - g := [0 0 0 0 0] - [ ] - [0 0 0 0 0] - [ ] - [0 0 0 0 0] - - - - copy_into(A,G,1,2); - - [0 1 2 3 0] - [ ] - [0 4 5 6 0] - [ ] - [0 7 8 9 0] - [ ] - [0 0 0 0 0] - [ ] - [0 0 0 0 0] - - ____________________________________________________________ - Related functions: [*note augment_columns::.] , [*note extend::.] , -[*note matrix_augment::.] , [*note matrix_stack::.] , [*note -stack_rows::.] , [*note sub_matrix::.] . - - -File: redhelp, Node: diagonal, Next: extend, Prev: copy_into, Up: Linear Algebra package section - - DIAGONAL operator - -syntax: - - DIAGONAL () - - (If you are feeling lazy then the braces can be omitted.) - - :- each can be either a scalar expression or a square -[*note MATRIX::.] . - - DIAGONAL creates a matrix that contains the input on the diagonal. - -examples: - - ____________________________________________________________ - - - H := mat((66,77),(88,99)); - - [66 77] - h := [ ] - [88 99] - - - - diagonal({A,x,H}); - - [1 2 3 0 0 0 ] - [ ] - [4 5 6 0 0 0 ] - [ ] - [7 8 9 0 0 0 ] - [ ] - [0 0 0 x 0 0 ] - [ ] - [0 0 0 0 66 77] - [ ] - [0 0 0 0 88 99] - - ____________________________________________________________ - Related functions: [*note jordan_block::.] . - - -File: redhelp, Node: extend, Next: find_companion, Prev: diagonal, Up: Linear Algebra package section - - EXTEND operator - -syntax: - - EXTEND (,,,) - - :- a [*note MATRIX::.] . - - , :- positive integers. - - :- algebraic expression or symbol. - - EXTEND returns a copy of that has been extended by rows -and columns. The new entries are made equal to . - -examples: - - ____________________________________________________________ - - - extend(A,1,2,x); - - [1 2 3 x x] - [ ] - [4 5 6 x x] - [ ] - [7 8 9 x x] - [ ] - [x x x x x] - - ____________________________________________________________ - Related functions: [*note copy_into::.] , [*note matrix_augment::.] -, [*note matrix_stack::.] , [*note remove_columns::.] , [*note -remove_rows::.] . - - -File: redhelp, Node: find_companion, Next: get_columns, Prev: extend, Up: Linear Algebra package section - - FIND_COMPANION operator - -syntax: - - FIND_COMPANION (,) - - :- a [*note MATRIX::.] . - - :- the variable. - - Given a companion matrix, FIND_COMPANION finds the polynomial from -which it was made. - -examples: - - ____________________________________________________________ - - - C := companion(x^4+17*x^3-9*x^2+11,x); - - - [0 0 0 -11] - [ ] - [1 0 0 0 ] - c := [ ] - [0 1 0 9 ] - [ ] - [0 0 1 -17] - - - - find_companion(C,x); - - 4 3 2 - x +17*x -9*x +11 - - ____________________________________________________________ - Related functions: [*note companion::.] . - - -File: redhelp, Node: get_columns, Next: get_rows, Prev: find_companion, Up: Linear Algebra package section - - GET_COLUMNS operator - - Get columns, get rows: - -syntax: - - GET_COLUMNS (,) - - :- a [*note MATRIX::.] . - - :- either a positive integer or a list of positive integers. - - GET_COLUMNS removes the columns of specified in - and returns them as a list of column matrices. - - GET_ROWS performs the same task on the rows of . - -examples: - - ____________________________________________________________ - - - get_columns(A,{1,3}); - - { - [1] - [ ] - [4] - [ ] - [7] - , - [3] - [ ] - [6] - [ ] - [9] - } - - - - get_rows(A,2); - - { - [4 5 6] - } - - ____________________________________________________________ - Related functions: [*note augment_columns::.] , [*note -stack_rows::.] , [*note sub_matrix::.] . - - -File: redhelp, Node: get_rows, Next: gram_schmidt, Prev: get_columns, Up: Linear Algebra package section - - GET_ROWS operator - - see: [*note get_columns::.] . - - -File: redhelp, Node: gram_schmidt, Next: hermitian_tp, Prev: get_rows, Up: Linear Algebra package section - - GRAM_SCHMIDT operator - -syntax: - - GRAM_SCHMIDT () - - (If you are feeling lazy then the braces can be omitted.) - - :- linearly independent vectors. Each vector must be -written as a list, eg:1,0,0. - - GRAM_SCHMIDT performs the gram_schmidt orthonormalization on the -input vectors. - - It returns a list of orthogonal normalized vectors. - -examples: - - ____________________________________________________________ - - - gram_schmidt({{1,0,0},{1,1,0},{1,1,1}}); - - - {{1,0,0},{0,1,0},{0,0,1}} - - - - gram_schmidt({{1,2},{3,4}}); - - - 1 2 2*sqrt(5) -sqrt(5) - {{ ------- , ------- },{ --------- , -------- }} - sqrt(5) sqrt(5) 5 5 - - ____________________________________________________________ - - -File: redhelp, Node: hermitian_tp, Next: hessian, Prev: gram_schmidt, Up: Linear Algebra package section - - HERMITIAN_TP operator - -syntax: - - HERMITIAN_TP () - - :- a [*note MATRIX::.] . - - HERMITIAN_TP computes the hermitian transpose of . - - This is a [*note MATRIX::.] in which the (i,j)'th entry is the -conjugate of the (j,i)'th entry of . - -examples: - - ____________________________________________________________ - - - J := mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); - - - [i + 1 i + 2 i + 3] - [ ] - j := [ 4 5 2 ] - [ ] - [ 1 i 0 ] - - - - hermitian_tp(j); - - [ - i + 1 4 1 ] - [ ] - [ - i + 2 5 - i] - [ ] - [ - i + 3 2 0 ] - - ____________________________________________________________ - Related functions: [*note TP::.] . - - -File: redhelp, Node: hessian, Next: hilbert, Prev: hermitian_tp, Up: Linear Algebra package section - - HESSIAN operator - -syntax: - - HESSIAN (,) - - :- a scalar expression. - - :- either a single variable or a list of variables. - - HESSIAN computes the hessian matrix of w.r.t. the variables -in . - - This is an n by n matrix where n is the number of variables and the -(i,j)'th entry is [*note DF::.] (,(i), -(j)). - -examples: - - ____________________________________________________________ - - - hessian(x*y*z+x^2,{w,x,y,z}); - - [0 0 0 0] - [ ] - [0 2 z y] - [ ] - [0 z 0 x] - [ ] - [0 y x 0] - - ____________________________________________________________ - Related functions: [*note DF::.] . - - -File: redhelp, Node: hilbert, Next: jacobian, Prev: hessian, Up: Linear Algebra package section - - HILBERT operator - -syntax: - - HILBERT (,) - - :- a positive integer. - - :- an algebraic expression. - - HILBERT computes the square hilbert matrix of dimension -. - - This is the symmetric matrix in which the (i,j)'th entry is -1/(i+j-). - -examples: - - ____________________________________________________________ - - - hilbert(3,y+x); - - [ - 1 - 1 - 1 ] - [----------- ----------- -----------] - [ x + y - 2 x + y - 3 x + y - 4 ] - [ ] - [ - 1 - 1 - 1 ] - [----------- ----------- -----------] - [ x + y - 3 x + y - 4 x + y - 5 ] - [ ] - [ - 1 - 1 - 1 ] - [----------- ----------- -----------] - [ x + y - 4 x + y - 5 x + y - 6 ] - - ____________________________________________________________ - - -File: redhelp, Node: jacobian, Next: jordan_block, Prev: hilbert, Up: Linear Algebra package section - - JACOBIAN operator - -syntax: - - JACOBIAN (,) - - :- either a single algebraic expression or a list of -algebraic expressions. - - :- either a single variable or a list of variables. - - JACOBIAN computes the jacobian matrix of w.r.t. -. - - This is a matrix whose (i,j)'th entry is [*note DF::.] ( -(i),(j)). - - The matrix is n by m where n is the number of variables and m the -number of expressions. - -examples: - - ____________________________________________________________ - - - jacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z}); - - - [ 3 ] - [0 4*x 0 0 ] - [ ] - [ 2 ] - [0 y 2*x*y 0 ] - [ ] - [ 3 3 2] - [0 y*z x*z 3*x*y*z ] - - ____________________________________________________________ - Related functions: [*note hessian::.] , [*note DF::.] . - - -File: redhelp, Node: jordan_block, Next: lu_decom, Prev: jacobian, Up: Linear Algebra package section - - JORDAN_BLOCK operator - -syntax: - - JORDAN_BLOCK (,) - - :- an algebraic expression or symbol. - - :- a positive integer. - - JORDAN_BLOCK computes the square jordan block matrix J of dimension -. - - The entries of J are: - - J(i,i) = for i=1 ... n, J(i,i+1) = 1 for i=1 ... n-1, and -all other entries are 0. - -examples: - - ____________________________________________________________ - - - jordan_block(x,5); - - [x 1 0 0 0] - [ ] - [0 x 1 0 0] - [ ] - [0 0 x 1 0] - [ ] - [0 0 0 x 1] - [ ] - [0 0 0 0 x] - - ____________________________________________________________ - Related functions: [*note diagonal::.] , [*note companion::.] . - - -File: redhelp, Node: lu_decom, Next: make_identity, Prev: jordan_block, Up: Linear Algebra package section - - LU_DECOM operator - -syntax: - - LU_DECOM () - - :- a [*note MATRIX::.] containing either numeric entries -or imaginary entries with numeric coefficients. - - LU_DECOM performs LU decomposition on , ie: it returns L,U -where L is a lower diagonal [*note MATRIX::.] , U an upper diagonal -[*note MATRIX::.] and A = LU. - - Caution: - - The algorithm used can swap the rows of during the -calculation. This means that LU does not equal but a row -equivalent of it. Due to this, LU_DECOM returns L,U,vec. The call -CONVERT(META[MATRIX ,vec) will return the matrix that has been -decomposed, i.e: LU = convert(,vec). - -examples: - - ____________________________________________________________ - - - K := mat((1,3,5),(-4,3,7),(8,6,4)); - - - [1 3 5] - [ ] - k := [-4 3 7] - [ ] - [8 6 4] - - - - on rounded; - - lu := lu_decom(K); - - lu := { - [8 0 0 ] - [ ] - [-4 6.0 0 ] - [ ] - [1 2.25 1.125] - , - [1 0.75 0.5] - [ ] - [0 1 1.5] - [ ] - [0 0 1 ] - , - [3 2 3]} - - - - first lu * second lu; - - [8 6.0 4.0] - [ ] - [-4 3.0 7.0] - [ ] - [1 3.0 5.0] - - - - convert(K,third lu); - - P := mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); - [i + 1 i + 2 i + 3] - [ ] - p := [ 4 5 2 ] - [ ] - [ 1 i 0 ] - - - lu := lu_decom(P); - - lu := { - [ 1 0 0 ] - [ ] - [ 4 - 4*i + 5 0 ] - [ ] - [i + 1 3 0.414634146341*i + 2.26829268293] - , - [1 i 0 ] - [ ] - [0 1 0.19512195122*i + 0.243902439024] - [ ] - [0 0 1 ] - , - [3 2 3]} - - - - first lu * second lu; - - [ 1 i 0 ] - [ ] - [ 4 5 2.0 ] - [ ] - [i + 1 i + 2 i + 3.0] - - - - convert(P,third lu); - - [ 1 i 0 ] - [ ] - [ 4 5 2 ] - [ ] - [i + 1 i + 2 i + 3] - - ____________________________________________________________ - - Related functions: [*note cholesky::.] . - - -File: redhelp, Node: make_identity, Next: matrix_augment, Prev: lu_decom, Up: Linear Algebra package section - - MAKE_IDENTITY operator - -syntax: - - MAKE_IDENTITY () - - :- a positive integer. - - MAKE_IDENTITY creates the identity matrix of dimension . - -examples: - - ____________________________________________________________ - - - make_identity(4); - - [1 0 0 0] - [ ] - [0 1 0 0] - [ ] - [0 0 1 0] - [ ] - [0 0 0 1] - - ____________________________________________________________ - Related functions: [*note diagonal::.] . - - -File: redhelp, Node: matrix_augment, Next: matrixp, Prev: make_identity, Up: Linear Algebra package section - - MATRIX_AUGMENT operator - - Matrix augment, matrix stack: - -syntax: - - MATRIX_AUGMENT - - (If you are feeling lazy then the braces can be omitted.) - - :- matrices. - - MATRIX_AUGMENT sticks the matrices in together -horizontally. - - MATRIX_STACK sticks the matrices in together -vertically. - -examples: - - ____________________________________________________________ - - - matrix_augment({A,A}); - - [1 2 3 1 2 3] - [ ] - [4 5 6 4 5 6] - [ ] - [7 8 9 7 8 9] - - - - matrix_stack(A,A); - - [1 2 3] - [ ] - [4 5 6] - [ ] - [7 8 9] - [ ] - [1 2 3] - [ ] - [4 5 6] - [ ] - [7 8 9] - - ____________________________________________________________ - Related functions: [*note augment_columns::.] , [*note -stack_rows::.] , [*note sub_matrix::.] . - - -File: redhelp, Node: matrixp, Next: matrix_stack, Prev: matrix_augment, Up: Linear Algebra package section - - MATRIXP operator - -syntax: - - MATRIXP () - - :- anything you like. - - MATRIXP is a boolean function that returns t if the input is a -matrix and nil otherwise. - -examples: - - ____________________________________________________________ - - - matrixp A; - - t - - - matrixp(doodlesackbanana); - - nil - - ____________________________________________________________ - Related functions: [*note squarep::.] , [*note symmetricp::.] . - - -File: redhelp, Node: matrix_stack, Next: minor, Prev: matrixp, Up: Linear Algebra package section - - MATRIX_STACK operator - - see: [*note matrix_augment::.] . - - -File: redhelp, Node: minor, Next: mult_columns, Prev: matrix_stack, Up: Linear Algebra package section - - MINOR operator - -syntax: - - MINOR (,,) - - :- a [*note MATRIX::.] . , :- positive integers. - - MINOR computes the (,)'th minor of . This is created -by removing the 'th row and the 'th column from . - -examples: - - ____________________________________________________________ - - - minor(A,1,3); - - [4 5] - [ ] - [7 8] - - ____________________________________________________________ - Related functions: [*note remove_columns::.] , [*note -remove_rows::.] . - - -File: redhelp, Node: mult_columns, Next: mult_rows, Prev: minor, Up: Linear Algebra package section - - MULT_COLUMNS operator - - Mult columns, mult rows: - -syntax: - - MULT_COLUMNS (,,) - - :- a [*note MATRIX::.] . - - :- a positive integer or a list of positive integers. - - :- an algebraic expression. - - MULT_COLUMNS returns a copy of in which the columns -specified in have been multiplied by . - - MULT_ROWS performs the same task on the rows of . - -examples: - - ____________________________________________________________ - - - mult_columns(A,{1,3},x); - - [ x 2 3*x] - [ ] - [4*x 5 6*x] - [ ] - [7*x 8 9*x] - - - - mult_rows(A,2,10); - - [1 2 3 ] - [ ] - [40 50 60] - [ ] - [7 8 9 ] - - ____________________________________________________________ - Related functions: [*note add_to_columns::.] , [*note -add_to_rows::.] . - - -File: redhelp, Node: mult_rows, Next: pivot, Prev: mult_columns, Up: Linear Algebra package section - - MULT_ROWS operator - - see: [*note mult_columns::.] . - - -File: redhelp, Node: pivot, Next: pseudo_inverse, Prev: mult_rows, Up: Linear Algebra package section - - PIVOT operator - -syntax: - - PIVOT (,,) - - :- a matrix. - - , :- positive integers such that (, ) neq 0. - - PIVOT pivots about it's (,)'th entry. - - To do this, multiples of the 'th row are added to every other row -in the matrix. - - This means that the 'th column will be 0 except for the -(,)'th entry. - -examples: - - ____________________________________________________________ - - - pivot(A,2,3); - - [ - 1 ] - [-1 ------ 0] - [ 2 ] - [ ] - [4 5 6] - [ ] - [ 1 ] - [1 --- 0] - [ 2 ] - - ____________________________________________________________ - Related functions: [*note rows_pivot::.] . - - -File: redhelp, Node: pseudo_inverse, Next: random_matrix, Prev: pivot, Up: Linear Algebra package section - - PSEUDO_INVERSE operator - -syntax: - - PSEUDO_INVERSE () - - :- a [*note MATRIX::.] . - - PSEUDO_INVERSE , also known as the Moore-Penrose inverse, computes -the pseudo inverse of . - - Given the singular value decomposition of , i.e: A = -U*P*V^T, then the pseudo inverse A^-1 is defined by A^-1 = V^T*P^-1*U. - - Thus * pseudo_inverse(A) = Id. (Id is the identity matrix). - -examples: - - ____________________________________________________________ - - - R := mat((1,2,3,4),(9,8,7,6)); - - [1 2 3 4] - r := [ ] - [9 8 7 6] - - - - on rounded; - - pseudo_inverse(R); - - [ - 0.199999999996 0.100000000013 ] - [ ] - [ - 0.0499999999988 0.0500000000037 ] - [ ] - [ 0.0999999999982 - 5.57825497203e-12] - [ ] - [ 0.249999999995 - 0.0500000000148 ] - - ____________________________________________________________ - Related functions: [*note svd::.] . - - -File: redhelp, Node: random_matrix, Next: remove_columns, Prev: pseudo_inverse, Up: Linear Algebra package section - - RANDOM_MATRIX operator - -syntax: - - RANDOM_MATRIX (,,) - - ,, :- positive integers. - - RANDOM_MATRIX creates an by matrix with random entries in -the range -limit < entry < limit. - - Switches: - - IMAGINARY :- if on then matrix entries are x+i*y where -limit < x,y -< . - - NOT_NEGATIVE :- if on then 0 < entry < . In the imaginary -case we have 0 < x,y < . - - ONLY_INTEGER :- if on then each entry is an integer. In the imaginary - case x and y are integers. - - SYMMETRIC :- if on then the matrix is symmetric. - - UPPER_MATRIX :- if on then the matrix is upper triangular. - - LOWER_MATRIX :- if on then the matrix is lower triangular. - -examples: - - ____________________________________________________________ - - - on rounded; - - random_matrix(3,3,10); - - [ - 8.11911717343 - 5.71677292768 0.620580830035 ] - [ ] - [ - 0.032596262422 7.1655452861 5.86742633837 ] - [ ] - [ - 9.37155438255 - 7.55636708637 - 8.88618627557] - - - - on only_integer, not_negative, upper_matrix, imaginary; - - random_matrix(4,4,10); - - [70*i + 15 28*i + 8 2*i + 79 27*i + 44] - [ ] - [ 0 46*i + 95 9*i + 63 95*i + 50] - [ ] - [ 0 0 31*i + 75 14*i + 65] - [ ] - [ 0 0 0 5*i + 52 ] - - ____________________________________________________________ - - -File: redhelp, Node: remove_columns, Next: remove_rows, Prev: random_matrix, Up: Linear Algebra package section - - REMOVE_COLUMNS operator - - Remove columns, remove rows: - -syntax: - - REMOVE_COLUMNS (,) - - :- a [*note MATRIX::.] . :- either a -positive integer or a list of positive integers. - - REMOVE_COLUMNS removes the columns specified in from -. - - REMOVE_ROWS performs the same task on the rows of . - -examples: - - ____________________________________________________________ - - - remove_columns(A,2); - - [1 3] - [ ] - [4 6] - [ ] - [7 9] - - - - remove_rows(A,{1,3}); - - [4 5 6] - - ____________________________________________________________ - Related functions: [*note minor::.] . - - -File: redhelp, Node: remove_rows, Next: row_dim, Prev: remove_columns, Up: Linear Algebra package section - - REMOVE_ROWS operator - - see: [*note remove_columns::.] . - - -File: redhelp, Node: row_dim, Next: rows_pivot, Prev: remove_rows, Up: Linear Algebra package section - - ROW_DIM operator - - see: [*note column_dim::.] . - - -File: redhelp, Node: rows_pivot, Next: simplex, Prev: row_dim, Up: Linear Algebra package section - - ROWS_PIVOT operator - -syntax: - - ROWS_PIVOT (,,,) - - :- a namerefmatrix. - - , :- positive integers such that (, ) neq 0. - - :- positive integer or a list of positive integers. - - ROWS_PIVOT performs the same task as PIVOT but applies the pivot -only to the rows specified in . - -examples: - - ____________________________________________________________ - - - N := mat((1,2,3),(4,5,6),(7,8,9),(1,2,3),(4,5,6)); - - - [1 2 3] - [ ] - [4 5 6] - [ ] - n := [7 8 9] - [ ] - [1 2 3] - [ ] - [4 5 6] - - - - rows_pivot(N,2,3,{4,5}); - - [1 2 3] - [ ] - [4 5 6] - [ ] - [7 8 9] - [ ] - [ - 1 ] - [-1 ------ 0] - [ 2 ] - [ ] - [0 0 0] - - ____________________________________________________________ - Related functions: [*note pivot::.] . - - -File: redhelp, Node: simplex, Next: squarep, Prev: rows_pivot, Up: Linear Algebra package section - - SIMPLEX operator - -syntax: - - SIMPLEX (,, ) - - :- either max or min (signifying maximize and - minimize). - - :- the function you are maximizing or - minimizing. - - :- the constraint inequalities. Each one must -be of the form sum of variables ( <=,=,>=) number. - - SIMPLEX applies the revised simplex algorithm to find the -optimal(either maximum or minimum) value of the -under the linear inequality constraints. - - It returns optimal value, values of variables at this optimal. - - The algorithm implies that all the variables are non-negative. - -examples: - - ____________________________________________________________ - - - simplex(max,x+y,{x>=10,y>=20,x+y<=25}); - - - ***** Error in simplex: Problem has no feasible solution - - - - simplex(max,10x+5y+5.5z,{5x+3z<=200,x+0.1y+0.5z<=12, - 0.1x+0.2y+0.3z<=9, 30x+10y+50z<=1500}); - - - {525.0,{x=40.0,y=25.0,z=0}} - - ____________________________________________________________ - - -File: redhelp, Node: squarep, Next: stack_rows, Prev: simplex, Up: Linear Algebra package section - - SQUAREP operator - -syntax: - - SQUAREP () - - :- a [*note MATRIX::.] . - - SQUAREP is a predicate that returns t if the is square and -nil otherwise. - -examples: - - ____________________________________________________________ - - - squarep(mat((1,3,5))); - - nil - - - squarep(A); - t - ____________________________________________________________ - Related functions: [*note matrixp::.] , [*note symmetricp::.] . - - -File: redhelp, Node: stack_rows, Next: sub_matrix, Prev: squarep, Up: Linear Algebra package section - - STACK_ROWS operator - - see: [*note augment_columns::.] . - - -File: redhelp, Node: sub_matrix, Next: svd, Prev: stack_rows, Up: Linear Algebra package section - - SUB_MATRIX operator - -syntax: - - SUB_MATRIX (,,) - - :- a matrix. , :- either a -positive integer or a list of positive integers. - - namesub_matrix produces the matrix consisting of the intersection of -the rows specified in and the columns specified in -. - -examples: - - ____________________________________________________________ - - - sub_matrix(A,{1,3},{2,3}); - - [2 3] - [ ] - [8 9] - - ____________________________________________________________ - Related functions: [*note augment_columns::.] , [*note -stack_rows::.] . - - -File: redhelp, Node: svd, Next: swap_columns, Prev: sub_matrix, Up: Linear Algebra package section - - SVD operator - - Singular value decomposition: - -syntax: - - SVD () - - :- a [*note MATRIX::.] containing only numeric entries. - - SVD computes the singular value decomposition of . - - It returns - - U,P,V - - where A = U*P*V^T - - and P = diag(sigma(1) ... sigma(n)). - - sigma(i) for i= 1 ... n are the singular values of . - - n is the column dimension of . - - The singular values of are the non-negative square roots of -the eigenvalues of A^T*A. - - U and V are such that U*U^T = V*V^T = V^T*V = Id. Id is the -identity matrix. - -examples: - - ____________________________________________________________ - - - Q := mat((1,3),(-4,3)); - - [1 3] - q := [ ] - [-4 3] - - - - on rounded; - - svd(Q); - - { - [ 0.289784137735 0.957092029805] - [ ] - [ - 0.957092029805 0.289784137735] - , - [5.1491628629 0 ] - [ ] - [ 0 2.9130948854] - , - [ - 0.687215403194 0.726453707825 ] - [ ] - [ - 0.726453707825 - 0.687215403194] - } - - ____________________________________________________________ - - -File: redhelp, Node: swap_columns, Next: swap_entries, Prev: svd, Up: Linear Algebra package section - - SWAP_COLUMNS operator - - Swap columns, swap rows: - -syntax: - - SWAP_COLUMNS (,,) - - :- a [*note MATRIX::.] . - - , :- positive integers. - - SWAP_COLUMNS swaps column of with column . - - SWAP_ROWS performs the same task on two rows of . - -examples: - - ____________________________________________________________ - - - swap_columns(A,2,3); - - [1 3 2] - [ ] - [4 6 5] - [ ] - [7 9 8] - - - - swap_rows(A,1,3); - - [7 8 9] - [ ] - [4 5 6] - [ ] - [1 2 3] - - ____________________________________________________________ - Related functions: [*note swap_entries::.] . - - -File: redhelp, Node: swap_entries, Next: swap_rows, Prev: swap_columns, Up: Linear Algebra package section - - SWAP_ENTRIES operator - -syntax: - - SWAP_ENTRIES (,,,, ) - - :- a [*note MATRIX::.] . - - ,,, :- positive integers. - - SWAP_ENTRIES swaps (,) with (,). - -examples: - - ____________________________________________________________ - - - swap_entries(A,{1,1},{3,3}); - - [9 2 3] - [ ] - [4 5 6] - [ ] - [7 8 1] - - ____________________________________________________________ - Related functions: [*note swap_columns::.] , [*note swap_rows::.] . - - -File: redhelp, Node: swap_rows, Next: symmetricp, Prev: swap_entries, Up: Linear Algebra package section - - SWAP_ROWS operator - - see: [*note swap_columns::.] . - - -File: redhelp, Node: symmetricp, Next: toeplitz, Prev: swap_rows, Up: Linear Algebra package section - - SYMMETRICP operator - -syntax: - - SYMMETRICP () - - :- a [*note MATRIX::.] . - - SYMMETRICP is a predicate that returns t if the matrix is symmetric -and nil otherwise. - -examples: - - ____________________________________________________________ - - - symmetricp(make_identity(11)); - - t - - - symmetricp(A); - - nil - - ____________________________________________________________ - Related functions: [*note matrixp::.] , [*note squarep::.] . - - -File: redhelp, Node: toeplitz, Next: vandermonde, Prev: symmetricp, Up: Linear Algebra package section - - TOEPLITZ operator - -syntax: - - TOEPLITZ () - - (If you are feeling lazy then the braces can be omitted.) - - :- list of algebraic expressions. - - TOEPLITZ creates the toeplitz matrix from the . - - This is a square symmetric matrix in which the first expression is -placed on the diagonal and the i'th expression is placed on the (i-1)'th -sub and super diagonals. - - It has dimension n where n is the number of expressions. - -examples: - - ____________________________________________________________ - - - toeplitz({w,x,y,z}); - - [w x y z] - [ ] - [x w x y] - [ ] - [y x w x] - [ ] - [z y x w] - - ____________________________________________________________ - - -File: redhelp, Node: vandermonde, Prev: toeplitz, Up: Linear Algebra package section - - VANDERMONDE operator - -syntax: - - VANDERMONDE () - - (If you are feeling lazy then the braces can be omitted.) - - :- list of algebraic expressions. - - VANDERMONDE creates the vandermonde matrix from the . - - This is the square matrix in which the (i,j)'th entry is -(i)^(j-1). - - It has dimension n where n is the number of expressions. - -examples: - - ____________________________________________________________ - - vandermonde({x,2*y,3*z}); - - - [ 2 ] - [1 x x ] - [ ] - [ 2] - [1 2*y 4*y ] - [ ] - [ 2] - [1 3*z 9*z ] - - ____________________________________________________________ - - -File: redhelp, Node: Linear Algebra package section, Next: Matrix Normal Forms section, Prev: Gnuplot package section, Up: Top - - Linear Algebra package section - -* Menu: - -* Linear Algebra package:: introduction -* fast_la:: switch -* add_columns:: operator -* add_rows:: operator -* add_to_columns:: operator -* add_to_rows:: operator -* augment_columns:: operator -* band_matrix:: operator -* block_matrix:: operator -* char_matrix:: operator -* char_poly:: operator -* cholesky:: operator -* coeff_matrix:: operator -* column_dim:: operator -* companion:: operator -* copy_into:: operator -* diagonal:: operator -* extend:: operator -* find_companion:: operator -* get_columns:: operator -* get_rows:: operator -* gram_schmidt:: operator -* hermitian_tp:: operator -* hessian:: operator -* hilbert:: operator -* jacobian:: operator -* jordan_block:: operator -* lu_decom:: operator -* make_identity:: operator -* matrix_augment:: operator -* matrixp:: operator -* matrix_stack:: operator -* minor:: operator -* mult_columns:: operator -* mult_rows:: operator -* pivot:: operator -* pseudo_inverse:: operator -* random_matrix:: operator -* remove_columns:: operator -* remove_rows:: operator -* row_dim:: operator -* rows_pivot:: operator -* simplex:: operator -* squarep:: operator -* stack_rows:: operator -* sub_matrix:: operator -* svd:: operator -* swap_columns:: operator -* swap_entries:: operator -* swap_rows:: operator -* symmetricp:: operator -* toeplitz:: operator -* vandermonde:: operator - - -File: redhelp, Node: Smithex, Next: Smithex_int, Up: Matrix Normal Forms section - - SMITHEX operator - - The operator SMITHEX computes the Smith normal form S of a [*note -MATRIX::.] A (say). It returns S,P,P^-1 where P*S*P^-1 = A. - -syntax: - - SMITHEX (,) - - :- a rectangular [*note MATRIX::.] of univariate -polynomials in . :- the variable. - -examples: - - ____________________________________________________________ - - a := mat((x,x+1),(0,3*x^2)); - - [x x + 1] - [ ] - a := [ 2 ] - [0 3*x ] - - - - smithex(a,x); - - [1 0 ] [1 0] [x x + 1] - { [ ], [ ], [ ] } - [ 3] [ 2 ] [ ] - [0 x ] [3*x 1] [-3 -3 ] - - ____________________________________________________________ - - -File: redhelp, Node: Smithex_int, Next: Frobenius, Prev: Smithex, Up: Matrix Normal Forms section - - SMITHEX_INT operator - - The operator SMITHEX_INT performs the same task as SMITHEX but on -matrices containing only integer entries. Namely, SMITHEX_INT returns -S,P,P^-1 where S is the smith normal form of the input [*note -MATRIX::.] (A say), and P*S*P^-1 = A. - -syntax: - - SMITHEX_INT () - - :- a rectangular [*note MATRIX::.] of integer entries. - -examples: - - ____________________________________________________________ - - a := mat((9,-36,30),(-36,192,-180),(30,-180,180)); - - - [ 9 -36 30 ] - [ ] - a := [-36 192 -180] - [ ] - [30 -180 180 ] - - - - smithex_int(a); - - [3 0 0 ] [-17 -5 -4 ] [1 -24 30 ] - [ ] [ ] [ ] - { [0 12 0 ], [64 19 15 ], [-1 25 -30] } - [ ] [ ] [ ] - [0 0 60] [-50 -15 -12] [0 -1 1 ] - - ____________________________________________________________ - - -File: redhelp, Node: Frobenius, Next: Ratjordan, Prev: Smithex_int, Up: Matrix Normal Forms section - - FROBENIUS operator - - The operator FROBENIUS computes the FROBENIUS normal form F of a -[*note MATRIX::.] (A say). It returns F,P,P^-1 where P*F*P^-1 = A. - -syntax: - - FROBENIUS () - - :- a square [*note MATRIX::.] . - - Field Extensions: - - By default, calculations are performed in the rational numbers. To -extend this field the [*note ARNUM::.] package can be used. The package -must first be loaded by load_package arnum;. The field can now be -extended by using the defpoly command. For example, defpoly sqrt2**2-2; -will extend the field to include the square root of 2 (now defined by -sqrt2). - - Modular Arithmetic: - - FROBENIUS can also be calculated in a modular base. To do this first -type on modular;. Then setmod p; (where p is a prime) will set the -modular base of calculation to p. By further typing on balanced_mod the -answer will appear using a symmetric modular representation. See [*note -Ratjordan::.] for an example. - -examples: - - ____________________________________________________________ - - a := mat((x,x^2),(3,5*x)); - - [ 2 ] - [x x ] - a := [ ] - [3 5*x] - - - frobenius(a); - - [ 2] [1 x] [ - x ] - { [0 - 2*x ], [ ], [1 -----] } - [ ] [0 3] [ 3 ] - [1 6*x ] [ ] - [ 1 ] - [0 --- ] - [ 3 ] - - - load_package arnum; - - defpoly sqrt2**2-2; - - a := mat((sqrt2,5),(7*sqrt2,sqrt2)); - - - [ sqrt2 5 ] - a := [ ] - [7*sqrt2 sqrt2] - - - - frobenius(a); - - [0 35*sqrt2 - 2] [1 sqrt2 ] [ 1 ] - { [ ], [ ], [1 - --- ] } - [1 2*sqrt2 ] [1 7*sqrt2] [ 7 ] - [ ] - [ 1 ] - [0 ----*sqrt2] - [ 14 ] - - ____________________________________________________________ - - -File: redhelp, Node: Ratjordan, Next: Jordansymbolic, Prev: Frobenius, Up: Matrix Normal Forms section - - RATJORDAN operator - - The operator RATJORDAN computes the rational Jordan normal form R of -a [*note MATRIX::.] (A say). It returns R,P,P^-1 where P*R*P^-1 = A. - -syntax: - - RATJORDAN () - - :- a square [*note MATRIX::.] . - - Field Extensions: - - By default, calculations are performed in the rational numbers. To -extend this field the ARNUM package can be used. The package must first -be loaded by load_package arnum;. The field can now be extended by -using the defpoly command. For example, defpoly sqrt2**2-2; will extend -the field to include the square root of 2 (now defined by sqrt2). See -[*note Frobenius::.] for an example. - - Modular Arithmetic: - - RATJORDAN can also be calculated in a modular base. To do this first -type on modular;. Then setmod p; (where p is a prime) will set the -modular base of calculation to p. By further typing on balanced_mod the -answer will appear using a symmetric modular representation. - -examples: - - ____________________________________________________________ - - a := mat((5,4*x),(2,x^2)); - - [5 4*x] - [ ] - a := [ 2 ] - [2 x ] - - - - ratjordan(a); - - [0 x*( - 5*x + 8)] [1 5] [ -5 ] - { [ ], [ ], [1 -----] } - [ 2 ] [0 2] [ 2 ] - [1 x + 5 ] [ ] - [ 1 ] - [0 -----] - [ 2 ] - - - on modular; - - setmod 23; - - a := mat((12,34),(56,78)); - - [12 11] - a := [ ] - [10 9 ] - - - - ratjordan(a); - - [15 0] [16 8] [1 21] - { [ ], [ ], [ ] } - [0 6] [19 4] [1 4 ] - - - - on balanced_mod; - - ratjordan(a); - - [- 8 0] [ - 7 8] [1 - 2] - { [ ], [ ], [ ] } - [ 0 6] [ - 4 4] [1 4 ] - - ____________________________________________________________ - - -File: redhelp, Node: Jordansymbolic, Next: Jordan, Prev: Ratjordan, Up: Matrix Normal Forms section - - JORDANSYMBOLIC operator - - The operator JORDANSYMBOLIC computes the Jordan normal form J of a -[*note MATRIX::.] (A say). It returns J,L,P,P^-1 where P*J*P^-1 = A. L -= ll,mm where mm is a name and ll is a list of irreducible factors of -p(mm). - -syntax: - - JORDANSYMBOLIC () - - :- a square [*note MATRIX::.] . - - Field Extensions: - - By default, calculations are performed in the rational numbers. To -extend this field the [*note ARNUM::.] package can be used. The package -must first be loaded by load_package arnum;. The field can now be -extended by using the defpoly command. For example, defpoly sqrt2**2-2; -will extend the field to include the square root of 2 (now defined by -sqrt2). See [*note Frobenius::.] for an example. - - Modular Arithmetic: - - JORDANSYMBOLIC can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See -[*note Ratjordan::.] for an example. - -examples: - - ____________________________________________________________ - - - a := mat((1,y),(2,5*y)); - - [1 y ] - a := [ ] - [2 5*y] - - - - jordansymbolic(a); - - { - [lambda11 0 ] - [ ] - [ 0 lambda12] - , - 2 - lambda - 5*lambda*y - lambda + 3*y,lambda, - [lambda11 - 5*y lambda12 - 5*y] - [ ] - [ 2 2 ] - , - [ 2*lambda11 - 5*y - 1 5*lambda11*y - lambda11 - y + 1 ] - [---------------------- ---------------------------------] - [ 2 2 ] - [ 25*y - 2*y + 1 2*(25*y - 2*y + 1) ] - [ ] - [ 2*lambda12 - 5*y - 1 5*lambda12*y - lambda12 - y + 1 ] - [---------------------- ---------------------------------] - [ 2 2 ] - [ 25*y - 2*y + 1 2*(25*y - 2*y + 1) ] - } - - ____________________________________________________________ - - -File: redhelp, Node: Jordan, Prev: Jordansymbolic, Up: Matrix Normal Forms section - - JORDAN operator - - The operator JORDAN computes the Jordan normal form J of a [*note -MATRIX::.] (A say). It returns J,P,P^-1 where P*J*P^-1 = A. - -syntax: - - JORDAN () - - :- a square [*note MATRIX::.] . - - Field Extensions: By default, calculations are performed in the -rational numbers. To extend this field the ARNUM package can be used. -The package must first be loaded by load_package arnum;. The field can -now be extended by using the defpoly command. For example, defpoly -sqrt2**2-2; will extend the field to include the square root of 2 (now -defined by sqrt2). See [*note Frobenius::.] for an example. - - Modular Arithmetic: JORDAN can also be calculated in a modular -base. To do this first type on modular;. Then setmod p; (where p is a -prime) will set the modular base of calculation to p. By further typing -on balanced_mod the answer will appear using a symmetric modular -representation. See [*note Ratjordan::.] for an example. - -examples: - - ____________________________________________________________ - - - a := mat((1,x),(0,x)); - - [1 x] - a := [ ] - [0 x] - - - - jordan(a); - - { - [1 0] - [ ] - [0 x] - , - [ 1 x ] - [------- --------------] - [ x - 1 2 ] - [ x - 2*x + 1 ] - [ ] - [ 1 ] - [ 0 ------- ] - [ x - 1 ] - , - [x - 1 - x ] - [ ] - [ 0 x - 1] - } - - ____________________________________________________________ - - -File: redhelp, Node: Matrix Normal Forms section, Next: Miscellaneous Packages section, Prev: Linear Algebra package section, Up: Top - - Matrix Normal Forms section - -* Menu: - -* Smithex:: operator -* Smithex_int:: operator -* Frobenius:: operator -* Ratjordan:: operator -* Jordansymbolic:: operator -* Jordan:: operator - - -File: redhelp, Node: Miscellaneous Packages, Next: ALGINT package, Up: Miscellaneous Packages section - - MISCELLANEOUS PACKAGES introduction - - REDUCE includes a large number of packages that have been -contributed by users from various fields. Some of these, together with -their relevant commands, switches and so on (e.g., the NUMERIC -package), have been described elsewhere. This section describes those -packages for which no separate help material exists. Each has its own -switches, commands, and operators, and some redefine special characters -to aid in their notation. However, the brief descriptions given here do -not include all such information. Readers are referred to the general -package documentation in this case, which can be found, along with the -source code, under the subdirectories DOC and SRC in the REDUCE -directory. The [*note LOAD_PACKAGE::.] command is used to load the -files you wish into your system. There will be a short delay while the -package is loaded. A package cannot be unloaded. Once it is in your -system, it stays there until you end the session. Each package also has -a test file, which you will find under its name in the $REDUCE/XMPL -directory. - - Finally, it should be mentioned that such user-contributed packages -are unsupported; any questions or problems should be directed to their -authors. - - -File: redhelp, Node: ALGINT package, Next: APPLYSYM, Prev: Miscellaneous Packages, Up: Miscellaneous Packages section - - ALGINT package - - Author: James H. Davenport - - The ALGINT package provides indefinite integration of square roots. -This package, which is an extension of the basic integration package -distributed with REDUCE, will analytically integrate a wide range of -expressions involving square roots. The [*note ALGINT::.] switch -provides for the use of the facilities given by the package, and is -automatically turned on when the package is loaded. If you want to -return to the standard integration algorithms, turn [*note ALGINT::.] -off. An error message is given if you try to turn the [*note ALGINT::.] -switch on when its package is not loaded. - - -File: redhelp, Node: APPLYSYM, Next: ARNUM, Prev: ALGINT package, Up: Miscellaneous Packages section - - APPLYSYM package - - Author: Thomas Wolf - - This package provides programs APPLYSYM, QUASILINPDE and DETRAFO for -computing with infinitesimal symmetries of differential equations. - - -File: redhelp, Node: ARNUM, Next: ASSIST, Prev: APPLYSYM, Up: Miscellaneous Packages section - - ARNUM package - - Author: Eberhard Schruefer - - This package provides facilities for handling algebraic numbers as -polynomial coefficients in REDUCE calculations. It includes facilities -for introducing indeterminates to represent algebraic numbers, for -calculating splitting fields, and for factoring and finding greatest -common divisors in such domains. - - -File: redhelp, Node: ASSIST, Next: AVECTOR, Prev: ARNUM, Up: Miscellaneous Packages section - - ASSIST package - - Author: Hubert Caprasse - - ASSIST contains a large number of additional general purpose -functions that allow a user to better adapt REDUCE to various -calculational strategies and to make the programming task more -straightforward and more efficient. - - -File: redhelp, Node: AVECTOR, Next: BOOLEAN, Prev: ASSIST, Up: Miscellaneous Packages section - - AVECTOR package - - Author: David Harper - - This package provides REDUCE with the ability to perform vector -algebra using the same notation as scalar algebra. The basic algebraic -operations are supported, as are differentiation and integration of -vectors with respect to scalar variables, cross product and dot -product, component manipulation and application of scalar functions -(e.g. cosine) to a vector to yield a vector result. - - -File: redhelp, Node: BOOLEAN, Next: CALI, Prev: AVECTOR, Up: Miscellaneous Packages section - - BOOLEAN package - - Author: Herbert Melenk - - This package supports the computation with boolean expressions in the -propositional calculus. The data objects are composed from algebraic -expressions connected by the infix boolean operators and, or, implies, -equiv, and the unary prefix operator not. Boolean allows you to -simplify expressions built from these operators, and to test properties -like equivalence, subset property etc. - - -File: redhelp, Node: CALI, Next: CAMAL, Prev: BOOLEAN, Up: Miscellaneous Packages section - - CALI package - - Author: Hans-Gert Gr"abe - - This package contains algorithms for computations in commutative -algebra closely related to the Groebner algorithm for ideals and -modules. Its heart is a new implementation of the Groebner algorithm -that also allows for the computation of syzygies. This implementation -is also applicable to submodules of free modules with generators -represented as rows of a matrix. - - -File: redhelp, Node: CAMAL, Next: CHANGEVR, Prev: CALI, Up: Miscellaneous Packages section - - CAMAL package - - Author: John P. Fitch - - This packages implements in REDUCE the Fourier transform procedures -of the CAMAL package for celestial mechanics. - - -File: redhelp, Node: CHANGEVR, Next: COMPACT, Prev: CAMAL, Up: Miscellaneous Packages section - - CHANGEVR package - - Author: G. Ucoluk - - This package provides facilities for changing the independent -variables in a differential equation. It is basically the application -of the chain rule. - - -File: redhelp, Node: COMPACT, Next: CONTFR, Prev: CHANGEVR, Up: Miscellaneous Packages section - - COMPACT package - - Author: Anthony C. Hearn - - COMPACT is a package of functions for the reduction of a polynomial -in the presence of side relations. COMPACT applies the side relations -to the polynomial so that an equivalent expression results with as few -terms as possible. For example, the evaluation of - - ____________________________________________________________ - - compact(s*(1-sin x^2)+c*(1-cos x^2)+sin x^2+cos x^2, - {cos x^2+sin x^2=1}); - - ____________________________________________________________ - yields the result - ____________________________________________________________ - - - 2 2 - SIN(X) *C + COS(X) *S + 1 - ____________________________________________________________ - - The first argument to the operator COMPACT is the expression and the -second is a list of side relations that can be equations or simple -expressions (implicitly equated to zero). The kernels in the side -relations may also be free variables with the same meaning as in rules, -e.g. - ____________________________________________________________ - - sin_cos_identity := {cos ~w^2+sin ~w^2=1}$ - compact(u,in_cos_identity); - ____________________________________________________________ - - Also the full rule syntax with the replacement operator is allowed -here. - - -File: redhelp, Node: CONTFR, Next: CRACK, Prev: COMPACT, Up: Miscellaneous Packages section - - CONTFR package - - Author: Herbert Melenk - - This package provides for the simultaneous approximation of a real -number by a continued fraction and a rational number with optional user -controlled precision (an upper bound for the denominator). - - To use this package, the MISC package should be loaded. One can then -use the operator CONTINUED_FRACTION to approximate the real number by a -continued fraction. This operator has one or two arguments, the number -to be converted and an optional precision. The result is a list of two -elements: the first is the rational value of the approximation and the -second the list of terms of the continued fraction that represent the -same value according to the definition t0 +1/(t1 + 1/(t2 + ...)). The -second optional parameter SIZE is an upper bound on the absolute value -of the result denominator. If omitted, the approximation is performed -up to the current system precision. - -examples: - - ____________________________________________________________ - - continued_fraction pi; - - 1146408 - {---------,{3,7,15,1,292,1,1,1,2,1}} - 364913 - - - - continued_fraction(pi,100); - - 22 - {----,{3,7}} - 7 - - ____________________________________________________________ - - -File: redhelp, Node: CRACK, Next: CVIT, Prev: CONTFR, Up: Miscellaneous Packages section - - CRACK package - - Authors: Andreas Brand, Thomas Wolf - - CRACK is a package for solving overdetermined systems of partial or -ordinary differential equations (PDEs, ODEs). Examples of programs which -make use of CRACK for investigating ODEs (finding symmetries, first -integrals, an equivalent Lagrangian or a "differential factorization") -are included. - - -File: redhelp, Node: CVIT, Next: DEFINT, Prev: CRACK, Up: Miscellaneous Packages section - - CVIT package - - Authors: V.Ilyin, A.Kryukov, A.Rodionov, A.Taranov - - This package provides an alternative method for computing traces of -Dirac gamma matrices, based on an algorithm by Cvitanovich that treats -gamma matrices as 3-j symbols. - - -File: redhelp, Node: DEFINT, Next: DESIR, Prev: CVIT, Up: Miscellaneous Packages section - - DEFINT package - - Authors: Kerry Gaskell, Stanley M. Kameny, Winfried Neun - - This package finds the definite integral of an expression in a stated -interval. It uses several techniques, including an innovative approach -based on the Meijer G-function, and contour integration. - - -File: redhelp, Node: DESIR, Next: DFPART, Prev: DEFINT, Up: Miscellaneous Packages section - - DESIR package - - Authors: C. Dicrescenzo, F. Richard-Jung, E. Tournier - - This package enables the basis of formal solutions to be computed -for an ordinary homogeneous differential equation with polynomial -coefficients over Q of any order, in the neighborhood of zero (regular -or irregular singular point, or ordinary point). - - -File: redhelp, Node: DFPART, Next: DUMMY, Prev: DESIR, Up: Miscellaneous Packages section - - DFPART package - - Author: Herbert Melenk - - This package supports computations with total and partial -derivatives of formal function objects. Such computations can be useful -in the context of differential equations or power series expansions. - - -File: redhelp, Node: DUMMY, Next: EXCALC, Prev: DFPART, Up: Miscellaneous Packages section - - DUMMY package - - Author: Alain Dresse - - This package allows a user to find the canonical form of expressions -involving dummy variables. In that way, the simplification of -polynomial expressions can be fully done. The indeterminates are general -operator objects endowed with as few properties as possible. In that way -the package may be used in a large spectrum of applications. - - -File: redhelp, Node: EXCALC, Next: FPS, Prev: DUMMY, Up: Miscellaneous Packages section - - EXCALC package - - Author: Eberhard Schruefer - - The EXCALC package is designed for easy use by all who are familiar -with the calculus of Modern Differential Geometry. The program is -currently able to handle scalar-valued exterior forms, vectors and -operations between them, as well as non-scalar valued forms (indexed -forms). It is thus an ideal tool for studying differential equations, -doing calculations in general relativity and field theories, or doing -simple things such as calculating the Laplacian of a tensor field for -an arbitrary given frame. - - -File: redhelp, Node: FPS, Next: FIDE, Prev: EXCALC, Up: Miscellaneous Packages section - - FPS package - - Authors: Wolfram Koepf, Winfried Neun - - This package can expand a specific class of functions into their -corresponding Laurent-Puiseux series. - - -File: redhelp, Node: FIDE, Next: GENTRAN, Prev: FPS, Up: Miscellaneous Packages section - - FIDE package - - Author: Richard Liska - - This package performs automation of the process of numerically -solving partial differential equations systems (PDES) by means of -computer algebra. For PDES solving, the finite difference method is -applied. The computer algebra system REDUCE and the numerical -programming language FORTRAN are used in the presented methodology. The -main aim of this methodology is to speed up the process of preparing -numerical programs for solving PDES. This process is quite often, -especially for complicated systems, a tedious and time consuming task. - - -File: redhelp, Node: GENTRAN, Next: IDEALS, Prev: FIDE, Up: Miscellaneous Packages section - - GENTRAN package - - Author: Barbara L. Gates - - This package is an automatic code GENerator and TRANslator. It -constructs complete numerical programs based on sets of algorithmic -specifications and symbolic expressions. Formatted FORTRAN, RATFOR or C -code can be generated through a series of interactive commands or under -the control of a template processing routine. Large expressions can be -automatically segmented into subexpressions of manageable size, and a -special file-handling mechanism maintains stacks of open I/O channels -to allow output to be sent to any number of files simultaneously and to -facilitate recursive invocation of the whole code generation process. - - -File: redhelp, Node: IDEALS, Next: INEQ, Prev: GENTRAN, Up: Miscellaneous Packages section - - IDEALS package - - Author: Herbert Melenk - - This package implements the basic arithmetic for polynomial ideals by -exploiting the Groebner bases package of REDUCE. In order to save -computing time all intermediate Groebner bases are stored internally -such that time consuming repetitions are inhibited. - - -File: redhelp, Node: INEQ, Next: INVBASE, Prev: IDEALS, Up: Miscellaneous Packages section - - INEQ package - - Author: Herbert Melenk - - This package supports the operator INEQ_SOLVE that tries to solves -single inequalities and sets of coupled inequalities. - - -File: redhelp, Node: INVBASE, Next: LAPLACE, Prev: INEQ, Up: Miscellaneous Packages section - - INVBASE package - - Authors: A.Yu. Zharkov and Yu.A. Blinkov - - Involutive bases are a new tool for solving problems in connection -with multivariate polynomials, such as solving systems of polynomial -equations and analyzing polynomial ideals. An involutive basis of -polynomial ideal is nothing but a special form of a redundant Groebner -basis. The construction of involutive bases reduces the problem of -solving polynomial systems to simple linear algebra. - - -File: redhelp, Node: LAPLACE, Next: LIE, Prev: INVBASE, Up: Miscellaneous Packages section - - LAPLACE package - - Authors: C. Kazasov, M. Spiridonova, V. Tomov - - This package can calculate ordinary and inverse Laplace transforms of -expressions. Documentation is in plain text. - - -File: redhelp, Node: LIE, Next: MODSR, Prev: LAPLACE, Up: Miscellaneous Packages section - - LIE package - - Authors: Carsten and Franziska Sch"obel - - LIE is a package of functions for the classification of real -n-dimensional Lie algebras. It consists of two modules: LIENDMC1 and -LIE1234 . With the help of the functions in the LIENDMCL module, real -n-dimensional Lie algebras L with a derived algebra L^(1) of dimension -1 can be classified. - - -File: redhelp, Node: MODSR, Next: NCPOLY, Prev: LIE, Up: Miscellaneous Packages section - - MODSR package - - Author: Herbert Melenk - - This package supports solve (M_SOLVE) and roots (M_ROOTS) operators -for modular polynomials and modular polynomial systems. The moduli need -not be primes. M_SOLVE requires a modulus to be set. M_ROOTS takes the -modulus as a second argument. For example: - - ____________________________________________________________ - - on modular; setmod 8; - m_solve(2x=4); -> {{X=2},{X=6}} - m_solve({x^2-y^3=3}); - -> {{X=0,Y=5}, {X=2,Y=1}, {X=4,Y=5}, {X=6,Y=1}} - m_solve({x=2,x^2-y^3=3}); -> {{X=2,Y=1}} - off modular; - m_roots(x^2-1,8); -> {1,3,5,7} - m_roots(x^3-x,7); -> {0,1,6} - ____________________________________________________________ - - -File: redhelp, Node: NCPOLY, Next: ORTHOVEC, Prev: MODSR, Up: Miscellaneous Packages section - - NCPOLY package - - Authors: Herbert Melenk, Joachim Apel - - This package allows the user to set up automatically a consistent -environment for computing in an algebra where the non-commutativity is -defined by Lie-bracket commutators. The package uses the REDUCE NONCOM -mechanism for elementary polynomial arithmetic; the commutator rules -are automatically computed from the Lie brackets. - - -File: redhelp, Node: ORTHOVEC, Next: PHYSOP, Prev: NCPOLY, Up: Miscellaneous Packages section - - ORTHOVEC package - - Author: James W. Eastwood - - ORTHOVEC is a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars and -vectors. Operations include addition, subtraction, dot and cross -products, division, modulus, div, grad, curl, laplacian, -differentiation, integration, and Taylor expansion. - - -File: redhelp, Node: PHYSOP, Next: PM, Prev: ORTHOVEC, Up: Miscellaneous Packages section - - PHYSOP package - - Author: Mathias Warns - - This package has been designed to meet the requirements of -theoretical physicists looking for a computer algebra tool to perform -complicated calculations in quantum theory with expressions containing -operators. These operations consist mainly of the calculation of -commutators between operator expressions and in the evaluations of -operator matrix elements in some abstract space. - - -File: redhelp, Node: PM, Next: RANDPOLY, Prev: PHYSOP, Up: Miscellaneous Packages section - - PM package - - Author: Kevin McIsaac - - PM is a general pattern matcher similar in style to those found in -systems such as SMP and Mathematica, and is based on the pattern -matcher described in Kevin McIsaac, "Pattern Matching Algebraic -Identities", SIGSAM Bulletin, 19 (1985), 4-13. - - -File: redhelp, Node: RANDPOLY, Next: REACTEQN, Prev: PM, Up: Miscellaneous Packages section - - RANDPOLY package - - Author: Francis J. Wright - - This package is based on a port of the Maple random polynomial -generator together with some support facilities for the generation of -random numbers and anonymous procedures. - - -File: redhelp, Node: REACTEQN, Next: RESET, Prev: RANDPOLY, Up: Miscellaneous Packages section - - REACTEQN package - - Author: Herbert Melenk - - This package allows a user to transform chemical reaction systems -into ordinary differential equation systems (ODE) corresponding to the -laws of pure mass action. - - -File: redhelp, Node: RESET, Next: RESIDUE, Prev: REACTEQN, Up: Miscellaneous Packages section - - RESET package - - Author: John Fitch - - This package defines a command command RESETREDUCE that works -through the history of previous commands, and clears any values which -have been assigned, plus any rules, arrays and the like. It also sets -the various switches to their initial values. It is not complete, but -does work for most things that cause a gradual loss of space. It would -be relatively easy to make it interactive, so allowing for selective -resetting. - - -File: redhelp, Node: RESIDUE, Next: RLFI, Prev: RESET, Up: Miscellaneous Packages section - - RESIDUE package - - Author: Wolfram Koepf - - This package supports the calculation of residues of arbitrary -expressions. - - -File: redhelp, Node: RLFI, Next: SCOPE, Prev: RESIDUE, Up: Miscellaneous Packages section - - RLFI package - - Author: Richard Liska - - This package adds LaTeX syntax to REDUCE. Text generated by REDUCE -in this mode can be directly used in LaTeX source documents. Various -mathematical constructions are supported by the interface including -subscripts, superscripts, font changing, Greek letters, divide-bars, -integral and sum signs, derivatives, and so on. - - -File: redhelp, Node: SCOPE, Next: SETS, Prev: RLFI, Up: Miscellaneous Packages section - - SCOPE package - - Author: J.A. van Hulzen - - SCOPE is a package for the production of an optimized form of a set -of expressions. It applies an heuristic search for common -(sub)expressions to almost any set of proper REDUCE assignment -statements. The output is obtained as a sequence of assignment -statements. GENTRAN is used to facilitate expression output. - - -File: redhelp, Node: SETS, Next: SPDE, Prev: SCOPE, Up: Miscellaneous Packages section - - SETS package - - Author: Francis J. Wright - - The SETS package provides algebraic-mode support for set operations -on lists regarded as sets (or representing explicit sets) and on -implicit sets represented by identifiers. - - -File: redhelp, Node: SPDE, Next: SYMMETRY, Prev: SETS, Up: Miscellaneous Packages section - - SPDE package - - Author: Fritz Schwartz - - The package SPDE provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given -system of partial differential equations. In many cases the determining -system is solved completely automatically. In other cases the user has -to provide additional input information for the solution algorithm to -terminate. - - -File: redhelp, Node: SYMMETRY, Next: TPS, Prev: SPDE, Up: Miscellaneous Packages section - - SYMMETRY package - - Author: Karin Gatermann - - This package computes symmetry-adapted bases and block diagonal -forms of matrices which have the symmetry of a group. The package is the -implementation of the theory of linear representations for small finite -groups such as the dihedral groups. - - -File: redhelp, Node: TPS, Next: TRI, Prev: SYMMETRY, Up: Miscellaneous Packages section - - TPS package - - Authors: Alan Barnes, Julian Padget - - This package implements formal Laurent series expansions in one -variable using the domain mechanism of REDUCE. This means that power -series objects can be added, multiplied, differentiated etc., like -other first class objects in the system. A lazy evaluation scheme is -used and thus terms of the series are not evaluated until they are -required for printing or for use in calculating terms in other power -series. The series are extendible giving the user the impression that -the full infinite series is being manipulated. The errors that can -sometimes occur using series that are truncated at some fixed depth -(for example when a term in the required series depends on terms of an -intermediate series beyond the truncation depth) are thus avoided. - - -File: redhelp, Node: TRI, Next: TRIGSIMP, Prev: TPS, Up: Miscellaneous Packages section - - TRI package - - Author: Werner Antweiler - - This package provides facilities written in REDUCE-Lisp for -typesetting REDUCE formulas using TeX. The TeX-REDUCE-Interface -incorporates three levels of TeX output: without line breaking, with -line breaking, and with line breaking plus indentation. - - -File: redhelp, Node: TRIGSIMP, Next: XCOLOR, Prev: TRI, Up: Miscellaneous Packages section - - TRIGSIMP package - - Author: Wolfram Koepf - - TRIGSIMP is a useful tool for all kinds of trigonometric and -hyperbolic simplification and factorization. There are three procedures -included in TRIGSIMP: TRIGSIMP , TRIGFACTORIZE and TRIGGCD . The first -is for finding simplifications of trigonometric or hyperbolic -expressions with many options, the second for factorizing them and the -third for finding the greatest common divisor of two trigonometric or -hyperbolic polynomials. - - -File: redhelp, Node: XCOLOR, Next: XIDEAL, Prev: TRIGSIMP, Up: Miscellaneous Packages section - - XCOLOR package - - Author: A. Kryukov - - This package calculates the color factor in non-abelian gauge field -theories using an algorithm due to Cvitanovich. - - -File: redhelp, Node: XIDEAL, Next: WU, Prev: XCOLOR, Up: Miscellaneous Packages section - - XIDEAL package - - Author: David Hartley - - XIDEAL constructs Groebner bases for solving the left ideal -membership problem: Groebner left ideal bases or GLIBs. For graded -ideals, where each form is homogeneous in degree, the distinction -between left and right ideals vanishes. Furthermore, if the generating -forms are all homogeneous, then the Groebner bases for the non-graded -and graded ideals are identical. In this case, XIDEAL is able to save -time by truncating the Groebner basis at some maximum degree if desired. - - -File: redhelp, Node: WU, Next: ZEILBERG, Prev: XIDEAL, Up: Miscellaneous Packages section - - WU package - - Author: Russell Bradford - - This is a simple implementation of the Wu algorithm implemented in -REDUCE working directly from "A Zero Structure Theorem for -Polynomial-Equations-Solving," Wu Wen-tsun, Institute of Systems -Science, Academia Sinica, Beijing. - - -File: redhelp, Node: ZEILBERG, Next: ZTRANS, Prev: WU, Up: Miscellaneous Packages section - - ZEILBERG package - - Authors: Gregor St"olting and Wolfram Koepf - - This package is a careful implementation of the Gosper and Zeilberger -algorithms for indefinite and definite summation of hypergeometric -terms, respectively. Extensions of these algorithms are also included -that are valid for ratios of products of powers, factorials, gamma -function terms, binomial coefficients, and shifted factorials that are -rational-linear in their arguments. - - -File: redhelp, Node: ZTRANS, Prev: ZEILBERG, Up: Miscellaneous Packages section - - ZTRANS package - - Authors: Wolfram Koepf, Lisa Temme - - This package is an implementation of the Z-transform of a sequence. -This is the discrete analogue of the Laplace Transform. - - -File: redhelp, Node: Miscellaneous Packages section, Next: Outmoded Operations section, Prev: Matrix Normal Forms section, Up: Top - - Miscellaneous Packages section - -* Menu: - -* Miscellaneous Packages:: introduction -* ALGINT package:: package -* APPLYSYM:: package -* ARNUM:: package -* ASSIST:: package -* AVECTOR:: package -* BOOLEAN:: package -* CALI:: package -* CAMAL:: package -* CHANGEVR:: package -* COMPACT:: package -* CONTFR:: package -* CRACK:: package -* CVIT:: package -* DEFINT:: package -* DESIR:: package -* DFPART:: package -* DUMMY:: package -* EXCALC:: package -* FPS:: package -* FIDE:: package -* GENTRAN:: package -* IDEALS:: package -* INEQ:: package -* INVBASE:: package -* LAPLACE:: package -* LIE:: package -* MODSR:: package -* NCPOLY:: package -* ORTHOVEC:: package -* PHYSOP:: package -* PM:: package -* RANDPOLY:: package -* REACTEQN:: package -* RESET:: package -* RESIDUE:: package -* RLFI:: package -* SCOPE:: package -* SETS:: package -* SPDE:: package -* SYMMETRY:: package -* TPS:: package -* TRI:: package -* TRIGSIMP:: package -* XCOLOR:: package -* XIDEAL:: package -* WU:: package -* ZEILBERG:: package -* ZTRANS:: package - - -File: redhelp, Node: ED, Next: EDITDEF, Up: Outmoded Operations section - - ED command - - The ED command invokes a simple line editor for REDUCE input -statements. - -syntax: - - ED or ED - - ED called with no argument edits the last input statement. If - is greater than or equal to the current line number, an error -message is printed. Reenter a proper ED command or return to the top -level with a semicolon. - - The editor formats REDUCE's version of the desired input statement, -dividing it into lines at semicolons and dollar signs. The statement is -printed at the beginning of the edit session. The editor works on one -line at a time, and has a pointer (shown by ^ ) to the current -character of that line. When the session begins, the pointer is at the -left hand side of the first line. The editing prompt is > . - - The following commands are available. They may be entered in either -upper or lower case. All commands are activated by the carriage return, -which also prints out the current line after changes. Several commands -can be placed on a single line, except that commands terminated by an -ESC must be the last command before the carriage return. - - b Move pointer to beginning of current line. - - d Delete current character and next (digit-1) characters. An -error message is printed if anything other than a single digit follows -d. If there are fewer than characters left on the line, all but -the final dollar sign or semicolon is removed. To delete a line -completely, use the k command. - - e End the current session, causing the edited expression to be -reparsed by REDUCE. - - f Find the next occurrence of the character to the -right of the pointer on the current line and move the pointer to it. If -the character is not found, an error message is printed and the pointer -remains in its original position. Other lines are not searched. The f -command is not case-sensitive. - - iESC Insert in front of pointer. The ESC key is your -delimiter for the input string. No other command may follow this one on -the same line. - - k Kill rest of the current line, including the semicolon or dollar -sign terminator. If there are characters remaining on the current line, -and it is the last line of the input statement, a semicolon is added to -the line as a terminator for REDUCE. If the current line is now empty, -one of the following actions is performed: If there is a following -line, it becomes the current line and the pointer is placed at its -first character. If the current line was the final line of the -statement, and there is a previous line, the previous line becomes the -current line. If the current line was the only line of the statement, -and it is empty, a single semicolon is inserted for REDUCE to parse. - - l Finish editing this line and move to the last previous line. An -error message is printed if there is no previous line. - - n Finish editing this line and move to the next line. An error -message is printed if there is no next line. - - p Print out all the lines of the statement. Then a dotted line is -printed, and the current line is reprinted, with the pointer under it. - - q Quit the editing session without saving the changes. If a -semicolon is entered after q, a new line prompt is given, otherwise -REDUCE prompts you for another command. Whatever you type in to the -prompt appearing after the q is entered is stored as the input for the -line number in which you called the edit. Thus if you enter a -semicolon, neither [*note INPUT::.] ED will find anything under the -current number. - - r Replace the character at the pointer by . - - sESC Search for the first occurrence of to the -right of the pointer on the current line and move the pointer to its -first character. The ESC key is your delimiter for the input string. -The s function does not search other lines of the statement. If the -string is not found, an error message is printed and the pointer -remains in its original position. The s command is not case-sensitive. -No other command may follow this one on the same line. - - x Move the pointer one character to the right. If the -pointer is already at the end of the line, an error message is printed. - - - <(minus)> Move the pointer one character to the left. If the -pointer is already at the beginning of the line, an error message is -printed. - - ? Display the Help menu, showing the commands and their actions. - -examples: - - ____________________________________________________________ - ____________________________________________________________ - (Line numbers are shown in the following examples) - ____________________________________________________________ - - - 2: >>x**2 + y; - - X^{2} + Y - - 3: >>ed 2; - - X**2 + Y; - - ^ - - For help, type '?' - - ?- (Enter three spaces and (Key){Return}) - - X**2 + Y; - - ^ - - ?- r5 - - X**5 + Y; - - ^ - - ?- fY - - X**5 + Y; - - ^ - - ?- iabc (Terminate with (Key){ESC} and (Key){Return}) - - X**5 + abcY; - - ^ - - ?- ---- - - X**5 + abcY; - - ^ - - ?- fbd2 - - X**5 + aY; - - ^ - - ?- b - - X**5 + aY; - - ^ - - ?- e - - AY + X^{5} - - 4: >>procedure dumb(a); - - >>write a; - - DUMB - - 5: >>dumb(17); - - 17 - - 6: >>ed 4; - - PROCEDURE DUMB (A); - - ^ - - WRITE A; - - ?- fArBn - - WRITE A; - - ^ - - ?- ibegin scalar a; a := b + 10; (Type a space, (Key){ESC}, and (Key){Return}) - - begin scalar a; a := b + 10; WRITE A; - - ?- f;i end (Key){ESC}, (Key){Return} - - begin scalar b; b := a + 10; WRITE A end; - - ^ - - ?- p - - PROCEDURE DUMB (B); - - begin scalar b; b := a + 10; WRITE A end; - - - - - - - - - - - - - - begin scalar b; b := a + 10; WRITE A end; - - ^ - - ?- e - - DUMB - - 7: >>dumb(17); - - 27 - - 8: >> - - ____________________________________________________________ - - Note that REDUCE reparsed the procedure DUMB and updated the -definition. - - Since REDUCE divides the expression to be edited into lines at -semicolons or dollar sign terminators, some lines may occupy more than -one line of screen space. If the pointer is directly beneath the last -line of text, it refers to the top line of text. If there is a blank -line between the last line of text and the pointer, it refers to the -second line of text, and likewise for cases of greater than two lines -of text. In other words, the entire REDUCE statement up to the next -terminator is printed, even if it runs to several lines, then the -pointer line is printed. - - You can insert new statements which contain semicolons of their own -into the current line. They are run into the current line where you -placed them until you edit the statement again. REDUCE will understand -the set of statements if the syntax is correct. - - If you leave out needed closing brackets when you exit the editor, a -message is printed allowing you to redo the edit (you can edit the -previous line number and return to where you were). If you leave out a -closing double-quotation mark, an error message is printed, and the -editing must be redone from the original version; the edited version -has been destroyed. Most syntax errors which you inadvertently leave -in an edited statement are caught as usual by the REDUCE parser, and -you will be able to re-edit the statement. - - When the editor processes a previous statement for your editing, -escape characters are removed. Most special characters that you may use -in identifiers are printed in legal fashion, prefixed by the exclamation -point. Be sure to treat the special character and its escape as a pair -in your editing. The characters ( ) # ; ' are different. Since they -have special meaning in Lisp, they are double-escaped in the editor. -It is unwise to use these characters inside identifiers anyway, due to -the probability of confusion. - - If you see a Lisp error message during editing, the edit has been -aborted. Enter a semicolon and you will see a new line prompt. - - Since the editor has no dependence on any window system, it can be -used if you are running REDUCE without windows. - - -File: redhelp, Node: EDITDEF, Prev: ED, Up: Outmoded Operations section - - EDITDEF command - - The interactive editor [*note ED::.] may be used to edit a -user-defined procedure that has not been compiled. - -syntax: - - EDITDEF (IDENTIFIER ) - - where IDENTIFIER is the name of the procedure. When EDITDEF is -invoked, the procedure definition will be displayed in editing mode, -and may then be edited and redefined on exiting from the editor using -standard [*note ED::.] commands. - - -File: redhelp, Node: Outmoded Operations section, Prev: Miscellaneous Packages section, Up: Top - - Outmoded Operations section - -* Menu: - -* ED:: command -* EDITDEF:: command - - -File: redhelp, Node: Top, Up: (dir) - - - - Top - -* Menu: - -* Concepts section:: -* Variables section:: -* Syntax section:: -* Arithmetic Operations section:: -* Boolean Operators section:: -* General Commands section:: -* Algebraic Operators section:: -* Declarations section:: -* Input and Output section:: -* Elementary Functions section:: -* General Switches section:: -* Matrix Operations section:: -* Groebner package section:: -* High Energy Physics section:: -* Numeric Package section:: -* Roots Package section:: -* Special Functions section:: -* Taylor series section:: -* Gnuplot package section:: -* Linear Algebra package section:: -* Matrix Normal Forms section:: -* Miscellaneous Packages section:: -* Outmoded Operations section:: - - - -Tag Table: -Node: IDENTIFIER89 -Node: KERNEL2324 -Node: STRING3392 -Node: Concepts section3968 -Node: assumptions4176 -Node: CARD_NO4826 -Node: E5867 -Node: EVAL_MODE6482 -Node: FORT_WIDTH6999 -Node: HIGH_POW7815 -Node: I8845 -Node: INFINITY9764 -Node: LOW_POW10098 -Node: NIL10948 -Node: PI11255 -Node: requirements11766 -Node: ROOT_MULTIPLICITIES12497 -Node: T12952 -Node: Variables section13268 -Node: semicolon13737 -Node: dollar15078 -Node: percent16681 -Node: dot17543 -Node: assign18702 -Node: equalsign21581 -Node: replace22690 -Node: plussign23164 -Node: minussign23972 -Node: asterisk24929 -Node: slash26263 -Node: power27815 -Node: caret29236 -Node: geqsign30594 -Node: greater31612 -Node: leqsign32756 -Node: less33720 -Node: tilde34705 -Node: group35013 -Node: AND36337 -Node: BEGIN37441 -Node: block39104 -Node: COMMENT39416 -Node: CONS40186 -Node: END41485 -Node: EQUATION42355 -Node: FIRST44096 -Node: FOR44791 -Node: FOREACH49527 -Node: GEQ50216 -Node: GOTO51311 -Node: GREATERP52299 -Node: IF53401 -Node: LIST55938 -Node: OR57485 -Node: PROCEDURE58633 -Node: REPEAT64274 -Node: REST65495 -Node: RETURN66354 -Node: REVERSE68550 -Node: RULE69700 -Node: Free Variable71388 -Node: Optional Free Variable71963 -Node: SECOND72895 -Node: SET73615 -Node: SETQ74805 -Node: THIRD76899 -Node: WHEN77657 -Node: Syntax section77939 -Node: ARITHMETIC_OPERATIONS79927 -Node: ABS80256 -Node: ADJPREC81171 -Node: ARG82070 -Node: CEILING82722 -Node: CHOOSE83550 -Node: DEG2DMS84254 -Node: DEG2RAD85082 -Node: DIFFERENCE85822 -Node: DILOG86780 -Node: DMS2DEG87560 -Node: DMS2RAD88337 -Node: FACTORIAL89119 -Node: FIX89844 -Node: FIXP90758 -Node: FLOOR91726 -Node: EXPT92537 -Node: GCD93564 -Node: LN94527 -Node: LOG95533 -Node: LOGB96404 -Node: MAX97393 -Node: MIN98071 -Node: MINUS98747 -Node: NEXTPRIME99421 -Node: NOCONVERT100086 -Node: NORM100684 -Node: PERM101514 -Node: PLUS102277 -Node: QUOTIENT103281 -Node: RAD2DEG105295 -Node: RAD2DMS106032 -Node: RECIP106813 -Node: REMAINDER107352 -Node: ROUND108400 -Node: SETMOD109013 -Node: SIGN110331 -Node: SQRT111038 -Node: TIMES112284 -Node: Arithmetic Operations section113292 -Node: boolean value114899 -Node: EQUAL115270 -Node: EVENP116460 -Node: false117495 -Node: FREEOF117929 -Node: LEQ119109 -Node: LESSP120184 -Node: MEMBER121267 -Node: NEQ122259 -Node: NOT123321 -Node: NUMBERP124252 -Node: ORDP125124 -Node: PRIMEP126108 -Node: TRUE126817 -Node: Boolean Operators section127468 -Node: BYE128155 -Node: CONT128479 -Node: DISPLAY129810 -Node: LOAD_PACKAGE130698 -Node: PAUSE131120 -Node: QUIT133498 -Node: RECLAIM133854 -Node: REDERR134624 -Node: RETRY136051 -Node: SAVEAS136864 -Node: SHOWTIME137941 -Node: WRITE138900 -Node: General Commands section140314 -Node: APPEND140915 -Node: ARBINT142112 -Node: ARBCOMPLEX142691 -Node: ARGLENGTH143426 -Node: COEFF144430 -Node: COEFFN146529 -Node: CONJ148282 -Node: CONTINUED_FRACTION148988 -Node: DECOMPOSE150170 -Node: DEG151372 -Node: DEN152265 -Node: DF153556 -Node: EXPAND_CASES155315 -Node: EXPREAD155717 -Node: FACTORIZE156181 -Node: HYPOT158549 -Node: IMPART159304 -Node: INT159962 -Node: INTERPOL162378 -Node: LCOF163485 -Node: LENGTH164427 -Node: LHS166191 -Node: LIMIT167142 -Node: LPOWER168490 -Node: LTERM169374 -Node: MAINVAR170276 -Node: MAP171659 -Node: MKID173750 -Node: NPRIMITIVE175154 -Node: NUM175818 -Node: ODESOLVE176735 -Node: ONE_OF178657 -Node: PART179513 -Node: PF182236 -Node: PROD183671 -Node: REDUCT184488 -Node: REPART185425 -Node: RESULTANT186085 -Node: RHS189206 -Node: ROOT_OF190743 -Node: SELECT192288 -Node: SHOWRULES194229 -Node: SOLVE195198 -Node: SORT199963 -Node: STRUCTR201553 -Node: SUB203206 -Node: SUM204090 -Node: WS204980 -Node: Algebraic Operators section207213 -Node: ALGEBRAIC209148 -Node: ANTISYMMETRIC210018 -Node: ARRAY211451 -Node: CLEAR213785 -Node: CLEARRULES216469 -Node: DEFINE217452 -Node: DEPEND218597 -Node: EVEN220376 -Node: FACTOR declaration221072 -Node: FORALL222812 -Node: INFIX226022 -Node: INTEGER227489 -Node: KORDER228738 -Node: LET229826 -Node: LINEAR236743 -Node: LINELENGTH238745 -Node: LISP239329 -Node: LISTARGP240065 -Node: NODEPEND241096 -Node: MATCH242025 -Node: NONCOM244113 -Node: NONZERO245295 -Node: ODD245921 -Node: OFF246789 -Node: ON247135 -Node: OPERATOR247481 -Node: ORDER249906 -Node: PRECEDENCE251577 -Node: PRECISION253394 -Node: PRINT_PRECISION254691 -Node: REAL255423 -Node: REMFAC256682 -Node: SCALAR257115 -Node: SCIENTIFIC_NOTATION258361 -Node: SHARE260002 -Node: SYMBOLIC261388 -Node: SYMMETRIC262089 -Node: TR263079 -Node: UNTR264936 -Node: VARNAME265457 -Node: WEIGHT266580 -Node: WHERE268523 -Node: WHILE270660 -Node: WTLEVEL271677 -Node: Declarations section273547 -Node: IN275406 -Node: INPUT276695 -Node: OUT277761 -Node: SHUT279884 -Node: Input and Output section280522 -Node: ACOS280831 -Node: ACOSH281948 -Node: ACOT283503 -Node: ACOTH284179 -Node: ACSC284873 -Node: ACSCH285982 -Node: ASEC287063 -Node: ASECH288166 -Node: ASIN289722 -Node: ASINH290921 -Node: ATAN292288 -Node: ATANH293398 -Node: ATAN2294729 -Node: COS295822 -Node: COSH296806 -Node: COT297907 -Node: COTH298861 -Node: CSC299847 -Node: CSCH300810 -Node: ERF301845 -Node: EXP302900 -Node: SEC303800 -Node: SECH304779 -Node: SIN305770 -Node: SINH306690 -Node: TAN307906 -Node: TANH309170 -Node: Elementary Functions section310361 -Node: SWITCHES311533 -Node: ALGINT311863 -Node: ALLBRANCH312323 -Node: ALLFAC313235 -Node: ARBVARS314014 -Node: BALANCED_MOD315284 -Node: BFSPACE315913 -Node: COMBINEEXPT316764 -Node: COMBINELOGS317373 -Node: COMP318497 -Node: COMPLEX320746 -Node: CREF322013 -Node: CRAMER322996 -Node: DEFN324840 -Node: DEMO327109 -Node: DFPRINT327783 -Node: DIV328646 -Node: ECHO329642 -Node: ERRCONT330544 -Node: EVALLHSEQP331390 -Node: EXP switch331806 -Node: EXPANDLOGS332868 -Node: EZGCD334015 -Node: FACTOR334675 -Node: FAILHARD336733 -Node: FORT337352 -Node: FORTUPPER338441 -Node: FULLPREC338993 -Node: FULLROOTS339871 -Node: GC340337 -Node: GCD switch340790 -Node: HORNER342289 -Node: IFACTOR343154 -Node: INT switch344254 -Node: INTSTR344850 -Node: LCM345382 -Node: LESSSPACE347295 -Node: LIMITEDFACTORS347523 -Node: LIST switch348554 -Node: LISTARGS349286 -Node: MCD350236 -Node: MODULAR351538 -Node: MSG352700 -Node: MULTIPLICITIES353071 -Node: NAT353944 -Node: NERO354875 -Node: NOARG355998 -Node: NOLNR356780 -Node: NOSPLIT357401 -Node: NUMVAL357864 -Node: OUTPUT358505 -Node: OVERVIEW359028 -Node: PERIOD359297 -Node: PRECISE359598 -Node: PRET360665 -Node: PRI361866 -Node: RAISE362515 -Node: RAT362916 -Node: RATARG364097 -Node: RATIONAL365134 -Node: RATIONALIZE366197 -Node: RATPRI367221 -Node: REVPRI367933 -Node: RLISP88368755 -Node: ROUNDALL369567 -Node: ROUNDBF370120 -Node: ROUNDED371242 -Node: SAVESTRUCTR372139 -Node: SOLVESINGULAR373555 -Node: TIME374845 -Node: TRALLFAC376006 -Node: TRFAC376588 -Node: TRIGFORM377258 -Node: TRINT377638 -Node: TRNONLNR377954 -Node: VAROPT378423 -Node: General Switches section379601 -Node: COFACTOR382436 -Node: DET383169 -Node: MAT384245 -Node: MATEIGEN385699 -Node: MATRIX387719 -Node: NULLSPACE390705 -Node: RANK392342 -Node: TP393100 -Node: TRACE393981 -Node: Matrix Operations section394720 -Node: Groebner bases395223 -Node: Ideal Parameters396187 -Node: Term order398597 -Node: TORDER399066 -Node: torder_compile400779 -Node: lex term order401427 -Node: gradlex term order402005 -Node: revgradlex term order402378 -Node: gradlexgradlex term order402902 -Node: gradlexrevgradlex term order403607 -Node: lexgradlex term order403903 -Node: lexrevgradlex term order404183 -Node: weighted term order404512 -Node: graded term order404985 -Node: matrix term order405546 -Node: Term order section406324 -Node: GVARS406978 -Node: GROEBNER407363 -Node: groebopt408718 -Node: gvarslast409456 -Node: groebprereduce409833 -Node: groebfullreduction410374 -Node: gltbasis410791 -Node: gltb411194 -Node: glterms411361 -Node: groebstat411868 -Node: trgroeb412245 -Node: trgroebs412517 -Node: gzerodim?412797 -Node: gdimension413269 -Node: gindependent_sets413841 -Node: dd_groebner414594 -Node: glexconvert415413 -Node: greduce416562 -Node: preduce416974 -Node: idealquotient417506 -Node: hilbertpolynomial418023 -Node: Basic Groebner operators section418581 -Node: groebnerf419549 -Node: groebmonfac421407 -Node: groebresmax422135 -Node: groebrestriction422509 -Node: Factorizing Groebner bases section423215 -Node: groebprot423583 -Node: groebprotfile423918 -Node: groebnert424113 -Node: preducet425027 -Node: Tracing Groebner bases section425790 -Node: Module426154 -Node: gmodule426794 -Node: Groebner Bases for Modules section427867 -Node: gsort428175 -Node: gsplit428743 -Node: gspoly429465 -Node: Computing with distributive polynomials section429927 -Node: Groebner package section430247 -Node: HEPHYS430718 -Node: HE-dot431337 -Node: EPS432894 -Node: G434219 -Node: INDEX437082 -Node: MASS438095 -Node: MSHELL439171 -Node: NOSPUR440103 -Node: REMIND440920 -Node: SPUR441348 -Node: VECDIM441761 -Node: VECTOR442422 -Node: High Energy Physics section444808 -Node: Numeric Package445443 -Node: Interval445897 -Node: numeric accuracy446575 -Node: TRNUMERIC447056 -Node: num_min447418 -Node: num_solve448929 -Node: num_int450805 -Node: num_odesolve452388 -Node: bounds454414 -Node: Chebyshev fit456117 -Node: num_fit458351 -Node: Numeric Package section459797 -Node: Roots Package460363 -Node: MKPOLY461107 -Node: NEARESTROOT461856 -Node: REALROOTS462498 -Node: ROOTACC463726 -Node: ROOTS464133 -Node: ROOT_VAL465238 -Node: ROOTSCOMPLEX465999 -Node: ROOTSREAL466283 -Node: Roots Package section466540 -Node: Special Function Package467035 -Node: Constants469568 -Node: BERNOULLI470479 -Node: BERNOULLIP471020 -Node: EULER471669 -Node: EULERP472345 -Node: ZETA472918 -Node: Bernoulli Euler Zeta section473773 -Node: BESSELJ474138 -Node: BESSELY474647 -Node: HANKEL1475245 -Node: HANKEL2475944 -Node: BESSELI476644 -Node: BESSELK477187 -Node: StruveH477707 -Node: StruveL478151 -Node: KummerM478601 -Node: KummerU479267 -Node: WhittakerW479861 -Node: Bessel Functions section480568 -Node: Airy_Ai481164 -Node: Airy_Bi481726 -Node: Airy_Aiprime482267 -Node: Airy_Biprime482848 -Node: Airy Functions section483383 -Node: JacobiSN483746 -Node: JacobiCN484290 -Node: JacobiDN484878 -Node: JacobiCD485422 -Node: JacobiSD485984 -Node: JacobiND486546 -Node: JacobiDC487137 -Node: JacobiNC487679 -Node: JacobiSC488237 -Node: JacobiNS488824 -Node: JacobiDS489407 -Node: JacobiCS489969 -Node: JacobiAMPLITUDE490530 -Node: AGM_FUNCTION491151 -Node: LANDENTRANS492433 -Node: EllipticF493215 -Node: EllipticK493936 -Node: EllipticKprime494645 -Node: EllipticE495373 -Node: EllipticTHETA496571 -Node: JacobiZETA497654 -Node: Jacobi Elliptic Functions and Elliptic Integrals section498389 -Node: POCHHAMMER499426 -Node: GAMMA500279 -Node: BETA500750 -Node: PSI501388 -Node: POLYGAMMA502003 -Node: Gamma and Related Functions section502688 -Node: DILOG extended503121 -Node: Lambert_W function503928 -Node: Miscellaneous Functions section504711 -Node: ChebyshevT505003 -Node: ChebyshevU505750 -Node: HermiteP506515 -Node: LaguerreP507234 -Node: LegendreP508163 -Node: JacobiP509180 -Node: GegenbauerP509846 -Node: SolidHarmonicY510440 -Node: SphericalHarmonicY511150 -Node: Orthogonal Polynomials section512075 -Node: Si512616 -Node: Shi513220 -Node: s_i513846 -Node: Ci514456 -Node: Chi515083 -Node: ERF extended515751 -Node: erfc516507 -Node: Ei517064 -Node: Fresnel_C517710 -Node: Fresnel_S518341 -Node: Integral Functions section518968 -Node: BINOMIAL519542 -Node: STIRLING1520416 -Node: STIRLING2521331 -Node: Combinatorial Operators section522123 -Node: ThreejSymbol522438 -Node: Clebsch_Gordan523139 -Node: SixjSymbol523765 -Node: 3j and 6j symbols section524394 -Node: HYPERGEOMETRIC524699 -Node: MeijerG525620 -Node: Heaviside527105 -Node: erfi527608 -Node: Miscellaneous section528093 -Node: Special Functions section528390 -Node: TAYLOR introduction529012 -Node: taylor529544 -Node: taylorautocombine532768 -Node: taylorautoexpand533178 -Node: taylorcombine533560 -Node: taylorkeeporiginal535999 -Node: taylororiginal536533 -Node: taylorprintorder537756 -Node: taylorprintterms538067 -Node: taylorrevert539443 -Node: taylorseriesp540318 -Node: taylortemplate541251 -Node: taylortostandard542168 -Node: Taylor series section542917 -Node: GNUPLOT and REDUCE543553 -Node: Axes names544498 -Node: Pointset545039 -Node: PLOT546068 -Node: PLOTRESET548993 -Node: title549350 -Node: xlabel549764 -Node: ylabel550185 -Node: zlabel550616 -Node: terminal551047 -Node: size551540 -Node: view552054 -Node: contour552600 -Node: surface552999 -Node: hidden3d553401 -Node: PLOTKEEP553810 -Node: PLOTREFINE554156 -Node: plot_xmesh554769 -Node: plot_ymesh555266 -Node: SHOW_GRID555639 -Node: TRPLOT556102 -Node: Gnuplot package section556582 -Node: Linear Algebra package557508 -Node: fast_la559943 -Node: add_columns561059 -Node: add_rows562173 -Node: add_to_columns562362 -Node: add_to_rows563565 -Node: augment_columns563767 -Node: band_matrix564759 -Node: block_matrix565913 -Node: char_matrix567028 -Node: char_poly567821 -Node: cholesky568503 -Node: coeff_matrix569799 -Node: column_dim570745 -Node: companion571343 -Node: copy_into572301 -Node: diagonal573563 -Node: extend574632 -Node: find_companion575579 -Node: get_columns576481 -Node: get_rows577529 -Node: gram_schmidt577716 -Node: hermitian_tp578687 -Node: hessian579703 -Node: hilbert580629 -Node: jacobian581757 -Node: jordan_block582946 -Node: lu_decom583914 -Node: make_identity587087 -Node: matrix_augment587782 -Node: matrixp588927 -Node: matrix_stack589570 -Node: minor589757 -Node: mult_columns590452 -Node: mult_rows591553 -Node: pivot591737 -Node: pseudo_inverse592686 -Node: random_matrix593975 -Node: remove_columns595845 -Node: remove_rows596730 -Node: row_dim596924 -Node: rows_pivot597106 -Node: simplex598365 -Node: squarep599641 -Node: stack_rows600247 -Node: sub_matrix600436 -Node: svd601225 -Node: swap_columns602677 -Node: swap_entries603566 -Node: swap_rows604294 -Node: symmetricp604483 -Node: toeplitz605124 -Node: vandermonde606050 -Node: Linear Algebra package section606924 -Node: Smithex609066 -Node: Smithex_int610006 -Node: Frobenius611213 -Node: Ratjordan613674 -Node: Jordansymbolic615984 -Node: Jordan618450 -Node: Matrix Normal Forms section620245 -Node: Miscellaneous Packages620649 -Node: ALGINT package622010 -Node: APPLYSYM622798 -Node: ARNUM623110 -Node: ASSIST623589 -Node: AVECTOR623980 -Node: BOOLEAN624536 -Node: CALI625093 -Node: CAMAL625626 -Node: CHANGEVR625905 -Node: COMPACT626223 -Node: CONTFR627731 -Node: CRACK629139 -Node: CVIT629610 -Node: DEFINT629971 -Node: DESIR630368 -Node: DFPART630817 -Node: DUMMY631182 -Node: EXCALC631684 -Node: FPS632358 -Node: FIDE632636 -Node: GENTRAN633335 -Node: IDEALS634133 -Node: INEQ634557 -Node: INVBASE634843 -Node: LAPLACE635423 -Node: LIE635729 -Node: MODSR636200 -Node: NCPOLY637070 -Node: ORTHOVEC637581 -Node: PHYSOP638069 -Node: PM638616 -Node: RANDPOLY639020 -Node: REACTEQN639367 -Node: RESET639703 -Node: RESIDUE640291 -Node: RLFI640533 -Node: SCOPE641017 -Node: SETS641493 -Node: SPDE641832 -Node: SYMMETRY642354 -Node: TPS642767 -Node: TRI643689 -Node: TRIGSIMP644101 -Node: XCOLOR644700 -Node: XIDEAL644982 -Node: WU645622 -Node: ZEILBERG646012 -Node: ZTRANS646582 -Node: Miscellaneous Packages section646873 -Node: ED648825 -Node: EDITDEF657488 -Node: Outmoded Operations section657993 -Node: Top658209 - -End Tag Table DELETED r36/mkhelp/redhelp.rtf Index: r36/mkhelp/redhelp.rtf ================================================================== --- r36/mkhelp/redhelp.rtf +++ /dev/null @@ -1,37942 +0,0 @@ -{\rtf1\ansi \deff0{\fonttbl{\f0\froman Tms Rmn;} -{\f1\fdecor Symbol;} -{\f2\fswiss Helv;} -{\f3\fmodern pica;} -{\f4\fmodern Courier;} -{\f5\fmodern elite;} -{\f6\fmodern prestige;} -{\f7\fmodern lettergothic;} -{\f8\fmodern gothicPS;} -{\f9\fmodern cubicPS;} -{\f10\fmodern lineprinter;} -{\f11\fswiss Helvetica;} -{\f12\fmodern avantegarde;} -{\f13\fmodern spartan;} -{\f14\fmodern metro;} -{\f15\fmodern presentation;} -{\f16\fmodern APL;} -{\f17\fmodern OCRA;} -{\f18\fmodern OCRB;} -{\f19\froman boldPS;} -{\f20\froman emperorPS;} -{\f21\froman madaleine;} -{\f22\froman zapf humanist;} -{\f23\froman classic;} -{\f24\froman roman f;} -{\f25\froman roman g;} -{\f26\froman roman h;} -{\f27\froman timesroman;} -{\f28\froman century;} -{\f29\froman palantino;} -{\f30\froman souvenir;} -{\f31\froman garamond;} -{\f32\froman caledonia;} -{\f33\froman bodini;} -{\f34\froman university;} -{\f35\fscript Script;} -{\f36\fscript scriptPS;} -{\f37\fscript script c;} -{\f38\fscript script d;} -{\f39\fscript commercial script;} -{\f40\fscript park avenue;} -{\f41\fscript coronet;} -{\f42\fscript script h;} -{\f43\fscript greek;} -{\f44\froman kana;} -{\f45\froman hebrew;} -{\f46\froman roman s;} -{\f47\froman russian;} -{\f48\froman roman u;} -{\f49\froman roman v;} -{\f50\froman roman w;} -{\f51\fdecor narrator;} -{\f52\fdecor emphasis;} -{\f53\fdecor zapf chancery;} -{\f54\fdecor decor d;} -{\f55\fdecor old english;} -{\f56\fdecor decor f;} -{\f57\fdecor decor g;} -{\f58\fdecor cooper black;} -{\f59\fnil linedraw;} -{\f60\fnil math7;} -{\f61\fnil math8;} -{\f62\fnil bar3of9;} -{\f63\fnil EAN;} -{\f64\fnil pcline;} -{\f65\fnil tech h;} -{\f66\fswiss Helvetica-Narrow;} -{\f67\fmodern Modern;} -{\f68\froman Roman;}} - -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; -\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;} -{\stylesheet{\s244 \fs16\up6 \sbasedon0\snext0 footnote reference;} -{\s245 \fs20 \sbasedon0\snext245 footnote text;} -{\s246\li720 \i\fs20 -\sbasedon0\snext255 heading 9;} -{\s247\li720 \i\fs20 \sbasedon0\snext255 heading 8;} -{\s248\li720 \i\fs20 \sbasedon0\snext255 heading 7;} -{\s249\li720 \fs20\ul \sbasedon0\snext255 heading 6;} -{\s250\li720 \b\fs20 \sbasedon0\snext255 heading 5;} -{\s251\li360 -\ul \sbasedon0\snext255 heading 4;} -{\s252\li360 \b \sbasedon0\snext255 heading 3;} -{\s253\sb120 \b\f2 \sbasedon0\snext0 heading 2;} -{\s254\sb240 \b\f2\ul \sbasedon0\snext0 heading 1;} -{\s255\li720 \fs20 \sbasedon0\snext255 Normal Indent;} -{\fs20 -\snext0 Normal;} -{\s2\fi-240\li480\sb80\tx480 \f11 \sbasedon0\snext2 nscba;} -{\s3\fi-240\li240\sa20 \f11 \sbasedon0\snext3 j;} -{\s4\li480\sa20 \f11 \sbasedon0\snext4 ij;} -{\s5\sb80\sa20 \f11 \sbasedon0\snext5 btb;} -{\s6\fi-240\li2400\sb20\sa20 \f11\fs20 -\sbasedon0\snext6 ctcb;} -{\s7\fi-240\li480\sa40\tx480 \f11 \sbasedon0\snext7 ns;} -{\s8\sa120 \f11\fs28 \sbasedon0\snext8 TT;} -{\s9\fi-240\li2400\sa20 \f11 \sbasedon0\snext9 crtj;} -{\s10\fi-240\li480\tx480 \f11 \sbasedon0\snext10 nsca;} -{\s11\sa20 \f11 -\sbasedon0\snext11 bt;} -{\s12\li240\sb120\sa40 \f11 \sbasedon0\snext12 Hf;} -{\s13\li240\sb120\sa40 \f11 \sbasedon0\snext13 Hs;} -{\s14\li480\sb120\sa40 \f11 \sbasedon0\snext14 RT;} -{\s15\fi-2160\li2160\sb240\sa80\tx2160 \f11 \sbasedon0\snext15 c;} -{ -\s16\li2160\sa20 \f11 \sbasedon0\snext16 ct;} -{\s17\li240\sa20 \f11 \sbasedon0\snext17 it;} -{\s18\li480 \f11\fs20 \sbasedon0\snext18 nsct;} -{\s19\fi-160\li400\sb80\sa40 \f11 \sbasedon0\snext19 nscb;} -{\s20\fi-2640\li2880\sb120\sa40\brdrb\brdrs \brdrbtw\brdrs -\tx2880 \f11 \sbasedon0\snext20 HC2;} -{\s21\fi-2640\li2880\sb120\sa20\tx2880 \f11 \sbasedon0\snext21 C2;} -{\s22\fi-240\li2400\sa20 \f11\fs20 \sbasedon0\snext22 ctc;} -{\s23\li2160\sb160 \f11 \sbasedon0\snext23 crt;} -{\s24\li480\sb20\sa40 \f11 -\sbasedon0\snext24 or;}} - -{\info{\author Dan Davids}{\operator Dan Davids}{\creatim\yr2137\mo8\dy7} -{\revtim\yr1990\mo5\dy9\hr16\min54}{\version3}{\edmins3134}{\nofpages0} -{\nofwords65536}{\nofchars69885}{\vern8310}} - -\ftnbj \sectd \linex576\endnhere -\pard\plain \sl240 \fs20 - - - -{\f2 -#{\footnote \pard\plain \sl240 \fs20 # IDENTIFIER} - -${\footnote \pard\plain \sl240 \fs20 $ IDENTIFIER} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0643} - - K{\footnote \pard\plain \sl240 \fs20 K IDENTIFIER type;type} - -}{\b\f2 IDENTIFIER}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -Identifiers in REDUCE consist of one or more alphanumeric characters, of -which the first must be alphabetical. The maximum number of characters -allowed is system dependent, but is usually over 100. However, printing -is simplified if they are kept under 25 characters. -\par -\par -You can also use special characters in your identifiers, but each must be -preceded by an exclamation point }{\f3 !} {\f2 as an escape character. Useful -special characters are }{\f3 # $ % ^ & * - + = ? < > ~ | / !} {\f2 and -the space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore }{\f3 _} {\f2 is special in this regard. It must be preceded -by an escape character in the first position in an identifier, but is -treated like a normal letter within an identifier. -\par -\par -Other characters, such as }{\f3 ( ) # ; ` ' "} {\f2 can also be used if -preceded by a }{\f3 !} {\f2 , but as they have special meanings to the Lisp -reader it is best to avoid them to avoid confusion. -\par -\par -Many system identifiers have * before or after their names, or - between -words. If you accidentally pick one of these names for your own identifier, -it could have disastrous effects. For this reason it is wise not to include -* or - anywhere in your identifiers. -\par -\par -You will notice that REDUCE does not use the escape characters when it prints -identifiers containing special characters; however, you still must use them -when you refer to these identifiers. Be careful when editing statements -containing escaped special characters to treat the character and its escape -as an inseparable pair. -\par -\par -Identifiers are used for variable names, labels for }{\f3 go to} {\f2 statements, -and names of arrays, matrices, operators, and procedures. Once an identifier is -used as a matrix, array, scalar or operator identifier, it may not be used -again as a matrix, array or operator. An operator or array identifier may -later be used as a scalar without problems, but a matrix identifier cannot be -used as a scalar. All procedures are entered into the system as operators, so -the name of a procedure may not be used as a matrix, array, or operator -identifier either. - \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # KERNEL} - -${\footnote \pard\plain \sl240 \fs20 $ KERNEL} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0644} - - K{\footnote \pard\plain \sl240 \fs20 K KERNEL type;type} - -}{\b\f2 KERNEL}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -A }{\f3 kernel} {\f2 is a form that cannot be modified further by the REDUCE -canonical simplifier. Scalar variables are always kernels. The -other important class of kernels are operators with their arguments. -Some examples should help clarify this concept: -\par -\par -\pard \tx3420 }{\f4 \par - Expression Kernel? \par - \par - x Yes \par - varname Yes \par - cos(a) Yes \par - log(sin(x**2)) Yes \par - a*b No \par - (x+y)**4 No \par - matrix-identifier No \par -\pard \sl240 }{\f2 Many REDUCE operators expect kernels among their arguments. Error messages -result from attempts to use non-kernel expressions for these arguments. - \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # STRING} - -${\footnote \pard\plain \sl240 \fs20 $ STRING} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0645} - - K{\footnote \pard\plain \sl240 \fs20 K STRING type;type} - -}{\b\f2 STRING}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -A }{\f3 string} {\f2 is any collection of characters enclosed in double quotation -marks (}{\f3 "} {\f2 ). It may be used as an argument for a variety of commands -and operators, such as }{\f3 in} {\f2 , }{\f3 rederr} {\f2 and }{\f3 write} {\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par -write "this is a string"; \par - \par - this is a string \par - \par - \par -write a, " ", b, " ",c,"!"; \par - \par - A B C! \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g2} - -${\footnote \pard\plain \sl240 \fs20 $ Concepts} - -+{\footnote \pard\plain \sl240 \fs20 + index:0002} -}{\b\f2 Concepts}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb IDENTIFIER type} -{\v\f2 IDENTIFIER}{\f2 \par -}{\f2 \tab}{\f2\uldb KERNEL type} -{\v\f2 KERNEL}{\f2 \par -}{\f2 \tab}{\f2\uldb STRING type} -{\v\f2 STRING}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # assumptions} - -${\footnote \pard\plain \sl240 \fs20 $ assumptions} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0646} - - K{\footnote \pard\plain \sl240 \fs20 K solve;assumptions variable;variable} - -}{\b\f2 ASSUMPTIONS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -After solving a linear or polynomial equation system -with parameters, the variable }{\f3 assumptions} {\f2 contains a list -of side relations for the parameters. The solution is valid only -as long as none of these expression is zero. - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{a*x-b*y+x,y-c\},\{x,y\}); \par - \par - b*c \par - \{\{x=-----,y=c\}\} \par - a + 1 \par - \par - \par -assumptions; \par - \par - \{a + 1\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CARD\_NO} - -${\footnote \pard\plain \sl240 \fs20 $ CARD_NO} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0647} - - K{\footnote \pard\plain \sl240 \fs20 K output;FORTRAN;CARD_NO variable;variable} - -}{\b\f2 CARD\_NO}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -}{\f3 card_no} {\f2 sets the total number of cards allowed in a Fortran -output statement when }{\f3 fort} {\f2 is on. Default is 20. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on fort; \par - \par -card_no := 4; \par - \par - CARD_NO=4. \par - \par - \par -z := (x + y)**15; \par - \par - ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y** \par - . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15 \par - Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ \par - . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+ \par - . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1 \par - \par -\pard \sl240 }{\f2 Twenty total cards means 19 continuation cards. You may set it for more -if your Fortran system allows more. Expressions are broken apart in a -Fortran-compatible way if they extend for more than }{\f3 card_no} {\f2 -continuation cards. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # E} - -${\footnote \pard\plain \sl240 \fs20 $ E} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0648} - - K{\footnote \pard\plain \sl240 \fs20 K E constant;constant} - -}{\b\f2 E}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The constant }{\f3 e} {\f2 is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. -\par -\par -}{\f3 e} {\f2 may be used as an iterative variable in a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement, -or as a local variable or a } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 . If }{\f3 e} {\f2 is defined -as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EVAL\_MODE} - -${\footnote \pard\plain \sl240 \fs20 $ EVAL_MODE} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0649} - - K{\footnote \pard\plain \sl240 \fs20 K symbolic;algebraic;EVAL_MODE variable;variable} - -}{\b\f2 EVAL\_MODE}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The system variable }{\f3 eval_mode} {\f2 contains the current mode, either -} -{\f2\uldb algebraic}{\v\f2 ALGEBRAIC} -{\f2 or } -{\f2\uldb symbolic}{\v\f2 SYMBOLIC} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EVAL\_MODE; \par - \par - ALGEBRAIC \par - \par -\pard \sl240 }{\f2 Some commands do not behave the same way in algebraic and symbolic modes. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FORT\_WIDTH} - -${\footnote \pard\plain \sl240 \fs20 $ FORT_WIDTH} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0650} - - K{\footnote \pard\plain \sl240 \fs20 K FORTRAN;output;FORT_WIDTH variable;variable} - -}{\b\f2 FORT\_WIDTH}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The }{\f3 fort_width} {\f2 variable sets the number of characters in a line of -Fortran-compatible output produced when the } -{\f2\uldb fort}{\v\f2 FORT} -{\f2 switch is on. -Default is 70. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -fort_width := 30; \par - \par - FORT_WIDTH := 30 \par - \par - \par -on fort; \par - \par -df(sin(x**3*y),x); \par - \par - ANS=3.*COS(X \par - . **3*Y)*X**2* \par - . Y \par - \par -\pard \sl240 }{\f2 }{\f3 fort_width} {\f2 includes the usually blank characters at the beginning -of the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HIGH\_POW} - -${\footnote \pard\plain \sl240 \fs20 $ HIGH_POW} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0651} - - K{\footnote \pard\plain \sl240 \fs20 K degree;polynomial;HIGH_POW variable;variable} - -}{\b\f2 HIGH\_POW}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The variable }{\f3 high_pow} {\f2 is set by } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -coeff((x+1)^5*(x*(y+3)^2)^2,x); \par - \par - \{0, \par - 0, \par - 4 3 2 \par - Y + 12*Y + 54*Y + 108*Y + 81, \par - 4 3 2 \par - 5*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 10*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 10*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 5*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - Y + 12*Y + 54*Y + 108*Y + 81\} \par - \par - \par -high_pow; \par - \par - 7 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # I} - -${\footnote \pard\plain \sl240 \fs20 $ I} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0652} - - K{\footnote \pard\plain \sl240 \fs20 K complex;I constant;constant} - -}{\b\f2 I}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - - \par -\par -REDUCE knows }{\f3 i} {\f2 is the square root of -1, - and that i^2 = -1. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(a + b*i)*(c + d*i); \par - \par - A*C + A*D*I + B*C*I - B*D \par - \par - \par -i**2; \par - \par - -1 \par - \par -\pard \sl240 }{\f2 }{\f3 i} {\f2 cannot be used as an identifier. It is all right to use }{\f3 i} {\f2 -as an index variable in a }{\f3 for} {\f2 loop, or as a local (}{\f3 scalar} {\f2 ) -variable inside a }{\f3 begin...end} {\f2 block, but it loses its definition as -the square root of -1 inside the block in that case. -\par -\par -Only the simplest properties of i are known by REDUCE unless -the switch } -{\f2\uldb complex}{\v\f2 COMPLEX} -{\f2 is turned on, which implements full complex -arithmetic in factoring, simplification, and functional values. -}{\f3 complex} {\f2 is ordinarily off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INFINITY} - -${\footnote \pard\plain \sl240 \fs20 $ INFINITY} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0653} - - K{\footnote \pard\plain \sl240 \fs20 K INFINITY constant;constant} - -}{\b\f2 INFINITY}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The name }{\f3 infinity} {\f2 is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator reflects -finite arithmetic, rather than true operations on infinity. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LOW\_POW} - -${\footnote \pard\plain \sl240 \fs20 $ LOW_POW} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0654} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;degree;LOW_POW variable;variable} - -}{\b\f2 LOW\_POW}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The variable }{\f3 low_pow} {\f2 is set by } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -coeff((x+2*y)**6,y); \par - \par - 6 \par - \{X , \par - 5 \par - 12*X , \par - 4 \par - 60*X , \par - 3 \par - 160*X , \par - 2 \par - 240*X , \par - 192*X, \par - 64\} \par - \par - \par -low_pow; \par - \par - 0 \par - \par - \par -coeff(x**2*(x*sin(y) + 1),x); \par - \par - \par - \par - \{0,0,1,SIN(Y)\} \par - \par - \par -low_pow; \par - \par - 2 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NIL} - -${\footnote \pard\plain \sl240 \fs20 $ NIL} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0655} - - K{\footnote \pard\plain \sl240 \fs20 K false;NIL constant;constant} - -}{\b\f2 NIL}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - - \par -\par -}{\f3 nil} {\f2 represents the truth value false in symbolic mode, and is -a synonym for 0 in algebraic mode. It cannot be used for any other -purpose, even inside procedures or } -{\f2\uldb for}{\v\f2 FOR} -{\f2 loops. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PI} - -${\footnote \pard\plain \sl240 \fs20 $ PI} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0656} - - K{\footnote \pard\plain \sl240 \fs20 K PI constant;constant} - -}{\b\f2 PI}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The identifier }{\f3 pi} {\f2 is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. -\par -\par -}{\f3 pi} {\f2 may be used as a looping variable in a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement, -or as a local variable in a } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 . Its value in such cases -will be taken from the local environment. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # requirements} - -${\footnote \pard\plain \sl240 \fs20 $ requirements} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0657} - - K{\footnote \pard\plain \sl240 \fs20 K solve;requirements variable;variable} - -}{\b\f2 REQUIREMENTS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -After an attempt to solve an inconsistent equation system -with parameters, the variable }{\f3 requirements} {\f2 contains a list -of expressions. These expressions define a set of conditions implicitly -equated with zero. Any solution to this system defines a setting for -the parameters sufficient to make the original system consistent. - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{x-a,x-y,y-1\},\{x,y\}); \par - \par - \{\} \par - \par - \par -requirements; \par - \par - \{a - 1\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOT\_MULTIPLICITIES} - -${\footnote \pard\plain \sl240 \fs20 $ ROOT_MULTIPLICITIES} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0658} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;root;ROOT_MULTIPLICITIES variable;variable} - -}{\b\f2 ROOT\_MULTIPLICITIES}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The }{\f3 root_multiplicities} {\f2 variable is set to the list of the -multiplicities of the roots of an equation by the } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 operator. -\par -\par -} -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 returns its solutions in a list. The multiplicities of -each solution are put in the corresponding locations of the list -}{\f3 root_multiplicities} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # T} - -${\footnote \pard\plain \sl240 \fs20 $ T} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0659} - - K{\footnote \pard\plain \sl240 \fs20 K T constant;constant} - -}{\b\f2 T}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The constant }{\f3 t} {\f2 stands for the truth value true. It cannot be used -as a scalar variable in a } -{\f2\uldb block}{\v\f2 block} -{\f2 , as a looping variable in a -} -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement or as an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 name. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g3} - -${\footnote \pard\plain \sl240 \fs20 $ Variables} - -+{\footnote \pard\plain \sl240 \fs20 + index:0003} -}{\b\f2 Variables}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb assumptions variable} -{\v\f2 assumptions}{\f2 \par -}{\f2 \tab}{\f2\uldb CARD\_NO variable} -{\v\f2 CARD\_NO}{\f2 \par -}{\f2 \tab}{\f2\uldb E constant} -{\v\f2 E}{\f2 \par -}{\f2 \tab}{\f2\uldb EVAL\_MODE variable} -{\v\f2 EVAL\_MODE}{\f2 \par -}{\f2 \tab}{\f2\uldb FORT\_WIDTH variable} -{\v\f2 FORT\_WIDTH}{\f2 \par -}{\f2 \tab}{\f2\uldb HIGH\_POW variable} -{\v\f2 HIGH\_POW}{\f2 \par -}{\f2 \tab}{\f2\uldb I constant} -{\v\f2 I}{\f2 \par -}{\f2 \tab}{\f2\uldb INFINITY constant} -{\v\f2 INFINITY}{\f2 \par -}{\f2 \tab}{\f2\uldb LOW\_POW variable} -{\v\f2 LOW\_POW}{\f2 \par -}{\f2 \tab}{\f2\uldb NIL constant} -{\v\f2 NIL}{\f2 \par -}{\f2 \tab}{\f2\uldb PI constant} -{\v\f2 PI}{\f2 \par -}{\f2 \tab}{\f2\uldb requirements variable} -{\v\f2 requirements}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOT\_MULTIPLICITIES variable} -{\v\f2 ROOT\_MULTIPLICITIES}{\f2 \par -}{\f2 \tab}{\f2\uldb T constant} -{\v\f2 T}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # semicolon} - -${\footnote \pard\plain \sl240 \fs20 $ semicolon} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0660} - - K{\footnote \pard\plain \sl240 \fs20 K semicolon command;command} - -}{\b\f2 ;}{\f2 \tab }{\b\f2 SEMICOLON}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The semicolon is a statement delimiter, indicating results are to be printed -when used in interactive mode. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x+1)**2; \par - \par - 2 \par - X + 2*X + 1 \par - \par - \par -df(x**2 + 1,x); \par - \par - 2*X \par - \par -\pard \sl240 }{\f2 Entering a }{\f3 Return} {\f2 without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can be -added at this point to execute the statement. In interactive mode, a -statement that is ended with a semicolon and }{\f3 Return} {\f2 has its results -printed on the screen. -\par -\par -Inside a group statement }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 -or a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block, a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a block without a specific }{\f3 return} {\f2 -statement, there is no difference between using the semicolon or dollar -sign. In a group statement, the last value produced is the value -returned by the group statement. Thus, if a semicolon or dollar sign is -placed between the last statement and the ending brackets, the group -statement returns the value 0 or nil, rather than the value of the -last statement. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # dollar} - -${\footnote \pard\plain \sl240 \fs20 $ dollar} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0661} - - K{\footnote \pard\plain \sl240 \fs20 K dollar command;command} - -}{\b\f2 $}{\f2 \tab }{\b\f2 DOLLAR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The dollar sign is a statement delimiter, indicating results are not to be -printed when used in interactive mode. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -(x+1)**2$ \pard \sl240 }{\f2 The workspace is set to }{\f4 x^2 + 2x + 1}{\f2 - but nothing shows on the screen}{\f4 \pard \tx3420 \par - \par - \par -ws; \par - \par - 2 \par - X + 2*X + 1 \par - \par -\pard \sl240 }{\f2 -\par -\par -Entering a }{\f3 Return} {\f2 without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can -be added at this point to execute the statement. In interactive mode, a -statement that ends with a dollar sign }{\f3 $} {\f2 and a }{\f3 Return} {\f2 is -executed, but the results not printed. -\par -\par -Inside a } -{\f2\uldb group}{\v\f2 group} -{\f2 statement }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 -or a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a } -{\f2\uldb block}{\v\f2 block} -{\f2 without a specific -} -{\f2\uldb return}{\v\f2 RETURN} -{\f2 \par -\par -statement, there is no difference between using the semicolon or dollar -sign. -\par -\par -In a group statement, the last value produced is the value returned by the -group statement. Thus, if a semicolon or dollar sign is placed between the -last statement and the ending brackets, the group statement returns the -value 0 or nil, rather than the value of the last statement. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # percent} - -${\footnote \pard\plain \sl240 \fs20 $ percent} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0662} - - K{\footnote \pard\plain \sl240 \fs20 K percent command;command} - -}{\b\f2 %}{\f2 \tab }{\b\f2 PERCENT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The percent sign is used to precede comments; everything from a percent -to the end of the line is ignored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -df(x**3 + y,x);\% This is a comment \key\{Return\} \par - \par - \par - 2 \par - 3*X \par - \par - \par -int(3*x**2,x) \%This is a comment; \key\{Return\} \par -\pard \sl240 }{\f2 A prompt is given, waiting for the semicolon that was not -detected in the comment}{\f4 \pard \tx3420 \pard \sl240 }{\f2 -\par -\par -Statement delimiters }{\f3 ;} {\f2 and }{\f3 $} {\f2 are not detected between a -percent sign and the end of the line. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # dot} - -${\footnote \pard\plain \sl240 \fs20 $ dot} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0663} - - K{\footnote \pard\plain \sl240 \fs20 K list;dot operator;operator} - -}{\b\f2 .}{\f2 \tab }{\b\f2 DOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The . (dot) infix binary operator adds a new item to the beginning of an -existing } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . In high energy physics expressions, -it can also be used -to represent the scalar product of two Lorentz four-vectors. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 .} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression, including a list; - must be a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 to avoid producing an error message. -The dot operator is right associative. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -liss := a . \{\}; \par - \par - LISS := \{A\} \par - \par - \par -liss := b . liss; \par - \par - LISS := \{B,A\} \par - \par - \par -newliss := liss . liss; \par - \par - NEWLISS := \{\{B,A\},B,A\} \par - \par - \par -firstlis := a . b . \{c\}; \par - \par - FIRSTLIS := \{A,B,C\} \par - \par - \par -secondlis := x . y . \{z\}; \par - \par - SECONDLIS := \{X,Y,Z\} \par - \par - \par -for i := 1:3 sum part(firstlis,i)*part(secondlis,i); \par - \par - \par - \par - A*X + B*Y + C*Z \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # assign} - -${\footnote \pard\plain \sl240 \fs20 $ assign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0664} - - K{\footnote \pard\plain \sl240 \fs20 K assign;assign operator;operator} - -}{\b\f2 :=}{\f2 \tab }{\b\f2 ASSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 :=} {\f2 is the assignment operator, assigning the value on the right-hand -side to the identifier or other valid expression on the left-hand side. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 :=} {\f4 -\par -\par -}{\f2 \par - is ordinarily a single identifier, though simple -expressions may be used (see Comments below). is any -valid REDUCE expression. If is a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 -identifier, then - can be a matrix identifier (redimensioned if -necessary) which has each element set to the corresponding elements -of the identifier on the right-hand side. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := x**2 + 1; \par - \par - 2 \par - A := X + 1 \par - \par - \par -a; \par - \par - 2 \par - X + 1 \par - \par - \par -first := second := third; \par - \par - FIRST := SECOND := THIRD \par - \par - \par -first; \par - \par - THIRD \par - \par - \par -second; \par - \par - THIRD \par - \par - \par -b := for i := 1:5 product i; \par - \par - B := 120 \par - \par - \par -b; \par - \par - 120 \par - \par - \par -w + (c := x + 3) + z; \par - \par - W + X + Z + 3 \par - \par - \par -c; \par - \par - X + 3 \par - \par - \par -y + b := c; \par - \par - Y + B := C \par - \par - \par -y; \par - \par - - (B - C) \par - \par -\pard \sl240 }{\f2 The assignment operator is right associative, as shown in the second and -third examples. A string of such assignments has all but the last -item set to the value of the last item. Embedding an assignment statement -in another expression has the side effect of making the assignment, as well -as causing the given replacement in the expression. -\par -\par -Assignments of values to expressions rather than simple identifiers (such as in -the last example above) can also be done, subject to the following remarks: -\par -\par -\tab (i) -If the left-hand side is an identifier, an operator, or a power, the -substitution rule is added to the rule table. -\par -\par -\tab (ii) -If the operators }{\f3 - + /} {\f2 appear on the left-hand side, all but the first -term of the expression is moved to the right-hand side. -\par -\par -\tab (iii) -If the operator }{\f3 *} {\f2 appears on the left-hand side, any constant terms are -moved to the right-hand side, but the symbolic factors remain. -\par -\par -Assignment is valid for } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 elements, but not for entire arrays. -The assignment operator can also be used to attach functionality to operators. -\par -\par -A recursive construction such as }{\f3 a := a + b} {\f2 is allowed, but when -}{\f3 a} {\f2 is referenced again, the process of resubstitution continues -until the expression stack overflows (you get an error message). -Recursive assignments can be done safely inside controlled loop -expressions, such as } -{\f2\uldb for}{\v\f2 FOR} -{\f2 ... or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # equalsign} - -${\footnote \pard\plain \sl240 \fs20 $ equalsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0665} - - K{\footnote \pard\plain \sl240 \fs20 K equalsign operator;operator} - -}{\b\f2 =}{\f2 \tab }{\b\f2 EQUALSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 =} {\f2 operator is a prefix or infix equality comparison operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 =} {\f4 (}{\f3 ,} {\f4 ) - or - }{\f3 =} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 4; \par - \par - A := 4 \par - \par - \par -if =(a,10) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par - \par -b := c; \par - \par - B := C \par - \par - \par -if b = c then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -on rounded; \par - \par -if 4.0 = 4 then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par -\pard \sl240 }{\f2 This logical equality operator can only be used inside a conditional -statement, such as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . In other places the equal -sign establishes an algebraic object of type } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # replace} - -${\footnote \pard\plain \sl240 \fs20 $ replace} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0666} - - K{\footnote \pard\plain \sl240 \fs20 K replace operator;operator} - -}{\b\f2 =>}{\f2 \tab }{\b\f2 REPLACE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -The }{\f3 =>} {\f2 operator is a binary operator used in } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 lists to -denote replacements. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -let f(x) => x^2; \par - \par -f(x); \par - \par - 2 \par - x \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # plussign} - -${\footnote \pard\plain \sl240 \fs20 $ plussign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0667} - - K{\footnote \pard\plain \sl240 \fs20 K plussign operator;operator} - -}{\b\f2 +}{\f2 \tab }{\b\f2 PLUSSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 +} {\f2 operator is a prefix or infix n-ary addition operator. -\par -\par - \par -syntax: \par -}{\f4 \{}{\f3 +} {\f4 \}+ -\par -\par -or }{\f3 +} {\f4 ( \{,\}+) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**4 + 4*x**2 + 17*x + 1; \par - \par - 4 2 \par - X + 4*X + 17*X + 1 \par - \par - \par -14 + 15 + x; \par - \par - X + 29 \par - \par - \par -+(1,2,3,4,5); \par - \par - 15 \par - \par -\pard \sl240 }{\f2 }{\f3 +} {\f2 is also valid as an addition operator for } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 variables -that are of the same dimensions and for } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # minussign} - -${\footnote \pard\plain \sl240 \fs20 $ minussign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0668} - - K{\footnote \pard\plain \sl240 \fs20 K minussign operator;operator} - -}{\b\f2 -}{\f2 \tab }{\b\f2 MINUSSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 -} {\f2 operator is a prefix or infix binary subtraction operator, as well -as the unary minus operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 -} {\f4 -or }{\f3 -} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -15 - 4; \par - \par - 11 \par - \par - \par -x*(-5); \par - \par - - 5*X \par - \par - \par -a - b - 15; \par - \par - A - B - 15 \par - \par - \par --(a,4); \par - \par - A - 4 \par - \par -\pard \sl240 }{\f2 The subtraction operator is left associative, so that a - b - c is equivalent -to (a - b) - c, as shown in the third example. The subtraction operator is -also valid with } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions of the correct dimensions -and with } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # asterisk} - -${\footnote \pard\plain \sl240 \fs20 $ asterisk} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0669} - - K{\footnote \pard\plain \sl240 \fs20 K asterisk operator;operator} - -}{\b\f2 *}{\f2 \tab }{\b\f2 ASTERISK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 *} {\f2 operator is a prefix or infix n-ary multiplication operator. -\par -\par - \par -syntax: \par -}{\f4 \{}{\f3 *} {\f4 \}+ -\par -\par -or }{\f3 *} {\f4 ( \{,\}+) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -15*3; \par - \par - 45 \par - \par - \par -24*x*yvalue*2; \par - \par - 48*X*YVALUE \par - \par - \par -*(6,x); \par - \par - 6*X \par - \par - \par -on rounded; \par - \par -3*1.5*x*x*x; \par - \par - 3 \par - 4.5*X \par - \par - \par -off rounded; \par - \par -2x**2; \par - \par - 2 \par - 2*X \par - \par -\pard \sl240 }{\f2 REDUCE assumes you are using an implicit multiplication operator when an -identifier is preceded by a number, as shown in the last line above. Since -no valid identifiers can begin with numbers, there is no ambiguity in -making this assumption. -\par -\par -The multiplication operator is also valid with } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions -of the -proper dimensions: matrices A and B -can be multiplied if -A is n x m and B is -m x p. Matrices and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s can also be -multiplied by scalars: the -result is as if each element was multiplied by the scalar. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # slash} - -${\footnote \pard\plain \sl240 \fs20 $ slash} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0670} - - K{\footnote \pard\plain \sl240 \fs20 K slash operator;operator} - -}{\b\f2 /}{\f2 \tab }{\b\f2 SLASH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 /} {\f2 operator is a prefix or infix binary division operator or -prefix unary } -{\f2\uldb recip}{\v\f2 RECIP} -{\f2 rocal operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 /} {\f4 or - }{\f3 /} {\f4 -\par -\par -or }{\f3 /} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -20/5; \par - \par - 4 \par - \par - \par -100/6; \par - \par - 50 \par - -- \par - 3 \par - \par - \par -16/2/x; \par - \par - 8 \par - - \par - X \par - \par - \par -/b; \par - \par - 1 \par - - \par - B \par - \par - \par -/(y,5); \par - \par - Y \par - - \par - 5 \par - \par - \par -on rounded; \par - \par -35/4; \par - \par - 8.75 \par - \par - \par -/20; \par - \par - 0.05 \par - \par -\pard \sl240 }{\f2 The division operator is left associative, so that }{\f3 a/b/c} {\f2 is equivalent -to }{\f3 (a/b)/c} {\f2 . The division operator is also valid with square -} -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions of the same dimensions: With A and -B both n x n matrices and B -invertible, A/B is -given by A*B^-1. -Division of a matrix by a scalar is defined, with the results being the -division of each element of the matrix by the scalar. Division of a -scalar by a matrix is defined if the matrix is invertible, and has the -effect of multiplying the scalar by the inverse of the matrix. When -}{\f3 /} {\f2 is used as a reciprocal operator for a matrix, the inverse of -the matrix is returned if it exists. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # power} - -${\footnote \pard\plain \sl240 \fs20 $ power} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0671} - - K{\footnote \pard\plain \sl240 \fs20 K power operator;operator} - -}{\b\f2 **}{\f2 \tab }{\b\f2 POWER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 **} {\f2 operator is a prefix or infix binary exponentiation operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 **} {\f4 - or }{\f3 **} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**15; \par - \par - 15 \par - X \par - \par - \par -x**y**z; \par - \par - Y*Z \par - X \par - \par - \par -x**(y**z); \par - \par - Z \par - Y \par - X \par - \par - \par - **(y,4); \par - \par - 4 \par - Y \par - \par - \par -on rounded; \par - \par -2**pi; \par - \par - 8.82497782708 \par - \par -\pard \sl240 }{\f2 The exponentiation operator is left associative, so that }{\f3 a**b**c} {\f2 is -equivalent to }{\f3 (a**b)**c} {\f2 , as shown in the second example. Note -that this is not }{\f3 a**(b**c)} {\f2 , which would be right associative. -\par -\par -When } -{\f2\uldb nat}{\v\f2 NAT} -{\f2 is on (the default), REDUCE output produces raised -exponents, as shown. The symbol }{\f3 ^} {\f2 , which is the upper-case 6 on -most keyboards, may be used in the place of }{\f3 **} {\f2 . -\par -\par -A square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 may also be raised to positive and negative powers -with the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s may be raised to -fractional and floating-point powers. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # caret} - -${\footnote \pard\plain \sl240 \fs20 $ caret} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0672} - - K{\footnote \pard\plain \sl240 \fs20 K caret operator;operator} - -}{\b\f2 ^}{\f2 \tab }{\b\f2 CARET}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ^} {\f2 operator is a prefix or infix binary exponentiation operator. -It is equivalent to } -{\f2\uldb power}{\v\f2 power} -{\f2 or **. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ^} {\f4 - or }{\f3 ^} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x^15; \par - \par - 15 \par - X \par - \par - \par -x^y^z; \par - \par - Y*Z \par - X \par - \par - \par -x^(y^z); \par - \par - Z \par - Y \par - X \par - \par - \par -^(y,4); \par - \par - 4 \par - Y \par - \par - \par -on rounded; \par - \par -2^pi; \par - \par - 8.82497782708 \par - \par -\pard \sl240 }{\f2 The exponentiation operator is left associative, so that }{\f3 a^b^c} {\f2 is -equivalent to }{\f3 (a^b)^c} {\f2 , as shown in the second example. Note -that this is }{\f3 a^(b^c)} {\f2 , which would be right associative. -\par -\par -When } -{\f2\uldb nat}{\v\f2 NAT} -{\f2 is on (the default), REDUCE output produces raised -exponents, as shown. -\par -\par -A square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 may also be raised to positive -and negative powers with -the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s -may be raised to fractional and floating-point powers. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # geqsign} - -${\footnote \pard\plain \sl240 \fs20 $ geqsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0673} - - K{\footnote \pard\plain \sl240 \fs20 K geqsign operator;operator} - -}{\b\f2 >=}{\f2 \tab }{\b\f2 GEQSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 >=} {\f2 is an infix binary comparison operator, which returns true if -its first argument is greater than or equal to its second argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 >=} {\f4 -\par -\par -}{\f2 \par - must evaluate to an integer or floating-point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if (3 >= 2) then yes; \par - \par - yes \par - \par - \par -a := 15; \par - \par - A := 15 \par - \par - \par -if a >= 20 then big else small; \par - \par - \par - small \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # greater} - -${\footnote \pard\plain \sl240 \fs20 $ greater} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0674} - - K{\footnote \pard\plain \sl240 \fs20 K greater operator;operator} - -}{\b\f2 >}{\f2 \tab }{\b\f2 GREATER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 >} {\f2 is an infix binary comparison operator that returns - true if its first argument is strictly greater than its second. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 >} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -if 3.0 > 3 then write "different" else write "same"; \par - \par - \par - same \par - \par - \par -off rounded; \par - \par -a := 20; \par - \par - A := 20 \par - \par - \par -if a > 20 then write "bigger" else write "not bigger"; \par - \par - \par - not bigger \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # leqsign} - -${\footnote \pard\plain \sl240 \fs20 $ leqsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0675} - - K{\footnote \pard\plain \sl240 \fs20 K leqsign operator;operator} - -}{\b\f2 <=}{\f2 \tab }{\b\f2 LEQSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 <=} {\f2 is an infix binary comparison operator that returns - true if its first argument is less than or equal to its second argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <=} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 10; \par - \par - A := 10 \par - \par - \par -if a <= 10 then true; \par - \par - true \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # less} - -${\footnote \pard\plain \sl240 \fs20 $ less} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0676} - - K{\footnote \pard\plain \sl240 \fs20 K less operator;operator} - -}{\b\f2 <}{\f2 \tab }{\b\f2 LESS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 <} {\f2 is an infix binary logical comparison operator that -returns true if its first argument is strictly less than its second -argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -f := -3; \par - \par - F := -3 \par - \par - \par -if f < -3 then write "yes" else write "no"; \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # tilde} - -${\footnote \pard\plain \sl240 \fs20 $ tilde} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0677} - - K{\footnote \pard\plain \sl240 \fs20 K tilde operator;operator} - -}{\b\f2 ~}{\f2 \tab }{\b\f2 TILDE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ~} {\f2 is used as a unary prefix operator in the left-hand -sides of } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 s to mark } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 s. A double tilde -marks an optional } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # group} - -${\footnote \pard\plain \sl240 \fs20 $ group} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0678} - - K{\footnote \pard\plain \sl240 \fs20 K group command;command} - -}{\b\f2 <<}{\f2 \tab }{\b\f2 GROUP}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 command is a group statement, -used to group statements -together where REDUCE expects a single statement. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <<} {\f4 \{; }{\f3 or} {\f4 - }{\f2 \}* }{\f3 >>} {\f2 -\par -\par -\par - may be any valid REDUCE statement or expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 2; \par - \par - A := 2 \par - \par - \par -if a < 5 then <>; \par - \par - \par - 12 \par - \par - \par -<>; \par - \par - \par - 2 \par - C + 90*C + 202 \par - ---------------- \par - 225 \par - \par -\pard \sl240 }{\f2 The value returned from a group statement is the value of the last -individual statement executed inside it. Note that when a semicolon is -placed between the last statement and the closing brackets, 0 or - nil is returned. Group statements are often used in the -consequence portions of } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 , -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 , and -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 -clauses. They may also be used in interactive -operation to execute several statements at one time. Statements inside -the group statement are separated by semicolons or dollar signs. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # AND} - -${\footnote \pard\plain \sl240 \fs20 $ AND} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0679} - - K{\footnote \pard\plain \sl240 \fs20 K AND operator;operator} - -}{\b\f2 AND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 and} {\f2 binary logical operator returns true if both of its -arguments are true. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 and} {\f4 -\par -\par -}{\f2 \par - must evaluate to true or nil. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 12; \par - \par - A := 12 \par - \par - \par -if numberp a and a < 15 then write a**2 else write "no"; \par - \par - \par - \par - 144 \par - \par - \par -clear a; \par - \par -if numberp a and a < 15 then write a**2 else write "no"; \par - \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 Logical operators can only be used inside conditional statements, such as -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 or -} -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 . }{\f3 and} {\f2 examines each of -its arguments in order, and quits, returning nil, on finding an -argument that is not true. An error results if it is used in other -contexts. -\par -\par -}{\f3 and} {\f2 is left associative: }{\f3 x and y and z} {\f2 is equivalent to -}{\f3 (x and y) and z} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BEGIN} - -${\footnote \pard\plain \sl240 \fs20 $ BEGIN} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0680} - - K{\footnote \pard\plain \sl240 \fs20 K BEGIN command;command} - -}{\b\f2 BEGIN}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -}{\f3 begin} {\f2 is used to start a } -{\f2\uldb block}{\v\f2 block} -{\f2 statement, which is closed with -}{\f3 end} {\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 begin} {\f4 \{}{\f3 ;} {\f4 \}* }{\f3 end} {\f4 -\par -\par -}{\f2 \par - is any valid REDUCE statement. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -begin for i := 1:3 do write i end; \par - \par - \par - 1 \par - 2 \par - 3 \par - \par - \par -begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end; \par - \par - \par - \par - 1 \par - \par - \par -b; \par - \par - 4 3 2 \par - X - 10*X + 35*X - 50*X + 24 \par - \par -\pard \sl240 }{\f2 A }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block can do actions (such as }{\f3 write} {\f2 ), but -does not -return a value unless instructed to by a } -{\f2\uldb return}{\v\f2 RETURN} -{\f2 statement, which must -be the last statement executed in the block. It is unnecessary to insert -a semicolon before the }{\f3 end} {\f2 . -\par -\par -Local variables, if any, are declared in the first statement immediately -after }{\f3 begin} {\f2 , and may be defined as }{\f3 scalar, integer,} {\f2 or -}{\f3 real} {\f2 . } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 variables declared -within a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block -are global in every case, and } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements have global -effects. A } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement involving a formal parameter affects -the calling parameter that corresponds to it. } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements -involving local variables make global assignments, overwriting outside -variables by the same name or creating them if they do not exist. You -can use this feature to affect global variables from procedures, but be -careful that you do not do it inadvertently. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # block} - -${\footnote \pard\plain \sl240 \fs20 $ block} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0681} - - K{\footnote \pard\plain \sl240 \fs20 K block command;command} - -}{\b\f2 BLOCK}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -A }{\f3 block} {\f2 is a sequence of statements enclosed by -commands } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 and } -{\f2\uldb end}{\v\f2 END} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 begin} {\f4 \{}{\f3 ;} {\f4 \}* }{\f3 end} {\f4 -\par -\par -}{\f2 \par -For more details see } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMMENT} - -${\footnote \pard\plain \sl240 \fs20 $ COMMENT} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0682} - - K{\footnote \pard\plain \sl240 \fs20 K COMMENT command;command} - -}{\b\f2 COMMENT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -Beginning with the word }{\f3 comment} {\f2 , all text until the next statement -terminator (}{\f3 ;} {\f2 or }{\f3 $} {\f2 ) is ignored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -x := a**2 comment--a is the velocity of the particle;; \par - \par - \par - \par - 2 \par - X := A \par - \par -\pard \sl240 }{\f2 Note that the first semicolon ends the comment and the second one -terminates the original REDUCE statement. -\par -\par -Multiple-line comments are often needed in interactive files. The -}{\f3 comment} {\f2 command allows a normal-looking text to accompany the -REDUCE statements in the file. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONS} - -${\footnote \pard\plain \sl240 \fs20 $ CONS} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0683} - - K{\footnote \pard\plain \sl240 \fs20 K CONS operator;operator} - -}{\b\f2 CONS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 cons} {\f2 operator adds a new element to the beginning of a -} -{\f2\uldb list}{\v\f2 LIST} -{\f2 . Its -operation is identical to the symbol } -{\f2\uldb dot}{\v\f2 dot} -{\f2 (dot). It can be used -infix or prefix. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cons} {\f4 (,) or }{\f3 cons} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression, including a list; -must be a list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -liss := cons(a,\{b\}); \par - \par - \{A,B\} \par - \par - \par - \par -liss := c cons liss; \par - \par - \{C,A,B\} \par - \par - \par - \par -newliss := for each y in liss collect cons(y,list x); \par - \par - \par - \par - NEWLISS := \{\{C,X\},\{A,X\},\{B,X\}\} \par - \par - \par - \par -for each y in newliss sum (first y)*(second y); \par - \par - \par - \par - X*(A + B + C) \par - \par -\pard \sl240 }{\f2 If you want to use }{\f3 cons} {\f2 to put together two elements into a new list, -you must make the second one into a list with curly brackets or the }{\f3 list} {\f2 -command. You can also start with an empty list created by }{\f3 \{\}} {\f2 . -\par -\par -The }{\f3 cons} {\f2 operator is right associative: }{\f3 a cons b cons c} {\f2 is valid -if }{\f3 c} {\f2 is a list; }{\f3 b} {\f2 need not be a list. The list produced is -}{\f3 \{a,b,c\}} {\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # END} - -${\footnote \pard\plain \sl240 \fs20 $ END} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0684} - - K{\footnote \pard\plain \sl240 \fs20 K END command;command} - -}{\b\f2 END}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The command }{\f3 end} {\f2 has two main uses: -\par -\par -\tab (i) -as the ending of a } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 ; and -\par -\tab (ii) -to end input from a file. -\par -\par -In a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , there need not be a delimiter -(}{\f3 ;} {\f2 or }{\f3 $} {\f2 ) before the }{\f3 end} {\f2 , though there must be one -after it, or a right bracket matching an earlier left bracket. -\par -\par -Files to be read into REDUCE should end with }{\f3 end;} {\f2 , which must be -preceded by a semicolon (usually the last character of the previous line). -The additional semicolon avoids problems with mistakes in the files. If -you have suspended file operation by answering }{\f3 n} {\f2 to a }{\f3 pause} {\f2 -command, you are still, technically speaking, ``in" the file. Use -}{\f3 end} {\f2 to exit the file. -\par -\par -An }{\f3 end} {\f2 at the top level of a program is ignored. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EQUATION} - -${\footnote \pard\plain \sl240 \fs20 $ EQUATION} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0685} - - K{\footnote \pard\plain \sl240 \fs20 K =;arithmetic;equal;equation;EQUATION type;type} - -}{\b\f2 EQUATION}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - - \par -\par -An }{\f3 equation} {\f2 is an expression where two algebraic expressions -are connected by the (infix) operator } -{\f2\uldb equal}{\v\f2 EQUAL} -{\f2 or by }{\f3 =} {\f2 . -For access to the components of an }{\f3 equation} {\f2 the operators -} -{\f2\uldb lhs}{\v\f2 LHS} -{\f2 , } -{\f2\uldb rhs}{\v\f2 RHS} -{\f2 or } -{\f2\uldb part}{\v\f2 PART} -{\f2 can be used. The -evaluation of the left-hand side of an }{\f3 equation} {\f2 is controlled -by the switch } -{\f2\uldb evallhseqp}{\v\f2 EVALLHSEQP} -{\f2 , while the right-hand side is -evaluated unconditionally. When an }{\f3 equation} {\f2 is part of a -logical expression, e.g. in a } -{\f2\uldb if}{\v\f2 IF} -{\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 statement, -the equation is evaluated by subtracting both sides can comparing -the result with zero. -\par -\par -Equations occur in many contexts, e.g. as arguments of the } -{\f2\uldb sub}{\v\f2 SUB} -{\f2 -operator and in the arguments and the results -of the operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 . An equation can be member of a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -and you may assign an equation to a variable. Elementary arithmetic is supported -for equations: if } -{\f2\uldb evallhseqp}{\v\f2 EVALLHSEQP} -{\f2 is on, you may add and subtract -equations, and you can combine an equation with a scalar expression by -addition, subtraction, multiplication, division and raise an equation -to a power. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on evallhseqp; \par - \par -u:=x+y=1$ \par - \par -v:=2x-y=0$ \par - \par -2*u-v; \par - \par - - 3*y=-2 \par - \par - \par -ws/3; \par - \par - 2 \par - y=-- \par - 3 \par - \par -\pard \sl240 }{\f2 \par -\par -Important: the equation must occur in the leftmost term of such an expression. -For other operations, e.g. taking function values of both sides, use the -} -{\f2\uldb map}{\v\f2 MAP} -{\f2 operator. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FIRST} - -${\footnote \pard\plain \sl240 \fs20 $ FIRST} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0686} - - K{\footnote \pard\plain \sl240 \fs20 K decomposition;list;FIRST operator;operator} - -}{\b\f2 FIRST}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 first} {\f2 operator returns the first element of a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 first} {\f4 () or }{\f3 first} {\f4 -\par -\par -}{\f2 \par - must be a non-empty list to avoid an error message. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -alist := \{a,b,c,d\}; \par - \par - ALIST := \{A,B,C,D\} \par - \par - \par -first alist; \par - \par - A \par - \par - \par -blist := \{x,y,\{ww,aa,qq\},z\}; \par - \par - BLIST := \{X,Y,\{WW,AA,QQ\},Z\} \par - \par - \par -first third blist; \par - \par - WW \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FOR} - -${\footnote \pard\plain \sl240 \fs20 $ FOR} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0687} - - K{\footnote \pard\plain \sl240 \fs20 K loop;FOR command;command} - -}{\b\f2 FOR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 for} {\f2 command is used for iterative loops. There are many -possible forms it can take. -\par -\par -\pard \tx3420 }{\f4 \par - / \ \par - / |STEP UNTIL| \ \par - |:=| || \par -FOR| | : | | \par - | \ / | \par - |EACH IN | \par - \ / \par - \par - where ::= DO|PRODUCT|SUM|COLLECT|JOIN. \par -\pard \sl240 }{\f2 can be any valid REDUCE identifier except }{\f3 t} {\f2 or -}{\f3 nil} {\f2 , , and can be any expression -that evaluates to a positive or negative integer. must be a -valid } -{\f2\uldb list}{\v\f2 LIST} -{\f2 structure. -The action taken must be one of the actions shown -above, each of which is followed by a single REDUCE expression, statement -or a } -{\f2\uldb group}{\v\f2 group} -{\f2 (}{\f3 <<} {\f2 ...}{\f3 >>} {\f2 ) or } -{\f2\uldb block}{\v\f2 block} -{\f2 -(} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...} -{\f2\uldb end}{\v\f2 END} -{\f2 ) statement. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -for i := 1:10 sum i; \par - \par - \par - \par - 55 \par - \par - \par -for a := -2 step 3 until 6 product a; \par - \par - \par - \par - -8 \par - \par - \par -a := 3; \par - \par - A := 3 \par - \par - \par -for iter := 4:a do write iter; \par - \par -m := 0; \par - \par - M := 0 \par - \par - \par -for s := 10 step -1 until 3 do <>; \par - \par -m; \par - \par - 520 \par - \par - \par -for each x in \{q,r,s\} sum x**2; \par - \par - 2 2 2 \par - Q + R + S \par - \par - \par -for i := 1:4 collect 1/i; \par - \par - \par - \par - 1 1 1 \par - \{1,-,-,-\} \par - 2 3 4 \par - \par - \par -for i := 1:3 join list solve(x**2 + i*x + 1,x); \par - \par - \par - \par - SQRT(3)*I + 1 \par - \{\{X= --------------, \par - 2 \par - SQRT(3)*I - 1 \par - X= --------------\} \par - 2 \par - \{X=-1\}, \par - SQRT(5) + 3 SQRT(5) - 3 \par - \{X= - -----------,X=-----------\}\} \par - 2 2 \par - \par -\pard \sl240 }{\f2 The behavior of each of the five action words follows: -\par -\par -\pard \tx3420 }{\f4 \par - Action Word Behavior \par -Keyword Argument Type Action \par - do statement, command, group Evaluates its argument once \par - or block for each iteration of the loop, \par - not saving results \par -collect expression, statement, Evaluates its argument once for \par - command, group, block, list each iteration of the loop, \par - storing the results in a list \par - which is returned by the for \par - statement when done \par - join list or an operator which Evaluates its argument once for \par - produces a list each iteration of the loop, \par - appending the elements in each \par - individual result list onto the \par - overall result list \par -product expression, statement, Evaluates its argument once for \par - command, group or block each iteration of the loop, \par - multiplying the results together \par - and returning the overall product \par - sum expression, statement, Evaluates its argument once for \par - command, group or block each iteration of the loop, \par - adding the results together and \par - returning the overall sum \par -\pard \sl240 }{\f2 For number-driven }{\f3 for} {\f2 statements, if the ending limit is smaller -than the beginning limit (larger in the case of negative steps) the action -statement is not executed at all. The iterative variable is local to the -}{\f3 for} {\f2 statement, and does not affect the value of an identifier with -the same name. For list-driven }{\f3 for} {\f2 statements, if the list is -empty, the action statement is not executed, but no error occurs. -\par -\par -You can use nested }{\f3 for} {\f2 statements, with the inner }{\f3 for} {\f2 -statement after the action keyword. You must make sure that your inner -statement returns an expression that the outer statement can handle. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FOREACH} - -${\footnote \pard\plain \sl240 \fs20 $ FOREACH} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0688} - - K{\footnote \pard\plain \sl240 \fs20 K loop;FOREACH command;command} - -}{\b\f2 FOREACH}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -}{\f3 foreach} {\f2 is a synonym for the }{\f3 for each} {\f2 variant of the -} -{\f2\uldb for}{\v\f2 FOR} -{\f2 construct. It is designed to iterate down a list, and an -error will occur if a list is not used. The use of }{\f3 for each} {\f2 is -preferred to }{\f3 foreach} {\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 foreach} {\f4 in -\par -\par -where ::= }{\f3 do | product | sum | collect | join} {\f4 -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -foreach x in \{q,r,s\} sum x**2; \par - \par - 2 2 2 \par - Q + R + S \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GEQ} - -${\footnote \pard\plain \sl240 \fs20 $ GEQ} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0689} - - K{\footnote \pard\plain \sl240 \fs20 K GEQ operator;operator} - -}{\b\f2 GEQ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 geq} {\f2 operator is a binary infix or prefix logical operator. It -returns true if its first argument is greater than or equal to its second -argument. As an infix operator it is identical with }{\f3 >=} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 geq} {\f4 (,) or -}{\f3 geq} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE expression that evaluates to a -number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 20; \par - \par - A := 20 \par - \par - \par -if geq(a,25) then write "big" else write "small"; \par - \par - \par - \par - small \par - \par - \par -if a geq 20 then write "big" else write "small"; \par - \par - \par - \par - big \par - \par - \par -if (a geq 18) then write "big" else write "small"; \par - \par - \par - \par - big \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -} -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GOTO} - -${\footnote \pard\plain \sl240 \fs20 $ GOTO} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0690} - - K{\footnote \pard\plain \sl240 \fs20 K GOTO command;command} - -}{\b\f2 GOTO}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -Inside a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , }{\f3 goto} {\f2 , or -preferably, }{\f3 go to} {\f2 , transfers flow of control to a labeled statement. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 go to} {\f4 or }{\f3 goto} {\f4 -\par -\par -}{\f2 \par - is of the form >; \par - \par - \par - \par - 46 \par - \par - \par -max(-5,-10,-a); \par - \par - -5 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MIN} - -${\footnote \pard\plain \sl240 \fs20 $ MIN} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0730} - - K{\footnote \pard\plain \sl240 \fs20 K minimum;MIN operator;operator} - -}{\b\f2 MIN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 min} {\f2 is an n-ary prefix operator, which returns the -smallest value in its arguments. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 min} {\f4 (\{,\}*) -\par -\par -}{\f2 \par - must evaluate to a number. }{\f3 min} {\f2 of an empty list -returns 0. - \par -examples: \par -\pard \tx3420 }{\f4 \par -min(-3,0,17,2); \par - \par - -3 \par - \par - \par -<>; \par - \par - \par - \par - 16 \par - \par - \par -min(5,10,a); \par - \par - 5 \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MINUS} - -${\footnote \pard\plain \sl240 \fs20 $ MINUS} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0731} - - K{\footnote \pard\plain \sl240 \fs20 K MINUS operator;operator} - -}{\b\f2 MINUS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 minus} {\f2 operator is a unary minus, returning the negative of its -argument. It is equivalent to the unary }{\f3 -} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 minus} {\f4 () -\par -\par -\par -\par -}{\f2 may be any scalar REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -minus(a); \par - \par - - A \par - \par - \par -minus(-1); \par - \par - 1 \par - \par - \par -minus((x+1)**4); \par - \par - 4 3 2 \par - - (X + 4*X + 6*X + 4*X + 1) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NEXTPRIME} - -${\footnote \pard\plain \sl240 \fs20 $ NEXTPRIME} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0732} - - K{\footnote \pard\plain \sl240 \fs20 K prime number;NEXTPRIME operator;operator} - -}{\b\f2 NEXTPRIME}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 nextprime} {\f4 () -\par -\par -}{\f2 \par -If the argument of }{\f3 nextprime} {\f2 is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -nextprime 5001; \par - \par - 5003 \par - \par - \par -nextprime(10^30); \par - \par - 1000000000000000000000000000057 \par - \par - \par -nextprime a; \par - \par - ***** A invalid as integer \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOCONVERT} - -${\footnote \pard\plain \sl240 \fs20 $ NOCONVERT} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0733} - - K{\footnote \pard\plain \sl240 \fs20 K NOCONVERT switch;switch} - -}{\b\f2 NOCONVERT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -Under normal circumstances when }{\f3 rounded} {\f2 is on, REDUCE converts the -number 1.0 to the integer 1. If this is not desired, the switch -}{\f3 noconvert} {\f2 can be turned on. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -1.0000000000001; \par - \par - 1 \par - \par - \par -on noconvert; \par - \par -1.0000000000001; \par - \par - 1.0 \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NORM} - -${\footnote \pard\plain \sl240 \fs20 $ NORM} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0734} - - K{\footnote \pard\plain \sl240 \fs20 K complex;NORM operator;operator} - -}{\b\f2 NORM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 norm} {\f4 () -\par -\par -}{\f2 \par -If }{\f3 rounded} {\f2 is on, and the argument is a real number, -returns its absolute value. If }{\f3 complex} {\f2 is also on, -returns the square root of the sum of squares of the real and imaginary -parts of the argument. In all other cases, a result is returned in -terms of the original operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -norm (-2); \par - \par - NORM(-2) \par - \par - \par -on rounded; \par - \par -ws; \par - \par - 2.0 \par - \par - \par -norm(3+4i); \par - \par - NORM(4*I+3) \par - \par - \par -on complex; \par - \par -ws; \par - \par - 5.0 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PERM} - -${\footnote \pard\plain \sl240 \fs20 $ PERM} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0735} - - K{\footnote \pard\plain \sl240 \fs20 K permutation;PERM operator;operator} - -}{\b\f2 PERM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 perm(,) -\par -\par -}{\f2 \par -If and evaluate to positive integers, -}{\f3 perm} {\f2 returns the number of permutations possible in selecting - objects from objects. -In other cases, an expression in the original operator is returned. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -perm(1,1); \par - \par - 1 \par - \par - \par -perm(3,5); \par - \par - 60 \par - \par - \par -perm(-3,5); \par - \par - PERM(-3,5) \par - \par - \par -perm(a,b); \par - \par - PERM(A,B) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PLUS} - -${\footnote \pard\plain \sl240 \fs20 $ PLUS} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0736} - - K{\footnote \pard\plain \sl240 \fs20 K PLUS operator;operator} - -}{\b\f2 PLUS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 plus} {\f2 operator is both an infix and prefix n-ary addition -operator. It exists because of the way in which REDUCE handles such -operators internally, and is not recommended for use in algebraic mode -programming. } -{\f2\uldb plussign}{\v\f2 plussign} -{\f2 , which has the identical effect, should be -used instead. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 plus} {\f4 (,\{,\} -*) or -\par -\par - }{\f3 plus} {\f4 \{}{\f3 plus} {\f4 \}* -\par -\par -}{\f2 \par - can be any valid REDUCE expression, including matrix -expressions of the same dimensions. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a plus b plus c plus d; \par - \par - A + B + C + D \par - \par - \par -4.5 plus 10; \par - \par - 29 \par - -- \par - 2 \par - \par - \par - \par -plus(x**2,y**2); \par - \par - 2 2 \par - X + Y \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # QUOTIENT} - -${\footnote \pard\plain \sl240 \fs20 $ QUOTIENT} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0737} - - K{\footnote \pard\plain \sl240 \fs20 K QUOTIENT operator;operator} - -}{\b\f2 QUOTIENT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 quotient} {\f2 operator is both an infix and prefix binary operator that -returns the quotient of its first argument divided by its second. It is -also a unary } -{\f2\uldb recip}{\v\f2 RECIP} -{\f2 rocal operator. It is identical to }{\f3 /} {\f2 and -} -{\f2\uldb slash}{\v\f2 slash} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 quotient} {\f4 (,) or - }{\f3 quotient} {\f4 or -}{\f3 quotient} {\f4 () or -}{\f3 quotient} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE scalar expression. Matrix -expressions can also be used if the second expression is invertible and the -matrices are of the correct dimensions. - \par -examples: \par -\pard \tx3420 }{\f4 \par -quotient(a,x+1); \par - \par - A \par - ----- \par - X + 1 \par - \par - \par -7 quotient 17; \par - \par - 7 \par - -- \par - 17 \par - \par - \par -on rounded; \par - \par -4.5 quotient 2; \par - \par - 2.25 \par - \par - \par -quotient(x**2 + 3*x + 2,x+1); \par - \par - X + 2 \par - \par - \par -matrix m,inverse; \par - \par -m := mat((a,b),(c,d)); \par - \par - M(1,1) := A; \par - M(1,2) := B; \par - M(2,1) := C \par - M(2,2) := D \par - \par - \par - \par -inverse := quotient m; \par - \par - D \par - INVERSE(1,1) := ---------- \par - A*D - B*C \par - B \par - INVERSE(1,2) := - ---------- \par - A*D - B*C \par - C \par - INVERSE(2,1) := - ---------- \par - A*D - B*C \par - A \par - INVERSE(2,2) := ---------- \par - A*D - B*C \par - \par -\pard \sl240 }{\f2 \par -\par -The }{\f3 quotient} {\f2 operator is left associative: }{\f3 a quotient b quotient c} {\f2 -is equivalent to }{\f3 (a quotient b) quotient c} {\f2 . -\par -\par -If a matrix argument to the unary }{\f3 quotient} {\f2 is not invertible, or if the -second matrix argument to the binary quotient is not invertible, an error -message is given. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RAD2DEG} - -${\footnote \pard\plain \sl240 \fs20 $ RAD2DEG} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0738} - - K{\footnote \pard\plain \sl240 \fs20 K radians;degrees;RAD2DEG operator;operator} - -}{\b\f2 RAD2DEG}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 rad2deg} {\f4 () -\par -\par -}{\f2 \par -In } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode, if is a real number, the -operator }{\f3 rad2deg} {\f2 will interpret it as radians, and convert it to -the equivalent degrees. In all other cases, an expression in terms of the -original operator is returned. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -rad2deg 1; \par - \par - RAD2DEG(1) \par - \par - \par -on rounded; \par - \par -ws; \par - \par - 57.2957795131 \par - \par - \par -rad2deg a; \par - \par - RAD2DEG(A) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RAD2DMS} - -${\footnote \pard\plain \sl240 \fs20 $ RAD2DMS} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0739} - - K{\footnote \pard\plain \sl240 \fs20 K radians;degrees;RAD2DMS operator;operator} - -}{\b\f2 RAD2DMS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 rad2dms} {\f4 () -\par -\par -}{\f2 \par -In } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode, if is a real number, the -operator }{\f3 rad2dms} {\f2 will interpret it as radians, and convert it to a -list containing the equivalent degrees, minutes and seconds. In all other -cases, an expression in terms of the original operator is returned. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -rad2dms 1; \par - \par - RAD2DMS(1) \par - \par - \par -on rounded; \par - \par -ws; \par - \par - \{57,17,44.8062470964\} \par - \par - \par -rad2dms a; \par - \par - RAD2DMS(A) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RECIP} - -${\footnote \pard\plain \sl240 \fs20 $ RECIP} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0740} - - K{\footnote \pard\plain \sl240 \fs20 K RECIP operator;operator} - -}{\b\f2 RECIP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 recip} {\f2 is the alphabetical name for the division operator }{\f3 /} {\f2 -or } -{\f2\uldb slash}{\v\f2 slash} -{\f2 used as a unary operator. The use of }{\f3 /} {\f2 is preferred. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -recip a; \par - \par - 1 \par - - \par - A \par - \par - \par -recip 2; \par - \par - 1 \par - -- \par - 2 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REMAINDER} - -${\footnote \pard\plain \sl240 \fs20 $ REMAINDER} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0741} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;REMAINDER operator;operator} - -}{\b\f2 REMAINDER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 remainder} {\f2 operator returns the remainder after its first -argument is divided by its second argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 remainder} {\f4 (,) -\par -\par -}{\f2 \par - can be any valid REDUCE polynomial, and is not limited -to numeric values. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -remainder(13,6); \par - \par - 1 \par - \par - \par -remainder(x**2 + 3*x + 2,x+1); \par - \par - 0 \par - \par - \par -remainder(x**3 + 12*x + 4,x**2 + 1); \par - \par - \par - 11*X + 4 \par - \par - \par -remainder(sin(2*x),x*y); \par - \par - SIN(2*X) \par - \par -\pard \sl240 }{\f2 In the default case, remainders are calculated over the integers. If you -need the remainder with respect to another domain, it must be declared -explicitly. -\par -\par -If the first argument to }{\f3 remainder} {\f2 contains a denominator not equal to -1, an error occurs. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROUND} - -${\footnote \pard\plain \sl240 \fs20 $ ROUND} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0742} - - K{\footnote \pard\plain \sl240 \fs20 K integer;ROUND operator;operator} - -}{\b\f2 ROUND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 round} {\f4 () -\par -\par -}{\f2 \par -If its argument has a numerical value, }{\f3 round} {\f2 rounds it to the -nearest integer. For non-numeric arguments, the value is an expression in -the original operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -round 3.4; \par - \par - 3 \par - \par - \par -round 3.5; \par - \par - 4 \par - \par - \par -round a; \par - \par - ROUND(A) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SETMOD} - -${\footnote \pard\plain \sl240 \fs20 $ SETMOD} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0743} - - K{\footnote \pard\plain \sl240 \fs20 K modular;SETMOD command;command} - -}{\b\f2 SETMOD}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 setmod} {\f2 command sets the modulus value for subsequent } -{\f2\uldb modular}{\v\f2 MODULAR} -{\f2 -arithmetic. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 setmod} {\f4 -\par -\par -}{\f2 \par - must be positive, and greater than 1. It need not be a prime -number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -setmod 6; \par - \par - 1 \par - \par - \par -on modular; \par - \par -16; \par - \par - 4 \par - \par - \par -x^2 + 5x + 7; \par - \par - 2 \par - X + 5*X + 1 \par - \par - \par -x/3; \par - \par - X \par - - \par - 3 \par - \par - \par -setmod 2; \par - \par - 6 \par - \par - \par -(x+1)^4; \par - \par - 4 \par - X + 1 \par - \par - \par -x/3; \par - \par - X \par - \par -\pard \sl240 }{\f2 }{\f3 setmod} {\f2 returns the previous modulus, or 1 if none has been set -before. }{\f3 setmod} {\f2 only has effect when } -{\f2\uldb modular}{\v\f2 MODULAR} -{\f2 is on. -\par -\par -Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error message, since the -operation is equivalent to dividing by 0. However, dividing by a factor -of a non-prime modulus does not produce an error message. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SIGN} - -${\footnote \pard\plain \sl240 \fs20 $ SIGN} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0744} - - K{\footnote \pard\plain \sl240 \fs20 K SIGN operator;operator} - -}{\b\f2 SIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sign} {\f4 -\par -\par -}{\f2 \par -}{\f3 sign} {\f2 tries to evaluate the sign of its argument. If this -is possible }{\f3 sign} {\f2 returns one of 1, 0 or -1. Otherwise, the result -is the original form or a simplified variant. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - sign(-5) \par - \par - -1 \par - \par - \par - sign(-a^2*b) \par - \par - -SIGN(B) \par - \par -\pard \sl240 }{\f2 Even powers of formal expressions are assumed to be positive only as long -as the switch } -{\f2\uldb complex}{\v\f2 COMPLEX} -{\f2 is off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SQRT} - -${\footnote \pard\plain \sl240 \fs20 $ SQRT} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0745} - - K{\footnote \pard\plain \sl240 \fs20 K square root;SQRT operator;operator} - -}{\b\f2 SQRT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sqrt} {\f2 operator returns the square root of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 sqrt} {\f4 () -\par -\par -}{\f2 \par - can be any REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sqrt(16*a^3); \par - \par - 4*SQRT(A)*A \par - \par - \par -sqrt(17); \par - \par - SQRT(17) \par - \par - \par -on rounded; \par - \par -sqrt(17); \par - \par - 4.12310562562 \par - \par - \par -off rounded; \par - \par -sqrt(a*b*c^5*d^3*27); \par - \par - 2 \par - 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D \par - \par -\pard \sl240 }{\f2 }{\f3 sqrt} {\f2 checks its argument for squared factors and removes them. -\par -\par -Numeric values for square roots that are not exact integers are given only -when } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. -\par -\par -Please note that }{\f3 sqrt(a**2)} {\f2 is given as }{\f3 a} {\f2 , which may be -incorrect if }{\f3 a} {\f2 eventually has a negative value. If you are -programming a calculation in which this is a concern, you can turn on the -} -{\f2\uldb precise}{\v\f2 PRECISE} -{\f2 switch, which causes the absolute value of the square root -to be returned. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TIMES} - -${\footnote \pard\plain \sl240 \fs20 $ TIMES} - -+{\footnote \pard\plain \sl240 \fs20 + g5:0746} - - K{\footnote \pard\plain \sl240 \fs20 K TIMES operator;operator} - -}{\b\f2 TIMES}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 times} {\f2 operator is an infix or prefix n-ary multiplication -operator. It is identical to }{\f3 *} {\f2 . - \par -syntax: \par -}{\f4 \par -\par - }{\f3 times} {\f4 \{}{\f3 times} {\f4 \}* -\par -\par -or }{\f3 times} {\f4 (, \{,\}*) -\par -\par -}{\f2 \par - can be any valid REDUCE scalar or matrix expression. -Matrix expressions must be of the correct dimensions. Compatible scalar -and matrix expressions can be mixed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -var1 times var2; \par - \par - VAR1*VAR2 \par - \par - \par -times(6,5); \par - \par - 30 \par - \par - \par -matrix aa,bb; \par - \par -aa := mat((1),(2),(x))\$ \par - \par -bb := mat((0,3,1))\$ \par - \par -aa times bb times 5; \par - \par - [0 15 5 ] \par - [ ] \par - [0 30 10 ] \par - [ ] \par - [0 15*X 5*X] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g5} - -${\footnote \pard\plain \sl240 \fs20 $ Arithmetic Operations} - -+{\footnote \pard\plain \sl240 \fs20 + index:0005} -}{\b\f2 Arithmetic Operations}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ARITHMETIC\_OPERATIONS introduction} -{\v\f2 ARITHMETIC\_OPERATIONS}{\f2 \par -}{\f2 \tab}{\f2\uldb ABS operator} -{\v\f2 ABS}{\f2 \par -}{\f2 \tab}{\f2\uldb ADJPREC switch} -{\v\f2 ADJPREC}{\f2 \par -}{\f2 \tab}{\f2\uldb ARG operator} -{\v\f2 ARG}{\f2 \par -}{\f2 \tab}{\f2\uldb CEILING operator} -{\v\f2 CEILING}{\f2 \par -}{\f2 \tab}{\f2\uldb CHOOSE operator} -{\v\f2 CHOOSE}{\f2 \par -}{\f2 \tab}{\f2\uldb DEG2DMS operator} -{\v\f2 DEG2DMS}{\f2 \par -}{\f2 \tab}{\f2\uldb DEG2RAD operator} -{\v\f2 DEG2RAD}{\f2 \par -}{\f2 \tab}{\f2\uldb DIFFERENCE operator} -{\v\f2 DIFFERENCE}{\f2 \par -}{\f2 \tab}{\f2\uldb DILOG operator} -{\v\f2 DILOG}{\f2 \par -}{\f2 \tab}{\f2\uldb DMS2DEG operator} -{\v\f2 DMS2DEG}{\f2 \par -}{\f2 \tab}{\f2\uldb DMS2RAD operator} -{\v\f2 DMS2RAD}{\f2 \par -}{\f2 \tab}{\f2\uldb FACTORIAL operator} -{\v\f2 FACTORIAL}{\f2 \par -}{\f2 \tab}{\f2\uldb FIX operator} -{\v\f2 FIX}{\f2 \par -}{\f2 \tab}{\f2\uldb FIXP operator} -{\v\f2 FIXP}{\f2 \par -}{\f2 \tab}{\f2\uldb FLOOR operator} -{\v\f2 FLOOR}{\f2 \par -}{\f2 \tab}{\f2\uldb EXPT operator} -{\v\f2 EXPT}{\f2 \par -}{\f2 \tab}{\f2\uldb GCD operator} -{\v\f2 GCD}{\f2 \par -}{\f2 \tab}{\f2\uldb LN operator} -{\v\f2 LN}{\f2 \par -}{\f2 \tab}{\f2\uldb LOG operator} -{\v\f2 LOG}{\f2 \par -}{\f2 \tab}{\f2\uldb LOGB operator} -{\v\f2 LOGB}{\f2 \par -}{\f2 \tab}{\f2\uldb MAX operator} -{\v\f2 MAX}{\f2 \par -}{\f2 \tab}{\f2\uldb MIN operator} -{\v\f2 MIN}{\f2 \par -}{\f2 \tab}{\f2\uldb MINUS operator} -{\v\f2 MINUS}{\f2 \par -}{\f2 \tab}{\f2\uldb NEXTPRIME operator} -{\v\f2 NEXTPRIME}{\f2 \par -}{\f2 \tab}{\f2\uldb NOCONVERT switch} -{\v\f2 NOCONVERT}{\f2 \par -}{\f2 \tab}{\f2\uldb NORM operator} -{\v\f2 NORM}{\f2 \par -}{\f2 \tab}{\f2\uldb PERM operator} -{\v\f2 PERM}{\f2 \par -}{\f2 \tab}{\f2\uldb PLUS operator} -{\v\f2 PLUS}{\f2 \par -}{\f2 \tab}{\f2\uldb QUOTIENT operator} -{\v\f2 QUOTIENT}{\f2 \par -}{\f2 \tab}{\f2\uldb RAD2DEG operator} -{\v\f2 RAD2DEG}{\f2 \par -}{\f2 \tab}{\f2\uldb RAD2DMS operator} -{\v\f2 RAD2DMS}{\f2 \par -}{\f2 \tab}{\f2\uldb RECIP operator} -{\v\f2 RECIP}{\f2 \par -}{\f2 \tab}{\f2\uldb REMAINDER operator} -{\v\f2 REMAINDER}{\f2 \par -}{\f2 \tab}{\f2\uldb ROUND operator} -{\v\f2 ROUND}{\f2 \par -}{\f2 \tab}{\f2\uldb SETMOD command} -{\v\f2 SETMOD}{\f2 \par -}{\f2 \tab}{\f2\uldb SIGN operator} -{\v\f2 SIGN}{\f2 \par -}{\f2 \tab}{\f2\uldb SQRT operator} -{\v\f2 SQRT}{\f2 \par -}{\f2 \tab}{\f2\uldb TIMES operator} -{\v\f2 TIMES}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # boolean_value} - -${\footnote \pard\plain \sl240 \fs20 $ boolean_value} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0747} - - K{\footnote \pard\plain \sl240 \fs20 K boolean value concept;concept} - -}{\b\f2 BOOLEAN VALUE}{\f2 \par -\par - -There are no extra symbols for the truth values true -and false. Instead, } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 and the number zero -are interpreted as truth value false in algebraic -programs (see } -{\f2\uldb false}{\v\f2 false} -{\f2 ), while any different -value is considered as true (see } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 ). -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EQUAL} - -${\footnote \pard\plain \sl240 \fs20 $ EQUAL} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0748} - - K{\footnote \pard\plain \sl240 \fs20 K equation;EQUAL operator;operator} - -}{\b\f2 EQUAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 equal} {\f2 is an infix binary comparison -operator. It is identical with }{\f3 =} {\f2 . It returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its two -arguments are equal. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 equal} {\f4 -\par -\par -}{\f2 \par -Equality is given between floating point numbers and integers that have -the same value. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -a := 4; \par - \par - A := 4 \par - \par - \par -b := 4.0; \par - \par - B := 4.0 \par - \par - \par -if a equal b then write "true" else write "false"; \par - \par - \par - \par - true \par - \par - \par -if a equal 5 then write "true" else write "false"; \par - \par - \par - \par - false \par - \par - \par -if a equal sqrt(16) then write "true" else write "false"; \par - \par - \par - \par - true \par - \par -\pard \sl240 }{\f2 Comparison operators can only be used as conditions in conditional commands -such as }{\f3 if} {\f2 ...}{\f3 then} {\f2 and }{\f3 repeat} {\f2 ...}{\f3 until} {\f2 . - can also be used as a prefix operator. However, this use -is not encouraged. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EVENP} - -${\footnote \pard\plain \sl240 \fs20 $ EVENP} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0749} - - K{\footnote \pard\plain \sl240 \fs20 K EVENP operator;operator} - -}{\b\f2 EVENP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 evenp} {\f2 logical operator returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its argument is an -even integer, and } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 if its argument is an odd integer. An error -message is returned if its argument is not an integer. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 evenp} {\f4 () or }{\f3 evenp} {\f4 -\par -\par -}{\f2 \par - must evaluate to an integer. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -aa := 1782; \par - \par - AA := 1782 \par - \par - \par -if evenp aa then yes else no; \par - \par - YES \par - \par - \par -if evenp(-3) then yes else no; \par - \par - NO \par - \par -\pard \sl240 }{\f2 Although you would not ordinarily enter an expression such as the last -example above, note that the negative term must be enclosed in parentheses -to be correctly parsed. The }{\f3 evenp} {\f2 operator can only be used in -conditional statements such as }{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # false} - -${\footnote \pard\plain \sl240 \fs20 $ false} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0750} - - K{\footnote \pard\plain \sl240 \fs20 K false concept;concept} - -}{\b\f2 FALSE}{\f2 \par -\par - -The symbol } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 and the number zero are considered -as } -{\f2\uldb boolean value}{\v\f2 boolean_value} -{\f2 false if used in a place where -a boolean value is required. Most builtin operators return -} -{\f2\uldb nil}{\v\f2 NIL} -{\f2 as false value. Algebraic programs use better zero. -Note that }{\f3 nil} {\f2 is not printed when returned as result to -a top level evaluation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FREEOF} - -${\footnote \pard\plain \sl240 \fs20 $ FREEOF} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0751} - - K{\footnote \pard\plain \sl240 \fs20 K FREEOF operator;operator} - -}{\b\f2 FREEOF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 freeof} {\f2 logical operator returns -} -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its first argument does -not contain its second argument anywhere in its structure. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 freeof} {\f4 (,) or - }{\f3 freeof} {\f4 -\par -\par -}{\f2 \par - can be any valid scalar REDUCE expression, must -be a kernel expression (see }{\f3 kernel} {\f2 ). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := x + sin(y)**2 + log sin z; \par - \par - \par - \par - 2 \par - A := LOG(SIN(Z)) + SIN(Y) + X \par - \par - \par -if freeof(a,sin(y)) then write "free" else write "not free"; \par - \par - \par - \par - not free \par - \par - \par -if freeof(a,sin(x)) then write "free" else write "not free"; \par - \par - \par - \par - free \par - \par - \par -if a freeof sin z then write "free" else write "not free"; \par - \par - \par - \par - not free \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional expressions such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LEQ} - -${\footnote \pard\plain \sl240 \fs20 $ LEQ} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0752} - - K{\footnote \pard\plain \sl240 \fs20 K LEQ operator;operator} - -}{\b\f2 LEQ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 leq} {\f2 operator is a binary infix or prefix logical operator. It -returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its first argument is less than or equal to its second -argument. As an infix operator it is identical with }{\f3 <=} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 leq} {\f4 (,) or -}{\f3 leq} {\f4 -\par -\par -\par -\par -}{\f2 can be any valid REDUCE expression that evaluates to a -number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 15; \par - \par - A := 15 \par - \par - \par -if leq(a,25) then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -if leq(a,15) then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -if leq(a,5) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LESSP} - -${\footnote \pard\plain \sl240 \fs20 $ LESSP} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0753} - - K{\footnote \pard\plain \sl240 \fs20 K LESSP operator;operator} - -}{\b\f2 LESSP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 lessp} {\f2 operator is a binary infix or prefix logical operator. It -returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its first argument is strictly less than its second -argument. As an infix operator it is identical with }{\f3 <} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 lessp} {\f4 (,) -or }{\f3 lessp} {\f4 -\par -\par -\par -\par -}{\f2 can be any valid REDUCE expression that evaluates to a -number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 15; \par - \par - A := 15 \par - \par - \par -if lessp(a,25) then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -if lessp(a,15) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par - \par -if lessp(a,5) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MEMBER} - -${\footnote \pard\plain \sl240 \fs20 $ MEMBER} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0754} - - K{\footnote \pard\plain \sl240 \fs20 K list;MEMBER operator;operator} - -}{\b\f2 MEMBER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 member} {\f4 -\par -\par -}{\f2 \par -}{\f3 member} {\f2 is an infix binary comparison operator that evaluates to -} -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if is } -{\f2\uldb equal}{\v\f2 EQUAL} -{\f2 to a member of -the } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if a member \{a,b\} then 1 else 0; \par - \par - 1 \par - \par - \par -if 1 member(1,2,3) then a else b; \par - \par - a \par - \par - \par -if 1 member(1.0,2) then a else b; \par - \par - b \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . - can also be used as a prefix operator. However, this use -is not encouraged. Finally, } -{\f2\uldb equal}{\v\f2 EQUAL} -{\f2 (}{\f3 =} {\f2 ) is used for the test -within the list, so expressions must be of the same type to match. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NEQ} - -${\footnote \pard\plain \sl240 \fs20 $ NEQ} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0755} - - K{\footnote \pard\plain \sl240 \fs20 K NEQ operator;operator} - -}{\b\f2 NEQ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 neq} {\f2 is an infix binary comparison -operator. It returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its two -arguments are not } -{\f2\uldb equal}{\v\f2 EQUAL} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 neq} {\f4 -\par -\par -}{\f2 \par -An inequality is satisfied between floating point numbers and integers -that have the same value. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -a := 4; \par - \par - A := 4 \par - \par - \par -b := 4.0; \par - \par - B := 4.0 \par - \par - \par -if a neq b then write "true" else write "false"; \par - \par - \par - \par - false \par - \par - \par -if a neq 5 then write "true" else write "false"; \par - \par - \par - \par - true \par - \par -\pard \sl240 }{\f2 Comparison operators can only be used as conditions in conditional commands -such as }{\f3 if} {\f2 ...}{\f3 then} {\f2 and }{\f3 repeat} {\f2 ...}{\f3 until} {\f2 . - can also be used as a prefix operator. However, this use -is not encouraged. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOT} - -${\footnote \pard\plain \sl240 \fs20 $ NOT} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0756} - - K{\footnote \pard\plain \sl240 \fs20 K NOT operator;operator} - -}{\b\f2 NOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 not} {\f2 operator returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its argument evaluates to -} -{\f2\uldb nil}{\v\f2 NIL} -{\f2 , and }{\f3 nil} {\f2 if its argument is }{\f3 true} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 not} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if not numberp(a) then write "indeterminate" else write a; \par - \par - \par - \par - indeterminate; \par - \par - \par -a := 10; \par - \par - A := 10 \par - \par - \par -if not numberp(a) then write "indeterminate" else write a; \par - \par - \par - \par - 10 \par - \par - \par -if not(numberp(a) and a < 0) then write "positive number"; \par - \par - \par - \par - positive number \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NUMBERP} - -${\footnote \pard\plain \sl240 \fs20 $ NUMBERP} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0757} - - K{\footnote \pard\plain \sl240 \fs20 K NUMBERP operator;operator} - -}{\b\f2 NUMBERP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 numberp} {\f2 operator returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its argument is a number, -and } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 otherwise. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 numberp} {\f4 () or }{\f3 numberp} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -cc := 15.3; \par - \par - CC := 15.3 \par - \par - \par -if numberp(cc) then write "number" else write "nonnumber"; \par - \par - \par - number \par - \par - \par -if numberp(cb) then write "number" else write "nonnumber"; \par - \par - \par - nonnumber \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional expressions, such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 and }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ORDP} - -${\footnote \pard\plain \sl240 \fs20 $ ORDP} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0758} - - K{\footnote \pard\plain \sl240 \fs20 K order;ORDP operator;operator} - -}{\b\f2 ORDP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 ordp} {\f2 logical operator returns } -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if its first argument is -ordered ahead of its second argument in canonical internal ordering, or is -identical to it. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 ordp} {\f4 (,) -\par -\par -\par -\par -}{\f2 and can be any valid REDUCE scalar -expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par - \par -if ordp(101,100) then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -if ordp(x,x) then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional expressions, such as -\par -\par -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 and }{\f3 while} {\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRIMEP} - -${\footnote \pard\plain \sl240 \fs20 $ PRIMEP} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0759} - - K{\footnote \pard\plain \sl240 \fs20 K prime number;PRIMEP operator;operator} - -}{\b\f2 PRIMEP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 primep} {\f4 () or }{\f3 primep} {\f4 -\par -\par -}{\f2 \par -If evaluates to a integer, }{\f3 primep} {\f2 returns -} -{\f2\uldb true}{\v\f2 TRUE} -{\f2 \par -\par -if is a prime number and } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 otherwise. -If does not have an integer value, a type error occurs. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if primep 3 then write "yes" else write "no"; \par - \par - \par - YES \par - \par - \par -if primep a then 1; \par - \par - ***** A invalid as integer \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRUE} - -${\footnote \pard\plain \sl240 \fs20 $ TRUE} - -+{\footnote \pard\plain \sl240 \fs20 + g6:0760} - - K{\footnote \pard\plain \sl240 \fs20 K false;TRUE concept;concept} - -}{\b\f2 TRUE}{\f2 \par -\par - -\par -\par -Any value of the boolean part of a logical expression which is neither -} -{\f2\uldb nil}{\v\f2 NIL} -{\f2 nor }{\f3 0} {\f2 is considered as }{\f3 true} {\f2 . Most -builtin test and compare functions return } -{\f2\uldb t}{\v\f2 T} -{\f2 for }{\f3 true} {\f2 -and } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 for }{\f3 false} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if member(3,\{1,2,3\}) then 1 else -1; \par - \par - \par - 1 \par - \par - \par -if floor(1.7) then 1 else -1; \par - \par - 1 \par - \par - \par -if floor(0.7) then 1 else -1; \par - \par - -1 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g6} - -${\footnote \pard\plain \sl240 \fs20 $ Boolean Operators} - -+{\footnote \pard\plain \sl240 \fs20 + index:0006} -}{\b\f2 Boolean Operators}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb boolean value concept} -{\v\f2 boolean_value}{\f2 \par -}{\f2 \tab}{\f2\uldb EQUAL operator} -{\v\f2 EQUAL}{\f2 \par -}{\f2 \tab}{\f2\uldb EVENP operator} -{\v\f2 EVENP}{\f2 \par -}{\f2 \tab}{\f2\uldb false concept} -{\v\f2 false}{\f2 \par -}{\f2 \tab}{\f2\uldb FREEOF operator} -{\v\f2 FREEOF}{\f2 \par -}{\f2 \tab}{\f2\uldb LEQ operator} -{\v\f2 LEQ}{\f2 \par -}{\f2 \tab}{\f2\uldb LESSP operator} -{\v\f2 LESSP}{\f2 \par -}{\f2 \tab}{\f2\uldb MEMBER operator} -{\v\f2 MEMBER}{\f2 \par -}{\f2 \tab}{\f2\uldb NEQ operator} -{\v\f2 NEQ}{\f2 \par -}{\f2 \tab}{\f2\uldb NOT operator} -{\v\f2 NOT}{\f2 \par -}{\f2 \tab}{\f2\uldb NUMBERP operator} -{\v\f2 NUMBERP}{\f2 \par -}{\f2 \tab}{\f2\uldb ORDP operator} -{\v\f2 ORDP}{\f2 \par -}{\f2 \tab}{\f2\uldb PRIMEP operator} -{\v\f2 PRIMEP}{\f2 \par -}{\f2 \tab}{\f2\uldb TRUE concept} -{\v\f2 TRUE}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BYE} - -${\footnote \pard\plain \sl240 \fs20 $ BYE} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0761} - - K{\footnote \pard\plain \sl240 \fs20 K BYE command;command} - -}{\b\f2 BYE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 bye} {\f2 command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the }{\f3 bye} {\f2 command exits REDUCE. }{\f3 quit} {\f2 is a -synonym for }{\f3 bye} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONT} - -${\footnote \pard\plain \sl240 \fs20 $ CONT} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0762} - - K{\footnote \pard\plain \sl240 \fs20 K CONT command;command} - -}{\b\f2 CONT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The command }{\f3 cont} {\f2 returns control to an interactive file after a -} -{\f2\uldb pause}{\v\f2 PAUSE} -{\f2 command that has been answered with }{\f3 n} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 Suppose you are in the middle of an interactive file.}{\f4 \pard \tx3420 \par - \par - \par - \par - factorize(x**2 + 17*x + 60); \par - \par - \par - \par - \par - \{X + 5,X + 12\} \par - \par - \par - pause; \par - \par - Cont? (Y or N) \par - \par - \par -n \par - \par -saveas results; \par - \par -factor1 := first results; \par - \par - FACTOR1 := X + 5 \par - \par - \par -factor2 := second results; \par - \par - FACTOR2 := X + 12 \par - \par - \par -cont; \pard \sl240 }{\f2 the file resumes}{\f4 \pard \tx3420 \par - \par -\pard \sl240 }{\f2 -\par -\par -A } -{\f2\uldb pause}{\v\f2 PAUSE} -{\f2 allows you to enter your own REDUCE commands, change -switch values, inquire about results, or other such activities. When you -wish to resume operation of the interactive file, use }{\f3 cont} {\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DISPLAY} - -${\footnote \pard\plain \sl240 \fs20 $ DISPLAY} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0763} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;history;DISPLAY command;command} - -}{\b\f2 DISPLAY}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -When given a numeric argument , }{\f3 display} {\f2 prints the -most recent input statements, identified by prompt numbers. If an empty -pair of parentheses is given, or if is greater than the current -number of statements, all the input statements since the beginning of -the session are printed. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 display} {\f4 () or }{\f3 display} {\f4 () -\par -\par -}{\f2 \par - should be a positive integer. However, if it is a real number, the -truncated integer value is used, and if a non-numeric argument is used, all -the input statements are printed. -\par -\par -The statements are displayed in upper case, with lines split at semicolons or -dollar signs, as they are in editing. If long files have been input during -the session, the }{\f3 display} {\f2 command is slow to format these for -printing. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LOAD\_PACKAGE} - -${\footnote \pard\plain \sl240 \fs20 $ LOAD_PACKAGE} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0764} - - K{\footnote \pard\plain \sl240 \fs20 K package;LOAD_PACKAGE command;command} - -}{\b\f2 LOAD\_PACKAGE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 load_package} {\f2 command is used to load REDUCE packages, such as -}{\f3 gentran} {\f2 that are not automatically loaded by the system. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 load_package "} {\f4 }{\f3 "} {\f4 -\par -\par -}{\f2 \par -A package is only loaded once; subsequent calls of }{\f3 load_package} {\f2 -for the same package name are ignored. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PAUSE} - -${\footnote \pard\plain \sl240 \fs20 $ PAUSE} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0765} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;PAUSE command;command} - -}{\b\f2 PAUSE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 pause} {\f2 command, given in an interactive file, stops operation and -asks if you want to continue or not. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 An interactive file is running, and at some point you see the -question}{\f4 \pard \tx3420 \par - \par - Cont? (Y or N) \par -\pard \sl240 }{\f2 If you type}{\f4 \pard \tx3420 \par - \par -y\key\{Return\} \par -\pard \sl240 }{\f2 the file continues to run until the next pause or the end.}{\f4 \pard \tx3420 \par -\pard \sl240 }{\f2 If you type }{\f4 \pard \tx3420 \par - \par -n\key\{Return\} \par -\pard \sl240 }{\f2 you will get a numbered REDUCE prompt, and be allowed to -enter and execute any REDUCE statements. If you later wish to continue with -the file, type}{\f4 \pard \tx3420 \par - \par -cont; \par -\pard \sl240 }{\f2 and the file resumes.}{\f4 \pard \tx3420 \pard \sl240 }{\f2 -\par -\par -To use }{\f3 pause} {\f2 in your own interactive files, type -\par -\par -}{\f3 pause;} {\f2 in the file wherever you want it. -\par -\par -}{\f3 pause} {\f2 does not allow you to continue without typing either }{\f3 y} {\f2 -or }{\f3 n} {\f2 . Its use is to slow down scrolling of interactive files, or to -let you change parameters or switch settings for the calculations. -\par -\par -If you have stopped an interactive file at a }{\f3 pause,} {\f2 and do not wish to -resume the file, type }{\f3 end;} {\f2 . This does not end the REDUCE session, but -stops input from the file. A second }{\f3 end;} {\f2 ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an }{\f3 end;} {\f2 -brings you back to the top level, not the file directly above. -\par -\par -A }{\f3 pause} {\f2 typed from the terminal has no effect. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # QUIT} - -${\footnote \pard\plain \sl240 \fs20 $ QUIT} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0766} - - K{\footnote \pard\plain \sl240 \fs20 K QUIT command;command} - -}{\b\f2 QUIT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 quit} {\f2 command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the }{\f3 quit} {\f2 command exits REDUCE. } -{\f2\uldb bye}{\v\f2 BYE} -{\f2 is a -synonym for }{\f3 quit} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RECLAIM} - -${\footnote \pard\plain \sl240 \fs20 $ RECLAIM} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0767} - - K{\footnote \pard\plain \sl240 \fs20 K memory;RECLAIM operator;operator} - -}{\b\f2 RECLAIM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -REDUCE's memory is in a storage structure called a heap. As REDUCE -statements execute, chunks of memory are used up. When these chunks are no -longer needed, they remain idle. When the memory is almost full, -the system executes a garbage collection, reclaiming space that is no -longer needed, and putting all the free space at one end. Depending on -the size of the image REDUCE is using, -garbage collection needs to be done more or less often. A -larger image means fewer but longer garbage collections. -Regardless of memory size, -if you ask REDUCE to do something ridiculous, like }{\f3 factorial(2000)} {\f2 , it may -garbage collect many times. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REDERR} - -${\footnote \pard\plain \sl240 \fs20 $ REDERR} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0768} - - K{\footnote \pard\plain \sl240 \fs20 K error handling;REDERR command;command} - -}{\b\f2 REDERR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 rederr} {\f2 command allows you to print an error message from inside -a } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 or a } -{\f2\uldb block}{\v\f2 block} -{\f2 statement. -The calculation is gracefully terminated. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 rederr} {\f4 -\par -\par -}{\f2 \par - is an error message, usually inside double quotation marks -(a } -{\f2\uldb string}{\v\f2 STRING} -{\f2 ). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -procedure fac(n); \par - if not (fixp(n) and n>=0) \par - then rederr "Choose nonneg. integer only" \par - else for i := 0:n-1 product i+1; \par -\pard \sl240 \par - \par - fac \par - \par - \par -fac a; \par - \par - ***** Choose nonneg. integer only \par - \par - \par -fac 5; \par - \par - 120 \par - \par -\pard \sl240 }{\f2 The above procedure finds the factorial of its argument. -If n is not a positive integer or 0, an error message is returned. -\par -\par -If your procedure is executed in a file, the usual error message is -printed, followed by }{\f3 Cont? (Y or N)} {\f2 , just as any other error does from -a file. Although the procedure is gracefully terminated, any switch settings or -variable assignments you made before the error occurred are not undone. If you -need to clean up such items before exiting, use a group statement, with the -}{\f3 rederr} {\f2 command as its last statement. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RETRY} - -${\footnote \pard\plain \sl240 \fs20 $ RETRY} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0769} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;RETRY command;command} - -}{\b\f2 RETRY}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 retry} {\f2 command allows you to retry the latest statement that resulted -in an error message. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -matrix a; \par - \par -det a; \par - \par - ***** Matrix A not set \par - \par - \par -a := mat((1,2),(3,4)); \par - \par - A(1,1) := 1 \par - A(1,2) := 2 \par - A(2,1) := 3 \par - A(2,2) := 4 \par - \par - \par -retry; \par - \par - -2 \par - \par -\pard \sl240 }{\f2 }{\f3 retry} {\f2 remembers only the most recent statement that resulted in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SAVEAS} - -${\footnote \pard\plain \sl240 \fs20 $ SAVEAS} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0770} - - K{\footnote \pard\plain \sl240 \fs20 K SAVEAS command;command} - -}{\b\f2 SAVEAS}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 saveas} {\f2 command saves the current workspace under the name of its -argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 saveas} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE identifier. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 (The numbered prompts are shown below, unlike in most examples)}{\f4 \pard \tx3420 \par - \par -1: solve(x^2-3); \par - \par - \{x=sqrt(3),x= - sqrt(3)\} \par - \par - \par -2: saveas rts(0)\$ \par - \par -3: rts(0); \par - \par - \{x=sqrt(3),x= - sqrt(3)\} \par - \par -\pard \sl240 }{\f2 -\par -\par -}{\f3 saveas} {\f2 works only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that you -did not assign to an identifier when you originally typed the input. -For access to previous output use } -{\f2\uldb ws}{\v\f2 WS} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SHOWTIME} - -${\footnote \pard\plain \sl240 \fs20 $ SHOWTIME} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0771} - - K{\footnote \pard\plain \sl240 \fs20 K time;SHOWTIME command;command} - -}{\b\f2 SHOWTIME}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 showtime} {\f2 command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has not -been called before. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -showtime; \par - \par - Time: 1020 ms \par - \par - \par -factorize(x^4 - 8x^4 + 8x^2 - 136x - 153); \par - \par - \par - \par - 2 \par - \{X - 9,X + 17,X + 1\} \par - \par - \par -showtime; \par - \par - Time: 920 ms \par - \par -\pard \sl240 }{\f2 The time printed is either the elapsed cpu time or the elapsed wall clock -time, depending on your system. }{\f3 showtime} {\f2 allows you to see the -system time resources REDUCE uses in its calculations. Your time readings -will of course vary from this example according to the system you use. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WRITE} - -${\footnote \pard\plain \sl240 \fs20 $ WRITE} - -+{\footnote \pard\plain \sl240 \fs20 + g7:0772} - - K{\footnote \pard\plain \sl240 \fs20 K output;WRITE command;command} - -}{\b\f2 WRITE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 write} {\f2 command explicitly writes its arguments to the output device -(terminal or file). - \par -syntax: \par -}{\f4 \par -\par -}{\f3 write} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be an expression, an assignment or a } -{\f2\uldb string}{\v\f2 STRING} -{\f2 -enclosed in double quotation marks (}{\f3 "} {\f2 ). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -write a, sin x, "this is a string"; \par - \par - \par - ASIN(X)this is a string \par - \par - \par -write a," ",sin x," this is a string"; \par - \par - \par - A SIN(X) this is a string \par - \par - \par -if not numberp(a) then write "the symbol ",a; \par - \par - \par - \par - the symbol A \par - \par - \par -array m(10); \par - \par -for i := 1:5 do write m(i) := 2*i; \par - \par - \par - M(1) := 2 \par - M(2) := 4 \par - M(3) := 6 \par - M(4) := 8 \par - M(5) := 10 \par - \par - \par -m(4); \par - \par - 8 \par - \par -\pard \sl240 }{\f2 The items specified by a single }{\f3 write} {\f2 statement print on a single line -unless they are too long. A printed line is always ended with a carriage -return, so the next item printed starts a new line. -\par -\par -When an assignment statement is printed, the assignment is also made. This -allows you to get feedback on filling slots in an array with a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 - statement, as shown in the last example above. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g7} - -${\footnote \pard\plain \sl240 \fs20 $ General Commands} - -+{\footnote \pard\plain \sl240 \fs20 + index:0007} -}{\b\f2 General Commands}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb BYE command} -{\v\f2 BYE}{\f2 \par -}{\f2 \tab}{\f2\uldb CONT command} -{\v\f2 CONT}{\f2 \par -}{\f2 \tab}{\f2\uldb DISPLAY command} -{\v\f2 DISPLAY}{\f2 \par -}{\f2 \tab}{\f2\uldb LOAD\_PACKAGE command} -{\v\f2 LOAD\_PACKAGE}{\f2 \par -}{\f2 \tab}{\f2\uldb PAUSE command} -{\v\f2 PAUSE}{\f2 \par -}{\f2 \tab}{\f2\uldb QUIT command} -{\v\f2 QUIT}{\f2 \par -}{\f2 \tab}{\f2\uldb RECLAIM operator} -{\v\f2 RECLAIM}{\f2 \par -}{\f2 \tab}{\f2\uldb REDERR command} -{\v\f2 REDERR}{\f2 \par -}{\f2 \tab}{\f2\uldb RETRY command} -{\v\f2 RETRY}{\f2 \par -}{\f2 \tab}{\f2\uldb SAVEAS command} -{\v\f2 SAVEAS}{\f2 \par -}{\f2 \tab}{\f2\uldb SHOWTIME command} -{\v\f2 SHOWTIME}{\f2 \par -}{\f2 \tab}{\f2\uldb WRITE command} -{\v\f2 WRITE}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # APPEND} - -${\footnote \pard\plain \sl240 \fs20 $ APPEND} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0773} - - K{\footnote \pard\plain \sl240 \fs20 K list;APPEND operator;operator} - -}{\b\f2 APPEND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 append} {\f2 operator constructs a new } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -from the elements of its two arguments (which must be lists). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 append} {\f4 (,) -\par -\par -}{\f2 \par - must be a list, though it may be the empty list (}{\f3 \{\}} {\f2 ). -Any arguments beyond the first two are ignored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -alist := \{1,2,\{a,b\}\}; \par - \par - ALIST := \{1,2,\{A,B\}\} \par - \par - \par -blist := \{3,4,5,sin(y)\}; \par - \par - BLIST := \{3,4,5,SIN(Y)\} \par - \par - \par -append(alist,blist); \par - \par - \{1,2,\{A,B\},3,4,5,SIN(Y)\} \par - \par - \par -append(alist,\{\}); \par - \par - \{1,2,\{A,B\}\} \par - \par - \par -append(list z,blist); \par - \par - \{Z,3,4,5,SIN(Y)\} \par - \par -\pard \sl240 }{\f2 The new list consists of the elements of the second list appended to the -elements of the first list. You can }{\f3 append} {\f2 new elements to the -beginning or end of an existing list by putting the new element in a -list (use curly braces or the operator }{\f3 list} {\f2 ). This is -particularly helpful in an iterative loop. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARBINT} - -${\footnote \pard\plain \sl240 \fs20 $ ARBINT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0774} - - K{\footnote \pard\plain \sl240 \fs20 K arbitrary value;ARBINT operator;operator} - -}{\b\f2 ARBINT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 arbint} {\f2 is used to express arbitrary integer parts -of an expression, e.g. in the result of } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 when -} -{\f2\uldb allbranch}{\v\f2 ALLBRANCH} -{\f2 is on. - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -solve(log(sin(x+3)),x); \par - \par - \{X=2*ARBINT(1)*PI - ASIN(1) - 3, \par - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARBCOMPLEX} - -${\footnote \pard\plain \sl240 \fs20 $ ARBCOMPLEX} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0775} - - K{\footnote \pard\plain \sl240 \fs20 K arbitrary value;ARBCOMPLEX operator;operator} - -}{\b\f2 ARBCOMPLEX}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 arbcomplex} {\f2 is used to express arbitrary scalar parts -of an expression, e.g. in the result of } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 when -the solution is parametric in one of the variable. - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -solve(\{x+3=y-2z,y-3x=0\},\{x,y,z\}); \par - \par - \par - 2*ARBCOMPLEX(1) + 3 \par - \{X=-------------------, \par - 2 \par - 3*ARBCOMPLEX(1) + 3 \par - Y=-------------------, \par - 2 \par - Z=ARBCOMPLEX(1)\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARGLENGTH} - -${\footnote \pard\plain \sl240 \fs20 $ ARGLENGTH} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0776} - - K{\footnote \pard\plain \sl240 \fs20 K argument;ARGLENGTH operator;operator} - -}{\b\f2 ARGLENGTH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 arglength} {\f2 returns the number of arguments of the top-level -operator in its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 arglength} {\f4 () -\par -\par -}{\f2 \par - can be any valid REDUCE algebraic expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -arglength(a + b + c + d); \par - \par - 4 \par - \par - \par -arglength(a/b/c); \par - \par - 2 \par - \par - \par -arglength(log(sin(df(r**3*x,x)))); \par - \par - \par - 1 \par - \par -\pard \sl240 }{\f2 In the first example, }{\f3 +} {\f2 is an n-ary operator, so the number of terms -is returned. In the second example, since }{\f3 /} {\f2 is a binary operator, the -argument is actually (a/b)/c, so there are two terms at the top level. In -the last example, no matter how deeply the operators are nested, there is -still only one argument at the top level. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COEFF} - -${\footnote \pard\plain \sl240 \fs20 $ COEFF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0777} - - K{\footnote \pard\plain \sl240 \fs20 K coefficient;COEFF operator;operator} - -}{\b\f2 COEFF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 coeff} {\f2 operator returns the coefficients of the powers of the -specified variable in the given expression, in a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 coeff} {\f4 (}{\f3 ,} {\f4 ) -\par -\par -}{\f2 \par - is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch -} -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on. must be a kernel. The results are -returned in a list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -coeff((x+y)**3,x); \par - \par - 3 2 \par - \{Y ,3*Y ,3*Y,1\} \par - \par - \par -coeff((x+2)**4 + sin(x),x); \par - \par - \{SIN(X) + 16,32,24,8,1\} \par - \par - \par -high_pow; \par - \par - 4 \par - \par - \par -low_pow; \par - \par - 0 \par - \par - \par -ab := x**9 + sin(x)*x**7 + sqrt(y); \par - \par - \par - \par - 7 9 \par - AB := SQRT(Y) + SIN(X)*X + X \par - \par - \par -coeff(ab,x); \par - \par - \{SQRT(Y),0,0,0,0,0,0,SIN(X),0,1\} \par - \par -\pard \sl240 }{\f2 The variables } -{\f2\uldb high_pow}{\v\f2 HIGH\_POW} -{\f2 and } -{\f2\uldb low_pow}{\v\f2 LOW\_POW} -{\f2 are set to the -highest and lowest powers of the variable, respectively, appearing in the -expression. -\par -\par -The coefficients are put into a list, with the coefficient of the lowest -(constant) term first. You can use the usual list access methods -(}{\f3 first} {\f2 , }{\f3 second} {\f2 , }{\f3 third} {\f2 , }{\f3 rest} {\f2 , }{\f3 length} {\f2 , and -}{\f3 part} {\f2 ) to extract them. If a power does not appear in the -expression, the corresponding element of the list is zero. Terms involving -functions of the specified variable but not including powers of it (for -example in the expression }{\f3 x**4 + 3*x**2 + tan(x)} {\f2 ) are placed in the -constant term. -\par -\par -Since the }{\f3 coeff} {\f2 command deals with the expanded form of the expression, -you may get unexpected results when } -{\f2\uldb exp}{\v\f2 EXP} -{\f2 is off, or when -} -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 or } -{\f2\uldb ifactor}{\v\f2 IFACTOR} -{\f2 are on. -\par -\par -If you want only a specific coefficient rather than all of them, use the -} -{\f2\uldb coeffn}{\v\f2 COEFFN} -{\f2 operator. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COEFFN} - -${\footnote \pard\plain \sl240 \fs20 $ COEFFN} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0778} - - K{\footnote \pard\plain \sl240 \fs20 K coefficient;COEFFN operator;operator} - -}{\b\f2 COEFFN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 coeffn} {\f2 operator takes three arguments: an expression, a kernel, and -a non-negative integer. It returns the coefficient of the kernel to that -integer power, appearing in the expression. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 coeffn} {\f4 (,,) -\par -\par -}{\f2 \par - must be a polynomial, unless } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on which -allows rational expressions. must be a kernel, and - must be a non-negative integer. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -ff := x**7 + sin(y)*x**5 + y**4 + x + 7; \par - \par - \par - 5 7 4 \par - FF := SIN(Y)*X + X + X + Y + 7 \par - \par - \par -coeffn(ff,x,5); \par - \par - SIN(Y) \par - \par - \par -coeffn(ff,z,3); \par - \par - 0 \par - \par - \par -coeffn(ff,y,0); \par - \par - 5 7 \par - SIN(Y)*X + X + X + 7 \par - \par - \par - \par -rr := 1/y**2+y**3+sin(y); \par - \par - 2 5 \par - SIN(Y)*Y + Y + 1 \par - RR := -------------------- \par - 2 \par - Y \par - \par - \par -on ratarg; \par - \par - \par -coeffn(rr,y,-2); \par - \par - ***** -2 invalid as COEFFN index \par - \par - \par - \par -coeffn(rr,y,5); \par - \par - 1 \par - --- \par - 2 \par - Y \par - \par -\pard \sl240 }{\f2 If the given power of the kernel does not appear in the expression, -}{\f3 coeffn} {\f2 returns 0. Negative powers are never detected, even if -they appear in the expression and } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 are on. }{\f3 coeffn} {\f2 -with an integer argument of 0 returns any terms in the expression that -do not contain the given kernel. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONJ} - -${\footnote \pard\plain \sl240 \fs20 $ CONJ} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0779} - - K{\footnote \pard\plain \sl240 \fs20 K complex;conjugate;CONJ operator;operator} - -}{\b\f2 CONJ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 conj} {\f4 () or }{\f3 conj} {\f4 -\par -\par -}{\f2 \par -This operator returns the complex conjugate of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators } -{\f2\uldb repart}{\v\f2 REPART} -{\f2 and } -{\f2\uldb impart}{\v\f2 IMPART} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -conj(1+i); \par - \par - 1-I \par - \par - \par -conj(a+i*b); \par - \par - REPART(A) - REPART(B)*I - IMPART(A)*I - IMPART(B) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONTINUED_FRACTION} - -${\footnote \pard\plain \sl240 \fs20 $ CONTINUED_FRACTION} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0780} - - K{\footnote \pard\plain \sl240 \fs20 K rational numbers;approximation;CONTINUED_FRACTION operator;operator} - -}{\b\f2 CONTINUED_FRACTION}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 continued_fraction} {\f4 () -or }{\f3 continued_fraction} {\f4 ( ,) -\par -\par -}{\f2 \par -This operator approximates the real number -( } -{\f2\uldb rational}{\v\f2 RATIONAL} -{\f2 number, } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 number) -into a continued fraction. The result is a list of two elements: the -first one is the rational value of the approximation, the second one -is the list of terms of the continued fraction which represents the -same value according to the definition }{\f3 t0 +1/(t1 + 1/(t2 + ...))} {\f2 . -Precision: the second optional parameter is an upper bound -for the absolute value of the result denominator. If omitted, the -approximation is performed up to the current system precision. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -continued_fraction pi; \par - \par - \par - 1146408 \par - \{-------,\{3,7,15,1,292,1,1,1,2,1\}\} \par - 364913 \par - \par - \par -continued_fraction(pi,100); \par - \par - \par - 22 \par - \{--,\{3,7\}\} \par - 7 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DECOMPOSE} - -${\footnote \pard\plain \sl240 \fs20 $ DECOMPOSE} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0781} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;decomposition;DECOMPOSE operator;operator} - -}{\b\f2 DECOMPOSE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 decompose} {\f2 operator takes a multivariate polynomial as argument, -and returns an expression and a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of -} -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s from which the -original polynomial can be found by composition. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 decompose} {\f4 () or }{\f3 decompose} {\f4 - -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4- \par - 218900*x^3+65690*x^2-7700*x+234) \par -\pard \sl240 \par - \par - \par - 2 2 2 \par - U + 35*U + 234, U=V + 10*V, V=X - 22*X \par - \par - \par - decompose(u^2+v^2+2u*v+1) \par - \par - 2 \par - W + 1, W=U + V \par - \par -\pard \sl240 }{\f2 Unlike factorization, this decomposition is not unique. Further -details can be found in V.S. Alagar, M.Tanh, , Proc. EUROCAL 1985, pp 150-153 (Springer) and J. von zur -Gathen, -, J. -Symbolic Computation (1990) 9, 281-299. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEG} - -${\footnote \pard\plain \sl240 \fs20 $ DEG} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0782} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;degree;DEG operator;operator} - -}{\b\f2 DEG}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 deg} {\f2 returns the highest degree of its variable argument -found in its expression argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 deg} {\f4 (,) -\par -\par -}{\f2 \par - is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch -} -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on. must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . The -results are returned in a list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -deg((x+y)**5,x); \par - \par - 5 \par - \par - \par - \par -deg((a+b)*(c+2*d)**2,d); \par - \par - 2 \par - \par - \par - \par -deg(x**2 + cos(y),sin(x)); \par - \par - \par -deg((x**2 + sin(x))**5,sin(x)); \par - \par - 5 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEN} - -${\footnote \pard\plain \sl240 \fs20 $ DEN} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0783} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;denominator;DEN operator;operator} - -}{\b\f2 DEN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 den} {\f2 operator returns the denominator of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 den} {\f4 () -\par -\par -}{\f2 \par - is ordinarily a rational expression, but may be any valid -scalar REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -a := x**3 + 3*x**2 + 12*x; \par - \par - 2 \par - A := X*(X + 3*X + 12) \par - \par - \par - \par -b := 4*x*y + x*sin(x); \par - \par - B := X*(SIN(X) + 4*Y) \par - \par - \par - \par -den(a/b); \par - \par - SIN(X) + 4*Y \par - \par - \par - \par -den(aa/4 + bb/5); \par - \par - 20 \par - \par - \par - \par -den(100/6); \par - \par - 3 \par - \par - \par - \par -den(sin(x)); \par - \par - 1 \par - \par -\pard \sl240 }{\f2 }{\f3 den} {\f2 returns the denominator of the expression after it has been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression does not have any -other denominator, 1 is returned. -\par -\par -Switch settings, such as } -{\f2\uldb mcd}{\v\f2 MCD} -{\f2 or } -{\f2\uldb rational}{\v\f2 RATIONAL} -{\f2 , have an -effect on the denominator of an expression. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DF} - -${\footnote \pard\plain \sl240 \fs20 $ DF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0784} - - K{\footnote \pard\plain \sl240 \fs20 K partial derivative;derivative;DF operator;operator} - -}{\b\f2 DF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 df} {\f2 operator finds partial derivatives with respect to one or -more variables. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 df} {\f4 (}{\f3 ,} {\f4 - [}{\f3 ,} {\f4 ] - \{}{\f3 ,} {\f4 [ }{\f3 ,} {\f4 ] \}) -\par -\par -}{\f2 \par - can be any valid REDUCE algebraic expression. -must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , and is the differentiation variable. - must be a non-negative integer. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -df(x**2,x); \par - \par - 2*X \par - \par - \par - \par -df(x**2*y + sin(y),y); \par - \par - 2 \par - COS(Y) + X \par - \par - \par - \par -df((x+y)**10,z); \par - \par - 0 \par - \par - \par - \par - \par -df(1/x**2,x,2); \par - \par - 6 \par - --- \par - 4 \par - X \par - \par - \par - \par -df(x**4*y + sin(y),y,x,3); \par - \par - 24*X \par - \par - \par - \par -for all x let df(tan(x),x) = sec(x)**2; \par - \par - \par -df(tan(3*x),x); \par - \par - 2 \par - 3*SEC(3*X) \par - \par -\pard \sl240 }{\f2 An error message results if a non-kernel is entered as a differentiation -operator. If the optional number is omitted, it is assumed to be 1. -See the declaration } -{\f2\uldb depend}{\v\f2 DEPEND} -{\f2 to establish dependencies for implicit -differentiation. -\par -\par -You can define your own differentiation rules, expanding REDUCE's -capabilities, using the } -{\f2\uldb let}{\v\f2 LET} -{\f2 command as shown in the last example -above. Note that once you add your own rule for differentiating a -function, it supersedes REDUCE's normal handling of that function for the -duration of the REDUCE session. If you clear the rule -(} -{\f2\uldb clearrules}{\v\f2 CLEARRULES} -{\f2 ), you don't get back -to the previous rule. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXPAND\_CASES} - -${\footnote \pard\plain \sl240 \fs20 $ EXPAND_CASES} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0785} - - K{\footnote \pard\plain \sl240 \fs20 K solve;EXPAND_CASES operator;operator} - -}{\b\f2 EXPAND\_CASES}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -When a } -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 form in a result of } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 -has been converted to a } -{\f2\uldb one_of}{\v\f2 ONE\_OF} -{\f2 form, }{\f3 expand_cases} {\f2 -can be used to convert this into form corresponding to the -normal explicit results of } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 . See } -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXPREAD} - -${\footnote \pard\plain \sl240 \fs20 $ EXPREAD} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0786} - - K{\footnote \pard\plain \sl240 \fs20 K input;EXPREAD operator;operator} - -}{\b\f2 EXPREAD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 expread} {\f4 () -\par -\par -}{\f2 \par -}{\f3 expread} {\f2 reads one well-formed expression from the current input -buffer and returns its value. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -expread(); a+b; \par - \par - A + B \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FACTORIZE} - -${\footnote \pard\plain \sl240 \fs20 $ FACTORIZE} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0787} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;factorize;FACTORIZE operator;operator} - -}{\b\f2 FACTORIZE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 factorize} {\f2 operator factors a given expression. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 factorize} {\f4 () -\par -\par -}{\f2 \par - should be a polynomial, otherwise an error will result. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -fff := factorize(x^3 - y^3); \par - \par - 2 2 \par - \{X - Y,X + X*Y + Y \} \par - \par - \par -fac1 := first fff; \par - \par - FAC1 := X - Y \par - \par - \par -factorize(x^15 - 1); \par - \par - \{X - 1, \par - 2 \par - X + X + 1, \par - 4 3 2 \par - X + X + X + X + 1, \par - 8 7 6 5 4 \par - X - X + X - X + X - X + 1\} \par - \par - \par -lastone := part(ws,length ws); \par - \par - 8 7 6 5 4 \par - LASTONE := X - X + X - X + X - X + 1 \par - \par - \par -setmod 2; \par - \par - 1 \par - \par - \par -on modular; \par - \par -factorize(x^15 - 1); \par - \par - \{X + 1, \par - 2 \par - X + X + 1, \par - 4 \par - X + X + 1, \par - 4 3 \par - X + X + 1, \par - 4 3 2 \par - X + X + X + X + 1\} \par - \par -\pard \sl240 }{\f2 The }{\f3 factorize} {\f2 command returns the factors it finds as a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -You can therefore use the usual list access methods (} -{\f2\uldb first}{\v\f2 FIRST} -{\f2 , -} -{\f2\uldb second}{\v\f2 SECOND} -{\f2 , } -{\f2\uldb third}{\v\f2 THIRD} -{\f2 , } -{\f2\uldb rest}{\v\f2 REST} -{\f2 , } -{\f2\uldb length}{\v\f2 LENGTH} -{\f2 and -} -{\f2\uldb part}{\v\f2 PART} -{\f2 ) to extract the factors. -\par -\par -If the given to }{\f3 factorize} {\f2 is an integer, it will be -factored into its prime components. To factor any integer factor of a -non-numerical expression, the switch } -{\f2\uldb ifactor}{\v\f2 IFACTOR} -{\f2 should be turned on. -Its default is off. } -{\f2\uldb ifactor}{\v\f2 IFACTOR} -{\f2 has effect only when factoring is -explicitly done by }{\f3 factorize} {\f2 , not when factoring is automatically -done with the } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 switch. If full factorization is not -needed the switch } -{\f2\uldb limitedfactors}{\v\f2 LIMITEDFACTORS} -{\f2 allows you to reduce the -computing time of calls to }{\f3 factorize} {\f2 . -\par -\par -Factoring can be done in a modular domain by calling }{\f3 factorize} {\f2 when -} -{\f2\uldb modular}{\v\f2 MODULAR} -{\f2 is on. You can set the modulus with the } -{\f2\uldb setmod}{\v\f2 SETMOD} -{\f2 -command. The last example above shows factoring modulo 2. -\par -\par -For general comments on factoring, see comments under the switch -} -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HYPOT} - -${\footnote \pard\plain \sl240 \fs20 $ HYPOT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0788} - - K{\footnote \pard\plain \sl240 \fs20 K HYPOT operator;operator} - -}{\b\f2 HYPOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 hypot(,) -\par -\par -}{\f2 \par -If }{\f3 rounded} {\f2 is on, and the two arguments evaluate to numbers, this -operator returns the square root of the sums of the squares of the -arguments in a manner that avoids intermediate overflow. In other cases, -an expression in the original operator is returned. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -hypot(3,4); \par - \par - HYPOT(3,4) \par - \par - \par -on rounded; \par - \par -ws; \par - \par - 5.0 \par - \par - \par -hypot(a,b); \par - \par - HYPOT(A,B) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # IMPART} - -${\footnote \pard\plain \sl240 \fs20 $ IMPART} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0789} - - K{\footnote \pard\plain \sl240 \fs20 K complex;imaginary part;IMPART operator;operator} - -}{\b\f2 IMPART}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 impart} {\f4 () or }{\f3 impart} {\f4 -\par -\par -}{\f2 \par -This operator returns the imaginary part of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators } -{\f2\uldb repart}{\v\f2 REPART} -{\f2 and }{\f3 impart} {\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par -impart(1+i); \par - \par - 1 \par - \par - \par -impart(a+i*b); \par - \par - REPART(B) + IMPART(A) \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INT} - -${\footnote \pard\plain \sl240 \fs20 $ INT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0790} - - K{\footnote \pard\plain \sl240 \fs20 K integration;INT operator;operator} - -}{\b\f2 INT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 int} {\f2 operator performs analytic integration on a variety of -functions. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 int} {\f4 (,) -\par -\par -}{\f2 \par - can be any scalar expression. involving polynomials, log -functions, exponential functions, or tangent or arctangent expressions. -}{\f3 int} {\f2 attempts expressions involving error functions, dilogarithms -and other trigonometric expressions. Integrals involving algebraic -extensions (such as square roots) may not succeed. must be a -REDUCE } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -int(x**3 + 3,x); \par - \par - 3 \par - X*(X + 12) \par - ----------- \par - 4 \par - \par - \par - \par -int(sin(x)*exp(2*x),x); \par - \par - \par - 2*X \par - E *(COS(X) - 2*SIN(X)) \par - - ------------------------ \par - 5 \par - \par - \par -int(1/(x^2-2),x); \par - \par - \par - SQRT(2)*(LOG( - SQRT(2) + X) - LOG(SQRT(2) + X)) \par - ------------------------------------------------ \par - 4 \par - \par - \par -int(sin(x)/(4 + cos(x)**2),x); \par - \par - \par - COS(X) \par - ATAN(------) \par - 2 \par - - ------------ \par - 2 \par - \par - \par - \par -int(1/sqrt(x^2-x),x); \par - \par - SQRT(X)*SQRT(X - 1) \par - INT(-------------------,X) \par - 2 \par - X -X \par - \par -\pard \sl240 }{\f2 Note that REDUCE couldn't handle the last integral with its default -integrator, since the integrand involves a square root. However, -the integral can be found using the } -{\f2\uldb algint}{\v\f2 ALGINT} -{\f2 package. -Alternatively, you could add a rule using the } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement -to evaluate this integral. -\par -\par -The arbitrary constant of integration is not shown. Definite integrals can -be found by evaluating the result at the limits of integration (use -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 ) and subtracting the lower from the higher. Evaluation can -be easily done by the } -{\f2\uldb sub}{\v\f2 SUB} -{\f2 operator. -\par -\par -When }{\f3 int} {\f2 cannot find an integral it returns an expression -involving formal }{\f3 int} {\f2 expressions unless the switch -} -{\f2\uldb failhard}{\v\f2 FAILHARD} -{\f2 has been set. If not all of the expression -can be integrated, the switch } -{\f2\uldb nolnr}{\v\f2 NOLNR} -{\f2 controls whether a partially -integrated result should be returned or not. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INTERPOL} - -${\footnote \pard\plain \sl240 \fs20 $ INTERPOL} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0791} - - K{\footnote \pard\plain \sl240 \fs20 K approximation;polynomial;interpolation;INTERPOL operator;operator} - -}{\b\f2 INTERPOL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -}{\f3 interpol} {\f2 generates an interpolation polynomial. - \par -syntax: \par -}{\f4 \par -\par -interpol(,,) -\par -\par -}{\f2 \par - and are } -{\f2\uldb list}{\v\f2 LIST} -{\f2 s of equal length and - is an algebraic expression (preferably a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 ). -The interpolation polynomial is generated in the given variable of degree -length()-1. The unique polynomial }{\f3 f} {\f2 is defined by the -property that for corresponding elements }{\f3 v} {\f2 of and -}{\f3 p} {\f2 of the relation }{\f3 f(p)=v} {\f2 holds. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -f := for i:=1:4 collect(i**3-1); \par - \par - F := 0,7,26,63 \par - \par - \par -p := \{1,2,3,4\}; \par - \par - P := 1,2,3,4 \par - \par - \par -interpol(f,x,p); \par - \par - 3 \par - X - 1 \par - \par -\pard \sl240 }{\f2 The Aitken-Neville interpolation algorithm is used which guarantees a -stable result even with rounded numbers and an ill-conditioned problem. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LCOF} - -${\footnote \pard\plain \sl240 \fs20 $ LCOF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0792} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;coefficient;LCOF operator;operator} - -}{\b\f2 LCOF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 lcof} {\f2 operator returns the leading coefficient of a given expression -with respect to a given variable. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 lcof} {\f4 (,) -\par -\par -}{\f2 \par - is ordinarily a polynomial. If } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on, -a rational expression may also be used, otherwise an error results. - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -lcof((x+2*y)**5,y); \par - \par - 32 \par - \par - \par -lcof((x + y*sin(x))**2 + cos(x)*sin(x)**2,sin(x)); \par - \par - \par - \par - 2 \par - COS(X) + Y \par - \par - \par -lcof(x**2 + 3*x + 17,y); \par - \par - 2 \par - X + 3*X + 17 \par - \par -\pard \sl240 }{\f2 If the kernel does not appear in the expression, }{\f3 lcof} {\f2 returns the -expression. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LENGTH} - -${\footnote \pard\plain \sl240 \fs20 $ LENGTH} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0793} - - K{\footnote \pard\plain \sl240 \fs20 K list;LENGTH operator;operator} - -}{\b\f2 LENGTH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 length} {\f2 operator returns the number of items in a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 , the -number of -terms in an expression, or the dimensions of an array or matrix. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 length} {\f4 () or }{\f3 length} {\f4 -\par -\par -}{\f2 \par - can be a list structure, an array, a matrix, or a scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -alist := \{a,b,\{ww,xx,yy,zz\}\}; \par - \par - ALIST := \{A,B,\{WW,XX,YY,ZZ\}\} \par - \par - \par -length alist; \par - \par - 3 \par - \par - \par -length third alist; \par - \par - 4 \par - \par - \par -dlist := \{d\}; \par - \par - DLIST := \{D\} \par - \par - \par -length rest dlist; \par - \par - 0 \par - \par - \par -matrix mmm(4,5); \par - \par -length mmm; \par - \par - \{4,5\} \par - \par - \par -array aaa(5,3,2); \par - \par -length aaa; \par - \par - \{6,4,3\} \par - \par - \par -eex := (x+3)**2/(x-y); \par - \par - 2 \par - X + 6*X + 9 \par - EEX := ------------ \par - X - Y \par - \par - \par -length eex; \par - \par - 5 \par - \par -\pard \sl240 }{\f2 An item in a list that is itself a list only counts as one item. An error -message will be printed if }{\f3 length} {\f2 is called on a matrix which has -not had its dimensions set. The }{\f3 length} {\f2 of an array includes the -zeroth element of each dimension, showing the full number of elements -allocated. (Declaring an array A with n elements -allocates A(0),A(1),...,A(n).) The -}{\f3 length} {\f2 of an expression is the total number of additive terms -appearing in the numerator and denominator of the expression. Note that -subtraction of a term is represented internally as addition of a negative -term. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LHS} - -${\footnote \pard\plain \sl240 \fs20 $ LHS} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0794} - - K{\footnote \pard\plain \sl240 \fs20 K equation;left-hand side;LHS operator;operator} - -}{\b\f2 LHS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 lhs} {\f2 operator returns the left-hand side of an } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 , -such as those -returned in a list by } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 lhs} {\f4 () or }{\f3 lhs} {\f4 -\par -\par -\par -\par -}{\f2 must be an equation of the form -\par -\par -}{\f3 left-hand side} {\f3 =} {\f3 right-hand side} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -polly := (x+3)*(x^4+2x+1); \par - \par - 5 4 2 \par - POLLY := X + 3*X + 2*X + 7*X + 3 \par - \par - \par -pollyroots := solve(polly,x); \par - \par - POLLYROOTS := \{X=ROOT F(X3 - X2 + X + 1,X , \par - O ) \par - X=-1, \par - X=-3\} \par - \par - \par -variable := lhs first pollyroots; \par - \par - VARIABLE := X \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LIMIT} - -${\footnote \pard\plain \sl240 \fs20 $ LIMIT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0795} - - K{\footnote \pard\plain \sl240 \fs20 K l'Hopital's rule;limit;LIMIT operator;operator} - -}{\b\f2 LIMIT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -LIMITS is a fast limit package for REDUCE for functions which are -continuous except for computable poles and singularities, based on -some earlier work by Ian Cohen and John P. Fitch. The Truncated -Power Series package is used for non-critical points, at which -the value of the function is the constant term in the expansion -around that point. l'Hopital's rule is used in critical cases, -with preprocessing of 1-1 forms and reformatting of product forms -in order to apply l'Hopital's rule. A limited amount of bounded -arithmetic is also employed where applicable. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 limit} {\f4 (,,) or -\par -\par -}{\f3 limit!+} {\f4 (,,) or -\par -\par -}{\f3 limit!-} {\f4 (,,) -\par -\par -}{\f2 \par -where is an expression depending of the variable -(a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 ) and is the limit point. -If the limit depends upon the direction of approach to the , -the operators }{\f3 limit!+} {\f2 and }{\f3 limit!-} {\f2 may be used. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -limit(x*cot(x),x,0); \par - \par - 0 \par - \par - \par -limit((2x+5)/(3x-2),x,infinity); \par - \par - 2 \par - -- \par - 3 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LPOWER} - -${\footnote \pard\plain \sl240 \fs20 $ LPOWER} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0796} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;leading power;LPOWER operator;operator} - -}{\b\f2 LPOWER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 lpower} {\f2 operator returns the leading power of an expression with -respect to a kernel. 1 is returned if the expression does not depend on -the kernel. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 lpower} {\f4 (,) -\par -\par -}{\f2 \par - is ordinarily a polynomial. If } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on, -a rational expression may also be used, otherwise an error results. - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -lpower((x+2*y)**6,y); \par - \par - 6 \par - Y \par - \par - \par -lpower((x + cos(x))**8 + df(x**2,x),cos(x)); \par - \par - \par - \par - 8 \par - COS(X) \par - \par - \par -lpower(x**3 + 3*x,y); \par - \par - 1 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LTERM} - -${\footnote \pard\plain \sl240 \fs20 $ LTERM} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0797} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;leading term;LTERM operator;operator} - -}{\b\f2 LTERM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 lterm} {\f2 operator returns the leading term of an expression with -respect to a kernel. The expression is returned if it does not depend on -the kernel. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 lterm} {\f4 (,) -\par -\par -}{\f2 \par - is ordinarily a polynomial. If } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on, -a rational expression may also be used, otherwise an error results. - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -lterm((x+2*y)**6,y); \par - \par - 6 \par - 64*Y \par - \par - \par -lterm((x + cos(x))**8 + df(x**2,x),cos(x)); \par - \par - \par - \par - 8 \par - COS(X) \par - \par - \par -lterm(x**3 + 3*x,y); \par - \par - 3 \par - X + 3X \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MAINVAR} - -${\footnote \pard\plain \sl240 \fs20 $ MAINVAR} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0798} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;main variable;MAINVAR operator;operator} - -}{\b\f2 MAINVAR}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 mainvar} {\f2 operator returns the main variable (in the system's -internal representation) of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mainvar} {\f4 () -\par -\par -\par -\par -}{\f2 is usually a polynomial, but may be any valid REDUCE -scalar expression. In the case of a rational function, the main variable -of the numerator is returned. The main variable returned is a -} -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -test := (a + b + c)**2; \par - \par - 2 2 2 \par - TEST := A + 2*A*B + 2*A*C + B + 2*B*C + C \par - \par - \par -mainvar(test); \par - \par - A \par - \par - \par -korder c,b,a; \par - \par -mainvar(test); \par - \par - C \par - \par - \par -mainvar(2*cos(x)**2); \par - \par - COS(X) \par - \par - \par -mainvar(17); \par - \par - 0 \par - \par -\pard \sl240 }{\f2 The main variable is the first variable in the canonical ordering of -kernels. Generally, alphabetically ordered functions come first, then -alphabetically ordered identifiers (variables). Numbers come last, and as -far as }{\f3 mainvar} {\f2 is concerned belong in the family }{\f3 0} {\f2 . The -canonical ordering can be changed by the declaration } -{\f2\uldb korder}{\v\f2 KORDER} -{\f2 , as -shown above. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MAP} - -${\footnote \pard\plain \sl240 \fs20 $ MAP} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0799} - - K{\footnote \pard\plain \sl240 \fs20 K composite structure;map;MAP operator;operator} - -}{\b\f2 MAP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 map} {\f2 operator applies a uniform evaluation pattern -to all members of a composite structure: a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 , -a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 or the arguments of an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 expression. -The evaluation pattern can be a -unary procedure, an operator, or an algebraic expression with -one free variable. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 map} {\f4 (,) -\par -\par -}{\f2 \par - is a list, a matrix or an operator expression. -\par -\par - is -the name of an operator for a single argument: the operator - is evaluated once with each element of as its single argument, -\par -\par -or an algebraic expression with exactly one } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 , that is -a variable preceded by the tilde symbol: the expression - is evaluated for each element of where the element is - substituted for the free variable, -\par -\par -or a replacement } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 of the form - \par -syntax: \par -}{\f4 \par -\par -}{\f3 var} {\f4 => }{\f3 rep} {\f4 -\par -\par -}{\f2 \par -where is a variable (a without subscript) - and is an expression which contains . - Here }{\f3 rep} {\f2 is evaluated for each element of where - the element is substituted for }{\f3 var} {\f2 . }{\f3 var} {\f2 may be - optionally preceded by a tilde. -\par -\par -The rule form for is needed when more than -one free variable occurs. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -map(abs,\{1,-2,a,-a\}); \par - \par - 1,2,abs(a),abs(a) \par - \par - \par -map(int(~w,x), mat((x^2,x^5),(x^4,x^5))); \par - \par - \par - [ 3 6 ] \par - [ x x ] \par - [---- ----] \par - [ 3 6 ] \par - [ ] \par - [ 5 6 ] \par - [ x x ] \par - [---- ----] \par - [ 5 6 ] \par - \par - \par -map(~w*6, x^2/3 = y^3/2 -1); \par - \par - 2 3 \par - 2*x =3*(y -2) \par - \par -\pard \sl240 }{\f2 You can use }{\f3 map} {\f2 in nested expressions. It is not allowed to -apply }{\f3 map} {\f2 for a non-composed object, e.g. an identifier or a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MKID} - -${\footnote \pard\plain \sl240 \fs20 $ MKID} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0800} - - K{\footnote \pard\plain \sl240 \fs20 K identifier;MKID command;command} - -}{\b\f2 MKID}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 mkid} {\f2 command constructs an identifier, given a stem and an identifier -or an integer. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mkid} {\f4 (,) -\par -\par -}{\f2 \par - can be any valid REDUCE identifier that does not include escaped -special characters. may be an integer, including one given by a -local variable in a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 loop, or any other legal group of -characters. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -mkid(x,3); \par - \par - X3 \par - \par - \par -factorize(x^15 - 1); \par - \par - \{X - 1, \par - 2 \par - X + X + 1, \par - 4 3 2 \par - X + X + X + X + 1, \par - 8 7 5 4 3 \par - X - X + X - X + X - X + 1\} \par - \par - \par - \par -for i := 1:length ws do write set(mkid(f,i),part(ws,i)); \par - \par - \par - \par - 8 7 5 4 3 \par - X - X + X - X + X - X + 1 \par - 4 3 2 \par - X + X + X + X + 1 \par - 2 \par - X + X + 1 \par - X - 1 \par - \par -\pard \sl240 }{\f2 You can use }{\f3 mkid} {\f2 to construct identifiers from inside procedures. This -allows you to handle an unknown number of factors, or deal with variable -amounts of data. It is particularly helpful to attach identifiers to the -answers returned by }{\f3 factorize} {\f2 and }{\f3 solve} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NPRIMITIVE} - -${\footnote \pard\plain \sl240 \fs20 $ NPRIMITIVE} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0801} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;primitive part;NPRIMITIVE operator;operator} - -}{\b\f2 NPRIMITIVE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 nprimitive} {\f4 () or }{\f3 nprimitive} {\f4 - -\par -\par -}{\f2 \par -This operator returns the numerically-primitive part of any scalar -expression. In other words, any overall integer factors in the expression -are removed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -nprimitive((2x+2y)^2); \par - \par - 2 2 \par - X + 2*X*Y + Y \par - \par - \par -nprimitive(3*a*b*c); \par - \par - 3*A*B*C \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NUM} - -${\footnote \pard\plain \sl240 \fs20 $ NUM} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0802} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;numerator;NUM operator;operator} - -}{\b\f2 NUM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 num} {\f2 operator returns the numerator of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 num} {\f4 () or }{\f3 num} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -num(100/6); \par - \par - 50 \par - \par - \par -num(a/5 + b/6); \par - \par - 6*A + 5*B \par - \par - \par -num(sin(x)); \par - \par - SIN(X) \par - \par -\pard \sl240 }{\f2 }{\f3 num} {\f2 returns the numerator of the expression after it has been simplified -by REDUCE. As seen in the examples, this includes putting sums of rational -expressions over a common denominator, and reducing common factors where -possible. If the expression is not a rational expression, it is returned -unchanged. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ODESOLVE} - -${\footnote \pard\plain \sl240 \fs20 $ ODESOLVE} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0803} - - K{\footnote \pard\plain \sl240 \fs20 K solve;differential equation;ODESOLVE operator;operator} - -}{\b\f2 ODESOLVE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 odesolve} {\f2 package is a solver for ordinary differential -equations. At the present time it has still limited capabilities: -\par -\par -1. it can handle only a single scalar equation presented as an - algebraic expression or equation, and -\par -\par -2. it can solve only first-order equations of simple types, linear - equations with constant coefficients and Euler equations. -\par -\par -These solvable types are exactly those for which Lie symmetry -techniques give no useful information. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 odesolve} {\f4 (,,) -\par -\par -\par -\par -}{\f2 is a single scalar expression such that =0 -is the ordinary differential equation (ODE for short) to be solved, or -is an equivalent } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 . -\par -\par - is the name of the dependent variable, - is the name of the independent variable. -\par -\par -A differential in is expressed using the } -{\f2\uldb df}{\v\f2 DF} -{\f2 -operator. Note that in most cases you must declare explicitly - to depend of using a } -{\f2\uldb depend}{\v\f2 DEPEND} -{\f2 -declaration -- otherwise the derivative might be evaluated to -zero on input to }{\f3 odesolve} {\f2 . -\par -\par -The returned value is a list containing the equation giving the general -solution of the ODE (for simultaneous equations this will be a -list of equations eventually). It will contain occurrences of -the operator }{\f3 arbconst} {\f2 for the arbitrary constants in the general -solution. The arguments of }{\f3 arbconst} {\f2 should be new. -A counter }{\f3 !!arbconst} {\f2 is used to arrange this. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -depend y,x; \par - \par -\% A first-order linear equation, with an initial condition \par - \par -ode:=df(y,x) + y * sin x/cos x - 1/cos x$ \par - \par -odesolve(ode,y,x); \par - \par - \{y=arbconst(1)*cos(x) + sin(x)\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ONE\_OF} - -${\footnote \pard\plain \sl240 \fs20 $ ONE_OF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0804} - - K{\footnote \pard\plain \sl240 \fs20 K ONE_OF type;type} - -}{\b\f2 ONE\_OF}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -The operator }{\f3 one_of} {\f2 is used to represent an indefinite choice -of one element from a finite set of objects. - \par -examples: \par -\pard \tx3420 }{\f4 \par -x=one_of\{1,2,5\} \par -\pard \sl240 }{\f2 this equation encodes that x can take one of the values -1,2 or 5}{\f4 \pard \tx3420 \par -\pard \sl240 }{\f2 -REDUCE generates a }{\f3 one_of} {\f2 form in cases when an implicit -}{\f3 root_of} {\f2 expression could be converted to an explicit solution set. -A }{\f3 one_of} {\f2 form can be converted to a }{\f3 solve} {\f2 solution using -} -{\f2\uldb expand_cases}{\v\f2 EXPAND\_CASES} -{\f2 . See } -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PART} - -${\footnote \pard\plain \sl240 \fs20 $ PART} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0805} - - K{\footnote \pard\plain \sl240 \fs20 K decomposition;PART operator;operator} - -}{\b\f2 PART}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 part} {\f2 permits the extraction of various parts or -operators of expressions and } -{\f2\uldb list}{\v\f2 LIST} -{\f3 s} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 part} {\f4 (\{,\}*) -\par -\par -}{\f2 \par - can be any valid REDUCE expression or a list, -integer may be an expression that evaluates to a positive or negative -integer or 0. A positive integer picks up the n th term, -counting from the first term toward the end. A negative integer n -picks up the n th term, counting from the back toward the front. The -integer 0 picks up the operator (which is }{\f3 LIST} {\f2 when the expression -is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 ). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -part((x + y)**5,4); \par - \par - 2 3 \par - 10*X *Y \par - \par - \par -part((x + y)**5,4,2); \par - \par - 2 \par - X \par - \par - \par -part((x + y)**5,4,2,1); \par - \par - X \par - \par - \par -part((x + y)**5,0); \par - \par - PLUS \par - \par - \par -part((x + y)**5,-5); \par - \par - 4 \par - 5*X *Y \par - \par - \par -part((x + y)**5,4) := sin(x); \par - \par - 5 4 3 2 4 5 \par - X + 5*X *Y + 10*X *Y + SIN(X) + 5*X*Y + Y \par - \par - \par -alist := \{x,y,\{aa,bb,cc\},x**2*sqrt(y)\}; \par - \par - \par - 2 \par - ALIST := \{X,Y,\{AA,BB,CC\},SQRT(Y)*X \} \par - \par - \par -part(alist,3,2); \par - \par - BB \par - \par - \par -part(alist,4,0); \par - \par - TIMES \par - \par -\pard \sl240 }{\f2 Additional integer arguments after the first one examine the -terms recursively, as shown above. In the third line, the fourth term -is picked from the original polynomial, 10x^2y^3, -then the second term from that, x^2, and finally the first -component, x. If an integer's absolute value is too large for -the appropriate expression, a message is given. -\par -\par -}{\f3 part} {\f2 works on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind the -current switch settings. It is important to realize that the switch settings -change the operation of }{\f3 part} {\f2 . } -{\f2\uldb pri}{\v\f2 PRI} -{\f2 must be on when -}{\f3 part} {\f2 is used. -\par -\par -When }{\f3 part} {\f2 is used on a polynomial expression that has minus signs, the -}{\f3 +} {\f2 is always returned as the top-level operator. The minus is found -as a unary operator attached to the negative term. -\par -\par -}{\f3 part} {\f2 can also be used to change the relevant part of the expression or -list as shown in the sixth example line. The }{\f3 part} {\f2 operator returns the -changed expression, though original expression is not changed. You can -also use }{\f3 part} {\f2 to change the operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PF} - -${\footnote \pard\plain \sl240 \fs20 $ PF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0806} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;partial fraction;PF operator;operator} - -}{\b\f2 PF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 pf(,) -\par -\par -}{\f2 \par -}{\f3 pf} {\f2 transforms into a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of partial fraction -s -with respect to the main variable, . }{\f3 pf} {\f2 does a -complete partial fraction decomposition, and as the algorithms used are -fairly unsophisticated (factorization and the extended Euclidean -algorithm), the code may be unacceptably slow in complicated cases. - \par -examples: \par -\pard \tx3420 }{\f4 \par -pf(2/((x+1)^2*(x+2)),x); \par - \par - 2 -2 2 \par - \{-----,-----,------------\} \par - X + 2 X + 1 2 \par - X + 2*X + 1 \par - \par - \par -off exp; \par - \par -pf(2/((x+1)^2*(x+2)),x); \par - \par - \par - 2 - 2 2 \par - \{-----,-----,--------\} \par - X + 2 X + 1 2 \par - (X + 1) \par - \par - \par -for each j in ws sum j; \par - \par - 2 \par - ---------------- \par - 2 \par - ( + 2)*(X + 1) \par - \par -\pard \sl240 }{\f2 \par -\par -If you want the denominators in factored form, turn } -{\f2\uldb exp}{\v\f2 EXP} -{\f2 off, as -shown in the second example above. As shown in the final example, the -} -{\f2\uldb for}{\v\f2 FOR} -{\f2 }{\f3 each} {\f2 construct can be used to recombine the terms. -Alternatively, one can use the operations on lists to extract any desired -term. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PROD} - -${\footnote \pard\plain \sl240 \fs20 $ PROD} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0807} - - K{\footnote \pard\plain \sl240 \fs20 K product;Gosper algorithm;PROD operator;operator} - -}{\b\f2 PROD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 prod} {\f2 returns -the indefinite or definite product of a given expression. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 prod} {\f4 (,[, [, ]]) -\par -\par -\par -\par -}{\f2 where is the expression to be multiplied, is the -control variable (a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 ), and and -uplim are the optional lower and upper limits. If is -not supplied the upper limit is taken as . The -Gosper algorithm is used. If there is no closed form solution, -the operator returns the input unchanged. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -prod(k/(k-2),k); \par - \par - k*( - k + 1) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REDUCT} - -${\footnote \pard\plain \sl240 \fs20 $ REDUCT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0808} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;reductum;REDUCT operator;operator} - -}{\b\f2 REDUCT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 reduct} {\f2 operator returns the remainder of its expression after the -leading term with respect to the kernel in the second argument is removed. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 reduct} {\f4 (,) -\par -\par -}{\f2 \par - is ordinarily a polynomial. If } -{\f2\uldb ratarg}{\v\f2 RATARG} -{\f2 is on, -a rational expression may also be used, otherwise an error results. - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -reduct((x+y)**3,x); \par - \par - 2 2 \par - Y*(3*X + 3*X*Y + Y ) \par - \par - \par -reduct(x + sin(x)**3,sin(x)); \par - \par - X \par - \par - \par -reduct(x + sin(x)**3,y); \par - \par - 0 \par - \par -\pard \sl240 }{\f2 If the expression does not contain the kernel, }{\f3 reduct} {\f2 returns 0. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REPART} - -${\footnote \pard\plain \sl240 \fs20 $ REPART} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0809} - - K{\footnote \pard\plain \sl240 \fs20 K complex;real part;REPART operator;operator} - -}{\b\f2 REPART}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 repart} {\f4 () or }{\f3 repart} {\f4 -\par -\par -}{\f2 \par -This operator returns the real part of an expression, if that argument has an -numerical value. A non-numerical argument is returned as an expression in -the operators }{\f3 repart} {\f2 and } -{\f2\uldb impart}{\v\f2 IMPART} -{\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par -repart(1+i); \par - \par - 1 \par - \par - \par -repart(a+i*b); \par - \par - REPART(A) - IMPART(B) \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RESULTANT} - -${\footnote \pard\plain \sl240 \fs20 $ RESULTANT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0810} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;RESULTANT operator;operator} - -}{\b\f2 RESULTANT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 resultant} {\f2 operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials have -a root in common. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 resultant} {\f4 (,,) -\par -\par -}{\f2 \par - must be a polynomial containing ; - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -resultant(x**2 + 2*x + 1,x+1,x); \par - \par - 0 \par - \par - \par -resultant(x**2 + 2*x + 1,x-3,x); \par - \par - 16 \par - \par - \par -resultant(z**3 + z**2 + 5*z + 5, \par - z**4 - 6*z**3 + 16*z**2 - 30*z + 55, \par - z); \par -\pard \sl240 \par - \par - 0 \par - \par - \par -resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); \par - \par - \par - 6 5 4 3 2 \par - Y + 18*Y + 120*Y + 360*Y + 480*Y + 288*Y + 64 \par - \par -\pard \sl240 }{\f2 The resultant is the determinant of the Sylvester matrix, formed from the -coefficients of the two polynomials in the following way: -\par -\par -Given two polynomials: -\par -\par -\pard \tx3420 }{\f4 \par - n n-1 \par - a x + a1 x + ... + an \par - \par -\pard \sl240 }{\f2 and -\par -\par -\pard \tx3420 }{\f4 \par - m m-1 \par - b x + b1 x + ... + bm \par - \par -\pard \sl240 }{\f2 form the (m+n)x(m+n-1) Sylvester matrix by the following means: -\par -\par -\pard \tx3420 }{\f4 \par - 0.......0 a a1 .......... an \par - 0....0 a a1 .......... an 0 \par - . . . . \par - a0 a1 .......... an 0.......0 \par - 0.......0 b b1 .......... bm \par - 0....0 b b1 .......... bm 0 \par - . . . . \par - b b1 .......... bm 0.......0 \par - \par -\pard \sl240 }{\f2 If the determinant of this matrix is 0, the two polynomials have a common -root. Finding the resultant of large expressions is time-consuming, due -to the time needed to find a large determinant. -\par -\par -The sign conventions }{\f3 resultant} {\f2 uses are those given in the article, -``Computing in Algebraic Extensions,'' by R. Loos, appearing in -, 2nd ed., -edited by B. Buchberger, G.E. Collins and R. Loos, and published by -Springer-Verlag, 1983. -These are: -\par -\par -\pard \tx3420 }{\f4 \par - resultant(p(x),q(x),x) = (-1)^\{deg p(x)*deg q(x)\} * resultant(q(x),p(x),x), \par - resultant(a,p(x),x) = a^\{deg p(x)\}, \par - resultant(a,b,x) = 1 \par -\pard \sl240 }{\f2 where p(x) and q(x) are polynomials which have x as a variable, and -a and b are free of x. -\par -\par -Error messages are given if }{\f3 resultant} {\f2 is given a non-polynomial -expression, or a non-kernel variable. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RHS} - -${\footnote \pard\plain \sl240 \fs20 $ RHS} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0811} - - K{\footnote \pard\plain \sl240 \fs20 K equation;right-hand side;RHS operator;operator} - -}{\b\f2 RHS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 rhs} {\f2 operator returns the right-hand side of an } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 , -such as those returned in a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 by } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 rhs} {\f4 () or }{\f3 rhs} {\f4 <\{equation> -\par -\par -}{\f2 \par - must be an equation of the form left-hand side = right-hand -side. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); \par - \par - \par - 2 \par - SQRT(24*Y + 60*Y + 25) + 6*Y + 5 \par - ROOTS := \{X= - ---------------------------------, \par - 2 \par - 2 \par - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 \par - X= ---------------------------------\} \par - 2 \par - \par - \par -root1 := rhs first roots; \par - \par - 2 \par - SQRT(24*Y + 60*Y + 25) + 6*Y + 5 \par - ROOT1 := - --------------------------------- \par - 2 \par - \par - \par -root2 := rhs second roots; \par - \par - 2 \par - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 \par - ROOT2 := ---------------------------------- \par - 2 \par - \par -\pard \sl240 }{\f2 An error message is given if }{\f3 rhs} {\f2 is applied to something other than an -equation. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOT\_OF} - -${\footnote \pard\plain \sl240 \fs20 $ ROOT_OF} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0812} - - K{\footnote \pard\plain \sl240 \fs20 K solve;roots;ROOT_OF operator;operator} - -}{\b\f2 ROOT\_OF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -When the operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 is unable to find an explicit solution -or if that solution would be too complicated, the result is presented -as formal root expression using the internal operator }{\f3 root_of} {\f2 -and a new local variable. An expression with a top level }{\f3 root_of} {\f2 -is implicitly a list with an unknown number of elements since we -can't always know how many solutions an equation has. If a -substitution is made into such an expression, closed form solutions -can emerge. If this occurs, the }{\f3 root_of} {\f2 construct is -replaced by an operator } -{\f2\uldb one_of}{\v\f2 ONE\_OF} -{\f2 . At this point it is -of course possible to transform the result if the original }{\f3 solve} {\f2 -operator expression into a standard }{\f3 solve} {\f2 solution. To -effect this, the operator } -{\f2\uldb expand_cases}{\v\f2 EXPAND\_CASES} -{\f2 can be used. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(a*x^7-x^2+1,x); \par - \par - 7 2 \par - \{x=root_of(a*x_ - x_ + 1,x_)\} \par - \par - \par -sub(a=0,ws); \par - \par - \{x=one_of(1,-1)\} \par - \par - \par -expand_cases ws; \par - \par - x=1,x=-1 \par - \par -\pard \sl240 }{\f2 The components of }{\f3 root_of} {\f2 and }{\f3 one_of} {\f2 expressions can be -processed as usual with operators } -{\f2\uldb arglength}{\v\f2 ARGLENGTH} -{\f2 and } -{\f2\uldb part}{\v\f2 PART} -{\f2 . -A higher power of a }{\f3 root_of} {\f2 expression with a polynomial -as first argument is simplified by using the polynomial as a side relation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SELECT} - -${\footnote \pard\plain \sl240 \fs20 $ SELECT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0813} - - K{\footnote \pard\plain \sl240 \fs20 K list;map;SELECT operator;operator} - -}{\b\f2 SELECT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 select} {\f2 operator extracts from a list -or from the arguments of an n--ary operator elements corresponding -to a boolean predicate. The predicate pattern can be a -unary procedure, an operator or an algebraic expression with -one } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 select} {\f4 (,) -\par -\par -}{\f2 \par - is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -\par -\par - is -the name of an operator for a single argument: the operator - is evaluated once with each element of as its single argument, -\par -\par -or an algebraic expression with exactly one } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 , that is -a variable preceded by the tilde symbol: the expression - is evaluated for each element of where the element is - substituted for the free variable, -\par -\par -or a replacement } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 of the form - \par -syntax: \par -}{\f4 \par -\par -}{\f3 var} {\f4 => }{\f3 rep} {\f4 -\par -\par -}{\f2 \par -where is a variable (a without subscript) - and is an expression which contains . - Here }{\f3 rep} {\f2 is evaluated for each element of where - the element is substituted for }{\f3 var} {\f2 . }{\f3 var} {\f2 may be - optionally preceded by a tilde. -\par -\par -The rule form for is needed when more than -one free variable occurs. The evaluation result of is -interpreted as } -{\f2\uldb boolean value}{\v\f2 boolean_value} -{\f2 corresponding to the conventions of -REDUCE. The result value is built with the leading operator of the -input expression. - \par -examples: \par -\pard \tx3420 }{\f4 \par - select( ~w>0 , \{1,-1,2,-3,3\}) \par - \par - \{1,2,3\} \par - \par - \par - q:=(part((x+y)^5,0):=list) \par - \par - select(evenp deg(~w,y),q); \par - \par - 5 3 2 4 \par - \{x ,10*x *y ,5*x*y \} \par - \par - \par - select(evenp deg(~w,x),2x^2+3x^3+4x^4); \par - \par - \par - 2 4 \par - 2x +4x \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SHOWRULES} - -${\footnote \pard\plain \sl240 \fs20 $ SHOWRULES} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0814} - - K{\footnote \pard\plain \sl240 \fs20 K output;rule;SHOWRULES operator;operator} - -}{\b\f2 SHOWRULES}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 showrules} {\f4 () or - }{\f3 showrules} {\f4 -\par -\par -}{\f2 \par -}{\f3 showrules} {\f2 returns in } -{\f2\uldb rule}{\v\f2 RULE} -{\f3 -list} {\f2 form any -} -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 rules associated with its argument. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -showrules log; \par - \par - \{LOG(E) => 1, \par - LOG(1) => 0, \par - ~X \par - LOG(E ) => ~X, \par - 1 \par - DF(LOG(~X),~X) => --\} \par - ~X \par - \par -\pard \sl240 }{\f2 Such rules can then be manipulated further as with any } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . For -example -}{\f3 rhs first ws;} {\f2 has the value 1. -\par -\par -An operator may have properties that cannot be displayed in such a form, -such as the fact it is an } -{\f2\uldb odd}{\v\f2 ODD} -{\f2 function, or has a definition defined -as a procedure. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SOLVE} - -${\footnote \pard\plain \sl240 \fs20 $ SOLVE} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0815} - - K{\footnote \pard\plain \sl240 \fs20 K solve;root;equation system;equation solving;equation;SOLVE operator;operator} - -}{\b\f2 SOLVE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 solve} {\f2 operator solves a single algebraic } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 or a -system of simultaneous equations. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 solve} {\f4 ( [ , ]) or -\par -\par -}{\f3 solve} {\f4 (\{,...\} [ ,\{ ,...\}] ) -\par -\par -}{\f2 \par -\par -If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. is either a -scalar expression or an } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 . -When more than one expression is given, -the } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of expressions is surrounded by curly braces. -The optional list -of } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 s follows, also in curly braces. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sss := solve(x^2 + 7); \par - \par - Unknown: X \par - SSS := \{X= - SQRT(7)*I, \par - X=SQRT(7)*I\} \par - \par - \par -rhs first sss; \par - \par - - SQRT(7)*I \par - \par - \par -solve(sin(x^2*y),y); \par - \par - 2*ARBINT(1)*PI \par - \{Y=--------------- \par - 2 \par - X \par - PI*(2*ARBINT(1) + 1) \par - Y=--------------------\} \par - 2 \par - X \par - \par - \par -off allbranch; \par - \par -solve(sin(x**2*y),y); \par - \par - \{Y=0\} \par - \par - \par -solve(\{3x + 5y = -4,2*x + y = -10\},\{x,y\}); \par - \par - \par - \par - 22 46 \par - \{\{X= - --,Y=--\}\} \par - 7 7 \par - \par - \par -solve(\{x + a*y + z,2x + 5\},\{x,y\}); \par - \par - \par - \par - 5 2*Z - 5 \par - \{\{X= - -,Y= - -------\}\} \par - 2 2*A \par - \par - \par -ab := (x+2)^2*(x^6 + 17x + 1); \par - \par - \par - 8 7 6 3 2 \par - AB := X + 4*X + 4*X + 17*X + 69*X + 72*X + 4 \par - \par - \par -www := solve(ab,x); \par - \par - \{X=ROOT F(X6 + 17*X + 1),X=-2\} \par - O \par - \par - \par -root_multiplicities; \par - \par - \{1,2\} \par - \par -\pard \sl240 }{\f2 Results of the }{\f3 solve} {\f2 operator are returned as } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f3 s} {\f2 -in a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -You can use the usual list access methods (} -{\f2\uldb first}{\v\f2 FIRST} -{\f2 , -} -{\f2\uldb second}{\v\f2 SECOND} -{\f2 , } -{\f2\uldb third}{\v\f2 THIRD} -{\f2 , } -{\f2\uldb rest}{\v\f2 REST} -{\f2 and } -{\f2\uldb part}{\v\f2 PART} -{\f2 ) to -extract the desired equation, and then use the operators } -{\f2\uldb rhs}{\v\f2 RHS} -{\f2 and -} -{\f2\uldb lhs}{\v\f2 LHS} -{\f2 to access the right-hand or left-hand expression of the -equation. When }{\f3 solve} {\f2 is unable to solve an equation, it returns the -unsolved part as the argument of }{\f3 root_of} {\f2 , with the variable renamed -to avoid confusion, as shown in the last example above. -\par -\par -For one equation, }{\f3 solve} {\f2 uses square-free factorization, roots of -unity, and the known inverses of the } -{\f2\uldb log}{\v\f2 LOG} -{\f2 , } -{\f2\uldb sin}{\v\f2 SIN} -{\f2 , -} -{\f2\uldb cos}{\v\f2 COS} -{\f2 , } -{\f2\uldb acos}{\v\f2 ACOS} -{\f2 , } -{\f2\uldb asin}{\v\f2 ASIN} -{\f2 , and -exponentiation operators. The quadratic, cubic and quartic formulas are -used if necessary, but these are applied only when the switch -} -{\f2\uldb fullroots}{\v\f2 FULLROOTS} -{\f2 is set on; otherwise or when no closed form is available -the result is returned as -} -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 expression. The switch } -{\f2\uldb trigform}{\v\f2 TRIGFORM} -{\f2 -determines which type of cubic and quartic formula is used. -The multiplicity of each solution is given in a list as -the system variable } -{\f2\uldb root_multiplicities}{\v\f2 ROOT\_MULTIPLICITIES} -{\f2 . For systems of -simultaneous linear equations, matrix inversion is used. For nonlinear -systems, the Groebner basis method is used. -\par -\par -Linear equation system solving is influenced by the switch } -{\f2\uldb cramer}{\v\f2 CRAMER} -{\f2 . -\par -\par -Singular systems can be solved when the switch } -{\f2\uldb solvesingular}{\v\f2 SOLVESINGULAR} -{\f2 is -on, which is the default setting. An empty list is returned the system of -equations is inconsistent. For a linear inconsistent system with parameters -the variable } -{\f2\uldb requirements}{\v\f2 requirements} -{\f2 constraints -conditions for the system to become consistent. -\par -\par -For a solvable linear and polynomial system with parameters -the variable } -{\f2\uldb assumptions}{\v\f2 assumptions} -{\f2 -contains a list side relations for the parameters: the solution is -valid only as long as none of these expressions is zero. -\par -\par -If the switch } -{\f2\uldb varopt}{\v\f2 VAROPT} -{\f2 is on (default), the system rearranges the -variable sequence for minimal computation time. Without }{\f3 varopt} {\f2 -the user supplied variable sequence is maintained. -\par -\par -If the solution has free variables (dimension of the solution is greater -than zero), these are represented by } -{\f2\uldb arbcomplex}{\v\f2 ARBCOMPLEX} -{\f2 expressions -as long as the switch } -{\f2\uldb arbvars}{\v\f2 ARBVARS} -{\f2 is on (default). Without -}{\f3 arbvars} {\f2 no explicit equations are generated for free variables. -\par -\par -\par - \par -related: \par -\par -\tab } -{\f2\uldb allbranch}{\v\f2 ALLBRANCH} -{\f2 switch -\par -\tab } -{\f2\uldb arbvars}{\v\f2 ARBVARS} -{\f2 switch -\par -\tab } -{\f2\uldb assumptions}{\v\f2 assumptions} -{\f2 variable -\par -\tab } -{\f2\uldb fullroots}{\v\f2 FULLROOTS} -{\f2 switch -\par -\tab } -{\f2\uldb requirements}{\v\f2 requirements} -{\f2 variable -\par -\tab } -{\f2\uldb roots}{\v\f2 ROOTS} -{\f2 operator -\par -\tab } -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 operator -\par -\tab } -{\f2\uldb trigform}{\v\f2 TRIGFORM} -{\f2 switch -\par -\tab } -{\f2\uldb varopt}{\v\f2 VAROPT} -{\f2 switch -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SORT} - -${\footnote \pard\plain \sl240 \fs20 $ SORT} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0816} - - K{\footnote \pard\plain \sl240 \fs20 K sorting;SORT operator;operator} - -}{\b\f2 SORT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sort} {\f2 operator sorts the elements of a list according to -an arbitrary comparison operator. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 sort} {\f4 (,) -\par -\par -}{\f2 \par - is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of algebraic expressions. - is a comparison operator which defines a partial -ordering among the members of . may be -one of the builtin comparison operators like -}{\f3 <} {\f2 (} -{\f2\uldb lessp}{\v\f2 LESSP} -{\f2 ), }{\f3 <=} {\f2 (} -{\f2\uldb leq}{\v\f2 LEQ} -{\f2 ) -etc., or may be the name of a comparison procedure. -Such a procedure has two arguments, and it returns -} -{\f2\uldb true}{\v\f2 TRUE} -{\f2 if the first argument -ranges before the second one, and 0 or } -{\f2\uldb nil}{\v\f2 NIL} -{\f2 otherwise. -The result of }{\f3 sort} {\f2 is a new list which contains the -elements of in a sequence corresponding to . - \par -examples: \par -\pard \tx3420 }{\f4 \par - procedure ce(a,b); \par - \par - if evenp a and not evenp b then 1 else 0; \par - \par -for i:=1:10 collect random(50)$ \par - \par -sort(ws,>=); \par - \par - \{41,38,33,30,28,25,20,17,8,5\} \par - \par - \par -sort(ws,<); \par - \par - \{5,8,17,20,25,28,30,33,38,41\} \par - \par - \par -sort(ws,ce); \par - \par - \{8,20,28,30,38,5,17,25,33,41\} \par - \par - \par - procedure cd(a,b); \par - \par - if deg(a,x)>deg(b,x) then 1 else \par - \par - if deg(a,x)deg(b,y) then 1 else 0; \par - \par -sort(\{x^2,y^2,x*y\},cd); \par - \par - 2 2 \par - \{x ,x*y,y \} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # STRUCTR} - -${\footnote \pard\plain \sl240 \fs20 $ STRUCTR} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0817} - - K{\footnote \pard\plain \sl240 \fs20 K decomposition;STRUCTR operator;operator} - -}{\b\f2 STRUCTR}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 structr} {\f2 operator breaks its argument expression into named -subexpressions. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 structr} {\f4 ( [,[, ...]]) -\par -\par -}{\f2 \par - may be any valid REDUCE scalar expression. - may be any valid REDUCE }{\f3 identifier} {\f2 . The first -identifier -is the stem for subexpression names, the second is the name to be assigned -to the structured expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -structr(sqrt(x**2 + 2*x) + sin(x**2*z)); \par - \par - \par - ANS1 + ANS2 \par - where \par - 2 \par - ANS2 := SIN(X *Z) \par - 1/2 \par - ANS1 := ((X + 2)*X) \par - \par - \par -ans3; \par - \par - ANS3 \par - \par - \par -on fort; \par - \par -structr((x+1)**5 + tan(x*y*z),var,aa); \par - \par - \par - VAR1=TAN(X*Y*Z) \par - AA=VAR1+X**5+5.*X**4+10.*X**3+10.X**2+5.*X+1 \par - \par -\pard \sl240 }{\f2 The second argument to }{\f3 structr} {\f2 is optional. If it is not given, the -default stem }{\f3 ANS} {\f2 is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does not -store the names and their values unless the switch } -{\f2\uldb savestructr}{\v\f2 SAVESTRUCTR} -{\f2 is -on. -\par -\par -If a third argument is given, the structured expression as a whole is named by -this argument, when } -{\f2\uldb fort}{\v\f2 FORT} -{\f2 is on. The expression is not stored -under this -name. You can send these structured Fortran expressions to a file with the -}{\f3 out} {\f2 command. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SUB} - -${\footnote \pard\plain \sl240 \fs20 $ SUB} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0818} - - K{\footnote \pard\plain \sl240 \fs20 K substitution;SUB operator;operator} - -}{\b\f2 SUB}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sub} {\f2 operator substitutes a new expression for a kernel in an -expression. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 sub} {\f4 (}{\f3 =} {\f4 - \{,}{\f3 =} {\f4 \}*, - ) or -\par -\par -}{\f3 sub} {\f4 (\{}{\f3 =} {\f4 *, - }{\f3 =} {\f3 expression} {\f4 \},) -\par -\par -}{\f2 \par - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , can be any REDUCE -scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sub(x=3,y=4,(x+y)**3); \par - \par - 343 \par - \par - \par -x; \par - \par - X \par - \par - \par -sub(\{cos=sin,sin=cos\},cos a+sin b\} \par - \par - \par - COS(B) + SIN(A) \par - \par -\pard \sl240 }{\f2 Note in the second example that operators can be replaced using the -}{\f3 sub} {\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SUM} - -${\footnote \pard\plain \sl240 \fs20 $ SUM} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0819} - - K{\footnote \pard\plain \sl240 \fs20 K summation;Gosper algorithm;SUM operator;operator} - -}{\b\f2 SUM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 sum} {\f2 returns -the indefinite or definite summation of a given expression. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sum} {\f4 (,[, [, ]]) -\par -\par -\par -\par -}{\f2 where is the expression to be added, is the -control variable (a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 ), and and -are the optional lower and upper limits. If is -not supplied the upper limit is taken as . The Gosper -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sum(4n**3,n); \par - \par - 2 2 \par - n *(n + 2*n + 1) \par - \par - \par -sum(2a+2k*r,k,0,n-1); \par - \par - n*(2*a + n*r - r) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WS} - -${\footnote \pard\plain \sl240 \fs20 $ WS} - -+{\footnote \pard\plain \sl240 \fs20 + g8:0820} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;work space;WS operator;operator} - -}{\b\f2 WS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 ws} {\f2 operator alone returns the last result; }{\f3 ws} {\f2 with a -number argument returns the results of the REDUCE statement executed after -that numbered prompt. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 ws} {\f4 or }{\f3 ws} {\f4 () -\par -\par -}{\f2 \par - must be an integer between 1 and the current REDUCE prompt number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 (In the following examples, unlike most others, the numbered -prompt is shown.)}{\f4 \pard \tx3420 \par - \par -1: df(sin y,y); \par - \par - COS(Y) \par - \par - \par -2: ws^2; \par - \par - 2 \par - COS(Y) \par - \par - \par -3: df(ws 1,y); \par - \par - -SIN(Y) \par - \par -\pard \sl240 }{\f2 -\par -\par -}{\f3 ws} {\f2 and }{\f3 ws} {\f3 (} {\f2 }{\f3 )} {\f2 can be used anywhere the -expression they stand for can be used. Calling a number for which no -result was produced, such as a switch setting, will give an error message. -\par -\par -The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you do -a differentiation, producing a result expression, then change several -switches, the operator }{\f3 ws;} {\f2 returns the results of the differentiation. -The current workspace (}{\f3 ws} {\f2 ) can also be used inside files, though the -numbered workspace contains only the }{\f3 in} {\f2 command that input the file. -\par -\par -There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second stores -parsed input, ready to execute and accessible by } -{\f2\uldb input}{\v\f2 INPUT} -{\f2 . The -third stores results, when they are produced by statements, which are -accessible by the }{\f3 ws} {\f2 < n> operator. If your session is very -long, storage space begins to fill up with these expressions, so it is a -good idea to end the session once in a while, saving needed expressions to -files with the } -{\f2\uldb saveas}{\v\f2 SAVEAS} -{\f2 and } -{\f2\uldb out}{\v\f2 OUT} -{\f2 commands. -\par -\par -An error message is given if a reference number has not yet been used. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g8} - -${\footnote \pard\plain \sl240 \fs20 $ Algebraic Operators} - -+{\footnote \pard\plain \sl240 \fs20 + index:0008} -}{\b\f2 Algebraic Operators}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb APPEND operator} -{\v\f2 APPEND}{\f2 \par -}{\f2 \tab}{\f2\uldb ARBINT operator} -{\v\f2 ARBINT}{\f2 \par -}{\f2 \tab}{\f2\uldb ARBCOMPLEX operator} -{\v\f2 ARBCOMPLEX}{\f2 \par -}{\f2 \tab}{\f2\uldb ARGLENGTH operator} -{\v\f2 ARGLENGTH}{\f2 \par -}{\f2 \tab}{\f2\uldb COEFF operator} -{\v\f2 COEFF}{\f2 \par -}{\f2 \tab}{\f2\uldb COEFFN operator} -{\v\f2 COEFFN}{\f2 \par -}{\f2 \tab}{\f2\uldb CONJ operator} -{\v\f2 CONJ}{\f2 \par -}{\f2 \tab}{\f2\uldb CONTINUED_FRACTION operator} -{\v\f2 CONTINUED_FRACTION}{\f2 \par -}{\f2 \tab}{\f2\uldb DECOMPOSE operator} -{\v\f2 DECOMPOSE}{\f2 \par -}{\f2 \tab}{\f2\uldb DEG operator} -{\v\f2 DEG}{\f2 \par -}{\f2 \tab}{\f2\uldb DEN operator} -{\v\f2 DEN}{\f2 \par -}{\f2 \tab}{\f2\uldb DF operator} -{\v\f2 DF}{\f2 \par -}{\f2 \tab}{\f2\uldb EXPAND\_CASES operator} -{\v\f2 EXPAND\_CASES}{\f2 \par -}{\f2 \tab}{\f2\uldb EXPREAD operator} -{\v\f2 EXPREAD}{\f2 \par -}{\f2 \tab}{\f2\uldb FACTORIZE operator} -{\v\f2 FACTORIZE}{\f2 \par -}{\f2 \tab}{\f2\uldb HYPOT operator} -{\v\f2 HYPOT}{\f2 \par -}{\f2 \tab}{\f2\uldb IMPART operator} -{\v\f2 IMPART}{\f2 \par -}{\f2 \tab}{\f2\uldb INT operator} -{\v\f2 INT}{\f2 \par -}{\f2 \tab}{\f2\uldb INTERPOL operator} -{\v\f2 INTERPOL}{\f2 \par -}{\f2 \tab}{\f2\uldb LCOF operator} -{\v\f2 LCOF}{\f2 \par -}{\f2 \tab}{\f2\uldb LENGTH operator} -{\v\f2 LENGTH}{\f2 \par -}{\f2 \tab}{\f2\uldb LHS operator} -{\v\f2 LHS}{\f2 \par -}{\f2 \tab}{\f2\uldb LIMIT operator} -{\v\f2 LIMIT}{\f2 \par -}{\f2 \tab}{\f2\uldb LPOWER operator} -{\v\f2 LPOWER}{\f2 \par -}{\f2 \tab}{\f2\uldb LTERM operator} -{\v\f2 LTERM}{\f2 \par -}{\f2 \tab}{\f2\uldb MAINVAR operator} -{\v\f2 MAINVAR}{\f2 \par -}{\f2 \tab}{\f2\uldb MAP operator} -{\v\f2 MAP}{\f2 \par -}{\f2 \tab}{\f2\uldb MKID command} -{\v\f2 MKID}{\f2 \par -}{\f2 \tab}{\f2\uldb NPRIMITIVE operator} -{\v\f2 NPRIMITIVE}{\f2 \par -}{\f2 \tab}{\f2\uldb NUM operator} -{\v\f2 NUM}{\f2 \par -}{\f2 \tab}{\f2\uldb ODESOLVE operator} -{\v\f2 ODESOLVE}{\f2 \par -}{\f2 \tab}{\f2\uldb ONE\_OF type} -{\v\f2 ONE\_OF}{\f2 \par -}{\f2 \tab}{\f2\uldb PART operator} -{\v\f2 PART}{\f2 \par -}{\f2 \tab}{\f2\uldb PF operator} -{\v\f2 PF}{\f2 \par -}{\f2 \tab}{\f2\uldb PROD operator} -{\v\f2 PROD}{\f2 \par -}{\f2 \tab}{\f2\uldb REDUCT operator} -{\v\f2 REDUCT}{\f2 \par -}{\f2 \tab}{\f2\uldb REPART operator} -{\v\f2 REPART}{\f2 \par -}{\f2 \tab}{\f2\uldb RESULTANT operator} -{\v\f2 RESULTANT}{\f2 \par -}{\f2 \tab}{\f2\uldb RHS operator} -{\v\f2 RHS}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOT\_OF operator} -{\v\f2 ROOT\_OF}{\f2 \par -}{\f2 \tab}{\f2\uldb SELECT operator} -{\v\f2 SELECT}{\f2 \par -}{\f2 \tab}{\f2\uldb SHOWRULES operator} -{\v\f2 SHOWRULES}{\f2 \par -}{\f2 \tab}{\f2\uldb SOLVE operator} -{\v\f2 SOLVE}{\f2 \par -}{\f2 \tab}{\f2\uldb SORT operator} -{\v\f2 SORT}{\f2 \par -}{\f2 \tab}{\f2\uldb STRUCTR operator} -{\v\f2 STRUCTR}{\f2 \par -}{\f2 \tab}{\f2\uldb SUB operator} -{\v\f2 SUB}{\f2 \par -}{\f2 \tab}{\f2\uldb SUM operator} -{\v\f2 SUM}{\f2 \par -}{\f2 \tab}{\f2\uldb WS operator} -{\v\f2 WS}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ALGEBRAIC} - -${\footnote \pard\plain \sl240 \fs20 $ ALGEBRAIC} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0821} - - K{\footnote \pard\plain \sl240 \fs20 K evaluation;ALGEBRAIC command;command} - -}{\b\f2 ALGEBRAIC}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 algebraic} {\f2 command changes REDUCE's mode of operation to -algebraic. When }{\f3 algebraic} {\f2 is used as an operator (with an -argument inside parentheses) that argument is evaluated in algebraic -mode, but REDUCE's mode is not changed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -algebraic; \par - \par -symbolic; \par - \par - NIL \par - \par - \par -algebraic(x**2); \par - \par - 2 \par - X \par - \par - \par -x**2; \par - \par - ***** The symbol X has no value. \par - \par -\pard \sl240 }{\f2 REDUCE's symbolic mode does not know about most algebraic commands. -Error messages in this mode may also depend on the particular Lisp -used for the REDUCE implementation. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ANTISYMMETRIC} - -${\footnote \pard\plain \sl240 \fs20 $ ANTISYMMETRIC} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0822} - - K{\footnote \pard\plain \sl240 \fs20 K ANTISYMMETRIC declaration;declaration} - -}{\b\f2 ANTISYMMETRIC}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -When an operator is declared }{\f3 antisymmetric} {\f2 , its arguments are -reordered to conform to the internal ordering of the system. If an odd -number of argument interchanges are required to do this ordering, -the sign of the expression is changed. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 antisymmetric} {\f4 \{}{\f3 ,} {\f4 \}* -\par -\par -}{\f2 \par - is an identifier that has been declared as an operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator m,n; \par - \par -antisymmetric m,n; \par - \par -m(x,n(1,2)); \par - \par - - M( - N(2,1),X) \par - \par - \par -operator p; \par - \par -antisymmetric p; \par - \par -p(a,b,c); \par - \par - P(A,B,C) \par - \par - \par -p(b,a,c); \par - \par - - P(A,B,C) \par - \par -\pard \sl240 }{\f2 If has not been declared an operator, the flag -}{\f3 antisymmetric} {\f2 is still attached to it. When is -subsequently used as an operator, the message }{\f3 Declare} {\f2 - }{\f3 operator? (Y or N)} {\f2 is printed. If the user replies }{\f3 y} {\f2 , the -antisymmetric property of the operator is used. -\par -\par -Note in the first example, identifiers are customarily ordered -alphabetically, while numbers are ordered from largest to smallest. -The operators may have any desired number of arguments (less than 128). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARRAY} - -${\footnote \pard\plain \sl240 \fs20 $ ARRAY} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0823} - - K{\footnote \pard\plain \sl240 \fs20 K ARRAY declaration;declaration} - -}{\b\f2 ARRAY}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 array} {\f2 declaration declares a list of identifiers to be of type -}{\f3 array} {\f2 , and sets all their entries to 0. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 array} {\f4 () - \{}{\f3 ,} {\f4 ()\}* -\par -\par -}{\f2 \par - may be any valid REDUCE identifier. If the identifier -was already an array, a warning message is given that the array has been -redefined. are of form - \{,\}*. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -array a(2,5),b(3,3,3),c(200); \par - \par -array a(3,5); \par - \par - *** ARRAY A REDEFINED \par - \par - \par -a(3,4); \par - \par - 0 \par - \par - \par -length a; \par - \par - 4,6 \par - \par -\pard \sl240 }{\f2 Arrays are always global, even if defined inside a procedure or block -statement. Their status as an array remains until the variable is -reset by } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 . Arrays may not have the same names as operators, -procedures or scalar variables. -\par -\par -Array elements are referred to by the usual notation: }{\f3 a(i,j)} {\f2 -returns the jth element of the ith row. The } -{\f2\uldb assign}{\v\f2 assign} -{\f2 ment operator -}{\f3 :=} {\f2 is used to put values into the array. Arrays as a whole -cannot be subject to assignment by } -{\f2\uldb let}{\v\f2 LET} -{\f2 or }{\f3 :=} {\f2 ; the -assignment operator }{\f3 :=} {\f2 is only valid for individual elements. -\par -\par -When you use } -{\f2\uldb let}{\v\f2 LET} -{\f2 on an array element, the contents of that -element become the argument to }{\f3 let} {\f2 . Thus, if the element -contains a number or some other expression that is not a valid argument -for this command, you get an error message. If the element contains an -identifier, the identifier has the substitution rule attached to it -globally. The same behavior occurs with } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 . If the array -element contains an identifier or simple_expression, it is cleared. Do - use }{\f3 clear} {\f2 to try to set an array element to 0. Because -of the side effects of either }{\f3 let} {\f2 or }{\f3 clear} {\f2 , it is unwise -to apply either of these to array elements. -\par -\par -Array indices always start with 0, so that the declaration }{\f3 array a(5)} {\f2 -sets aside 6 units of space, indexed from 0 through 5, and initializes -them to 0. The } -{\f2\uldb length}{\v\f2 LENGTH} -{\f2 command returns a list of the true number of -elements in each dimension. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CLEAR} - -${\footnote \pard\plain \sl240 \fs20 $ CLEAR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0824} - - K{\footnote \pard\plain \sl240 \fs20 K CLEAR command;command} - -}{\b\f2 CLEAR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 clear} {\f2 command is used to remove assignments or remove substitution -rules from any expression. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 clear} {\f4 \{,\}+ or -\par -\par - }{\f3 clear} {\f4 -\par -\par -}{\f2 \par - can be any }{\f3 scalar} {\f2 , } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 , -or } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 variable or -} -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 name. can be any general -or specific } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement (see below in Comments). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -array a(2,3); \par - \par -a(2,2) := 15; \par - \par - A(2,2) := 15 \par - \par - \par -clear a; \par - \par -a(2,2); \par - \par - Declare A operator? (Y or N) \par - \par - \par -let x = y + z; \par - \par -sin(x); \par - \par - SIN(Y + Z) \par - \par - \par -clear x; \par - \par -sin(x); \par - \par - SIN(X) \par - \par - \par -let x**5 = 7; \par - \par -clear x; \par - \par -x**5; \par - \par - 7 \par - \par - \par -clear x**5; \par - \par -x**5; \par - \par - 5 \par - X \par - \par -\pard \sl240 }{\f2 Although it is not a good idea, operators of the same name but taking -different numbers of arguments can be defined. Using a }{\f3 clear} {\f2 statement -on any of these operators clears every one with the same name, even if the -number of arguments is different. -\par -\par -The }{\f3 clear} {\f2 command is used to ``forget" matrices, arrays, operators -and scalar variables, returning their identifiers to the pristine state -to be used for other purposes. When }{\f3 clear} {\f2 is applied to array -elements, the contents of the array element becomes the argument for -}{\f3 clear} {\f2 . Thus, you get an error message if the element contains a -number, or some other expression that is not a legal argument to -}{\f3 clear} {\f2 . If the element contains an identifier, it is cleared. -When clear is applied to matrix elements, an error message is returned -if the element evaluates to a number, otherwise there is no effect. Do - not try to use }{\f3 clear} {\f2 to set array or matrix elements to 0. -You will not be pleased with the results. -\par -\par -If you are trying to clear power or product substitution rules made with -either } -{\f2\uldb let}{\v\f2 LET} -{\f2 or } -{\f2\uldb forall}{\v\f2 FORALL} -{\f2 ...}{\f3 let} {\f2 , you must -reproduce the rule, exactly as you typed it with the same arguments, up to -but not including the equal sign, using the word }{\f3 clear} {\f2 instead of -the word }{\f3 let} {\f2 . This is shown in the last example. Any other type of -}{\f3 let} {\f2 or }{\f3 forall} {\f2 ...}{\f3 let} {\f2 substitution can be cleared -with just the variable or operator name. } -{\f2\uldb match}{\v\f2 MATCH} -{\f2 behaves the same as -} -{\f2\uldb let}{\v\f2 LET} -{\f2 in this situation. There is a more complicated example under -} -{\f2\uldb forall}{\v\f2 FORALL} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CLEARRULES} - -${\footnote \pard\plain \sl240 \fs20 $ CLEARRULES} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0825} - - K{\footnote \pard\plain \sl240 \fs20 K rule;CLEARRULES command;command} - -}{\b\f2 CLEARRULES}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 clearrules} {\f4 \{,\}+ -\par -\par -}{\f2 \par -The operator }{\f3 clearrules} {\f2 is used to remove previously defined -} -{\f2\uldb rule}{\v\f2 RULE} -{\f2 lists from the system. can be an explicit rule -list, or evaluate to a rule list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -trig1 := \{cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, \par - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, \par - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, \par - cos(~x)^2 => (1+cos(2*x))/2, \par - sin(~x)^2 => (1-cos(2*x))/2\}$ \par - \par -let trig1; \par -cos(a)*cos(b); \par - \par - COS(A - B) + COS(A + B) \par - ----------------------- \par - 2 \par - \par - \par -clearrules trig1; \par -cos(a)*cos(b); \par - \par - COS(A)*COS(B) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEFINE} - -${\footnote \pard\plain \sl240 \fs20 $ DEFINE} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0826} - - K{\footnote \pard\plain \sl240 \fs20 K DEFINE command;command} - -}{\b\f2 DEFINE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The command }{\f3 define} {\f2 allows you to supply a new name for an identifier -or replace it by any valid REDUCE expression. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 define} {\f4 }{\f3 =} {\f4 - \{}{\f3 ,} {\f4 }{\f3 =} {\f4 \}* -\par -\par -}{\f2 \par - is any valid REDUCE identifier, can be a -number, an identifier, an operator, a reserved word, or an expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -define is= :=, xx=y+z; \par - \par - \par -a is 10; \par - \par - A := 10 \par - \par - \par - \par -xx**2; \par - \par - 2 2 \par - Y + 2*Y*Z + Z \par - \par - \par - \par -xx := 10; \par - \par - Y + Z := 10 \par - \par -\pard \sl240 }{\f2 The renaming is done at the input level, and therefore takes precedence -over any other replacement or substitution declared for the same identifier. -It remains in effect until the end of the REDUCE session. Be careful with -it, since you cannot easily undo it without ending the session. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEPEND} - -${\footnote \pard\plain \sl240 \fs20 $ DEPEND} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0827} - - K{\footnote \pard\plain \sl240 \fs20 K dependency;DEPEND declaration;declaration} - -}{\b\f2 DEPEND}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -}{\f3 depend} {\f2 declares that its first argument depends on the rest of its -arguments. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 depend} {\f4 \{}{\f3 ,} {\f4 \}+ -\par -\par -}{\f2 \par - must be a legal variable name or a prefix operator (see -} -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 ). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -depend y,x; \par - \par - \par -df(y**2,x); \par - \par - 2*DF(Y,X)*Y \par - \par - \par - \par -depend z,cos(x),y; \par - \par - \par -df(sin(z),cos(x)); \par - \par - COS(Z)*DF(Z,COS(X)) \par - \par - \par - \par -df(z**2,x); \par - \par - 2*DF(Z,X)*Z \par - \par - \par - \par -nodepend z,y; \par - \par - \par -df(z**2,x); \par - \par - 2*DF(Z,X)*Z \par - \par - \par - \par -cc := df(y**2,x); \par - \par - CC := 2*DF(Y,X)*Y \par - \par - \par - \par -y := tan x; \par - \par - Y := TAN(X); \par - \par - \par - \par -cc; \par - \par - 2 \par - 2*TAN(X)*(TAN(X) + 1) \par - \par -\pard \sl240 }{\f2 Dependencies can be removed by using the declaration } -{\f2\uldb nodepend}{\v\f2 NODEPEND} -{\f2 . -The differentiation operator uses this information, as shown in the -examples above. Linear operators also use knowledge of dependencies -(see } -{\f2\uldb linear}{\v\f2 LINEAR} -{\f2 ). Note that dependencies can be nested: Having -declared y to depend on x, and z -to depend on y, we -see that the chain rule was applied to the derivative of a function of -z with respect to x. If the explicit function of the -dependency is later entered into the system, terms with }{\f3 DF(Y,X)} {\f2 , -for example, are expanded when they are displayed again, as shown in the -last example. The boolean operator } -{\f2\uldb freeof}{\v\f2 FREEOF} -{\f2 allows you to -check the dependency between two algebraic objects. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EVEN} - -${\footnote \pard\plain \sl240 \fs20 $ EVEN} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0828} - - K{\footnote \pard\plain \sl240 \fs20 K EVEN declaration;declaration} - -}{\b\f2 EVEN}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 even} {\f4 \{,\}* -\par -\par -}{\f2 \par -This declaration is used to declare an operator even in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. - \par -examples: \par -\pard \tx3420 }{\f4 \par - even f; \par - \par - f(-a) \par - \par - F(A) \par - \par - \par - f(-a,-b) \par - \par - F(A,-B) \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FACTOR_declaration} - -${\footnote \pard\plain \sl240 \fs20 $ FACTOR_declaration} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0829} - - K{\footnote \pard\plain \sl240 \fs20 K output;FACTOR declaration;declaration} - -}{\b\f2 FACTOR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -When a kernel is declared by }{\f3 factor} {\f2 , all terms involving fixed -powers of that kernel are printed as a product of the fixed powers and -the rest of the terms. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 factor} {\f4 \{}{\f3 ,} {\f4 \}* -\par -\par -}{\f2 \par - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 or a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of -}{\f3 kernel} {\f2 s. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := (x + y + z)**2; \par - \par - 2 2 2 \par - A := X + 2*X*Y + 2*X*Z + Y + 2*Y*Z + Z \par - \par - \par -factor y; \par - \par -a; \par - \par - 2 2 2 \par - Y + 2*Y*(X + Z) + X + 2*X*Z + Z \par - \par - \par -factor sin(x); \par - \par -c := df(sin(x)**4*x**2*z,x); \par - \par - 4 3 2 \par - C := 2*SIN(X) *X*Z + 4*SIN(X) *COS(X)*X *Z \par - \par - \par -remfac sin(x); \par - \par -c; \par - \par - 3 \par - 2*SIN(X) *X*Z*(2*COS(X)*X + SIN(X)) \par - \par -\pard \sl240 }{\f2 Use the }{\f3 factor} {\f2 declaration to display variables of interest so that -you can see their powers more clearly, as shown in the example. Remove -this special treatment with the declaration } -{\f2\uldb remfac}{\v\f2 REMFAC} -{\f2 . The -}{\f3 factor} {\f2 declaration is only effective when the switch } -{\f2\uldb pri}{\v\f2 PRI} -{\f2 -is on. -\par -\par -The }{\f3 factor} {\f2 declaration is not a factoring command; to factor -expressions use the } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 switch or the } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 command. -\par -\par -The }{\f3 factor} {\f2 declaration is helpful in such cases as Taylor polynomials -where the explicit powers of the variable are expected at the top level, not -buried in various factored forms. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FORALL} - -${\footnote \pard\plain \sl240 \fs20 $ FORALL} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0830} - - K{\footnote \pard\plain \sl240 \fs20 K substitution;FORALL command;command} - -}{\b\f2 FORALL}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 forall} {\f2 or (preferably) }{\f3 for all} {\f2 command is used as a -modifier for } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements, indicating the universal applicability -of the rule, with possible qualifications. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 for all} {\f4 \{,\}* }{\f3 let} {\f4 - -\par -\par -or -\par -\par -}{\f3 for all} {\f4 \{,\}* - }{\f3 such that} {\f4 }{\f3 let} {\f4 -\par -\par -}{\f2 \par - may be any valid REDUCE identifier, -can be an operator, a product or power, or a group or block statement. - must be a logical or comparison operator returning true or -false. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -for all x let f(x) = sin(x**2); \par - \par - \par - \par - Declare F operator ? (Y or N) \par - \par - \par -y \par - \par -f(a); \par - \par - 2 \par - SIN(A ) \par - \par - \par -operator pos; \par - \par -for all x such that x>=0 let pos(x) = sqrt(x + 1); \par - \par -pos(5); \par - \par - SQRT(6) \par - \par - \par -pos(-5); \par - \par - POS(-5) \par - \par - \par -clear pos; \par - \par -pos(5); \par - \par - Declare POS operator ? (Y or N) \par - \par - \par -for all a such that numberp a let x**a = 1; \par - \par -x**4; \par - \par - 1 \par - \par - \par -clear x**a; \par - \par - *** X**A not found \par - \par - \par -for all a clear x**a; \par - \par -x**4; \par - \par - 1 \par - \par - \par -for all a such that numberp a clear x**a; \par - \par -x**4; \par - \par - 4 \par - X \par - \par -\pard \sl240 }{\f2 Substitution rules defined by }{\f3 for all} {\f2 or }{\f3 for -all} {\f2 ...}{\f3 such that} {\f2 commands that involve products or powers are -cleared by reproducing the command, with exactly the same variable names -used, up to but not including the equal sign, with } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 -replacing }{\f3 let} {\f2 , as shown in the last example. Other substitutions -involving variables or operator names can be cleared with just the name, -like any other variable. -\par -\par -The } -{\f2\uldb match}{\v\f2 MATCH} -{\f2 command can also be used in product and power substitutions. -The syntax of its use and clearing is exactly like }{\f3 let} {\f2 . A }{\f3 match} {\f2 -substitution only replaces the term if it is exactly like the pattern, for -example }{\f3 match x**5 = 1} {\f2 replaces only terms of }{\f3 x**5} {\f2 and not -terms of higher powers. -\par -\par -It is easier to declare your potential operator before defining the -}{\f3 for all} {\f2 rule, since the system will ask you to declare it an -operator anyway. Names of declared arrays or matrices or scalar -variables are invalid as operator names, to avoid ambiguity. Either -}{\f3 for all} {\f2 ...}{\f3 let} {\f2 statements or procedures are often used to define -operators. One difference is that procedures implement ``call by value" -meaning that assignments involving their formal parameters do not change -the calling variables that replace them. If you use assignment statements -on the formal parameters in a }{\f3 for all} {\f2 ...}{\f3 let} {\f2 statement, the -effects are seen in the calling variables. Be careful not to redefine a -system operator unless you mean it: the statement }{\f3 for all x let -sin(x)=0;} {\f2 has exactly that effect, and the usual definition for sin(x) has -been lost for the remainder of the REDUCE session. \par -\par - -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INFIX} - -${\footnote \pard\plain \sl240 \fs20 $ INFIX} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0831} - - K{\footnote \pard\plain \sl240 \fs20 K operator;INFIX declaration;declaration} - -}{\b\f2 INFIX}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -}{\f3 infix} {\f2 declares identifiers to be infix operators. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 infix} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be any valid REDUCE identifier, which has not already -been declared an operator, array or matrix, and is not reserved by the -system. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -infix aa; \par - \par -for all x,y let aa(x,y) = cos(x)*cos(y) - sin(x)*sin(y); \par - \par -x aa y; \par - \par - COS(X)*COS(Y) - SIN(X)*SIN(Y) \par - \par - \par -pi/3 aa pi/2; \par - \par - SQRT(3) \par - - ------- \par - 2 \par - \par - \par -aa(pi,pi); \par - \par - 1 \par - \par -\pard \sl240 }{\f2 A } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement must be used to attach functionality to -the operator. Note that the operator is defined in prefix form in -the }{\f3 let} {\f2 statement. -After its definition, the operator may be used in either prefix or infix -mode. The above operator aa finds the cosine of the sum -of two angles by the formula -\par -\par -cos(x+y) = cos(x)*cos(y) - sin(x)*sin(y). -\par -\par -Precedence may be attached to infix operators with the -} -{\f2\uldb precedence}{\v\f2 PRECEDENCE} -{\f2 declaration. -\par -\par -User-defined infix operators may be used in prefix form. If they are used -in infix form, a space must be left on each side of the operator to avoid -ambiguity. Infix operators are always binary. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INTEGER} - -${\footnote \pard\plain \sl240 \fs20 $ INTEGER} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0832} - - K{\footnote \pard\plain \sl240 \fs20 K INTEGER declaration;declaration} - -}{\b\f2 INTEGER}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 integer} {\f2 declaration must be made immediately after a -} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 (or other variable declaration such as } -{\f2\uldb real}{\v\f2 REAL} -{\f2 -and } -{\f2\uldb scalar}{\v\f2 SCALAR} -{\f2 ) and declares local integer variables. They are -initialized to 0. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 integer} {\f4 \{,\}* -\par -\par -}{\f2 \par - may be any valid REDUCE identifier, except -}{\f3 t} {\f2 or }{\f3 nil} {\f2 . -\par -\par -Integer variables remain local, and do not share values with variables of -the same name outside the } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 block. When the -block is finished, the variables are removed. You may use the words -} -{\f2\uldb real}{\v\f2 REAL} -{\f2 or } -{\f2\uldb scalar}{\v\f2 SCALAR} -{\f2 in the place of }{\f3 integer} {\f2 . -}{\f3 integer} {\f2 does not indicate typechecking by the -current REDUCE; it is only for your own information. Declaration -statements must immediately follow the }{\f3 begin} {\f2 , without a semicolon -between }{\f3 begin} {\f2 and the first variable declaration. -\par -\par -Any variables used inside }{\f3 begin} {\f2 ...}{\f3 end} {\f2 blocks that were not -declared }{\f3 scalar} {\f2 , }{\f3 real} {\f2 or }{\f3 integer} {\f2 are global, and any -change made to them inside the block affects their global value. Any -} -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 or } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 declared inside a block is always global. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # KORDER} - -${\footnote \pard\plain \sl240 \fs20 $ KORDER} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0833} - - K{\footnote \pard\plain \sl240 \fs20 K order;variable order;kernel order;KORDER declaration;declaration} - -}{\b\f2 KORDER}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 korder} {\f2 declaration changes the internal canonical ordering of -kernels. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 korder} {\f4 \{}{\f3 ,} {\f4 \}* -\par -\par -}{\f2 \par - must be a REDUCE } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 or a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of -}{\f3 kernel} {\f2 s. -\par -\par -The declaration }{\f3 korder} {\f2 changes the internal ordering, but not the print -ordering, so the effects cannot be seen on output. However, in some -calculations, the order of the variables can have significant effects on the -time and space demands of a calculation. If you are doing a demanding -calculation with several kernels, you can experiment with changing the -canonical ordering to improve behavior. -\par -\par -The first kernel in the argument list is given the highest priority, the -second gets the next highest, and so on. Kernels not named in a -}{\f3 korder} {\f2 ordering otherwise. A new }{\f3 korder} {\f2 declaration replaces -the previous one. To return to canonical ordering, use the command -}{\f3 korder nil} {\f2 . -\par -\par -To change the print ordering, use the declaration } -{\f2\uldb order}{\v\f2 ORDER} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LET} - -${\footnote \pard\plain \sl240 \fs20 $ LET} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0834} - - K{\footnote \pard\plain \sl240 \fs20 K rule;substitution;LET command;command} - -}{\b\f2 LET}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 let} {\f2 command defines general or specific substitution rules. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 let} {\f4 }{\f3 =} {\f4 \{, -}{\f3 =} {\f4 \}* -\par -\par -}{\f2 \par - can be any valid REDUCE identifier except an array, and in -some cases can be an expression; can be any valid REDUCE -expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -let a = sin(x); \par - \par -b := a; \par - \par - B := SIN X; \par - \par - \par -let c = a; \par - \par -exp(a); \par - \par - SIN(X) \par - E \par - \par - \par -a := x**2; \par - \par - 2 \par - A := X \par - \par - \par -exp(a); \par - \par - 2 \par - X \par - E \par - \par - \par -exp(b); \par - \par - SIN(X) \par - E \par - \par - \par -exp(c); \par - \par - 2 \par - X \par - E \par - \par - \par -let m + n = p; \par - \par -(m + n)**5; \par - \par - 5 \par - P \par - \par - \par -operator h; \par - \par -let h(u,v) = u - v; \par - \par -h(u,v); \par - \par - U - V \par - \par - \par -h(x,y); \par - \par - H(X,Y) \par - \par - \par -array q(10); \par - \par -let q(1) = 15; \par - \par - ***** Substitution for 0 not allowed \par - \par -\pard \sl240 }{\f2 The }{\f3 let} {\f2 command is also used to activate a }{\f3 rule sets} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 let} {\f4 \{,\}+ -\par -\par -}{\f2 \par - can be an explicit } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 }{\f3 list} {\f2 , or evaluate -to a rule list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -trig1 := \{cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2, \par - cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2, \par - sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2, \par - cos(~x)^2 => (1+cos(2*x))/2, \par - sin(~x)^2 => (1-cos(2*x))/2\}$ \par - \par -let trig1; \par -cos(a)*cos(b); \par - \par - COS(A - B) + COS(A + B) \par - ------------------------ \par - 2 \par - \par -\pard \sl240 }{\f2 A }{\f3 let} {\f2 command returns no value, though the substitution rule is -entered. Assignment rules made by } -{\f2\uldb assign}{\v\f2 assign} -{\f2 and }{\f3 let} {\f2 -rules are at the -same level, and cancel each other. There is a difference in their -operation, however, as shown in the first example: a }{\f3 let} {\f2 assignment -tracks the changes in what it is assigned to, while a }{\f3 :=} {\f2 assignment -is fixed at the value it originally had. -\par -\par -The use of expressions as left-hand sides of }{\f3 let} {\f2 statements is a -little complicated. The rules of operation are: -\par -\par -\tab (i) -Expressions of the form A*B = C do not change A, B or C, but set A*B to C. -\par -\par -\tab (ii) -Expressions of the form A+B = C substitute C - B for A, but do not change -B or C. -\par -\par -\tab (iii) -Expressions of the form A-B = C substitute B + C for A, but do not change -B or C. -\par -\par -\tab (iv) -Expressions of the form A/B = C substitute B*C for A, but do not change B or -C. -\par -\par -\tab (v) -Expressions of the form A**N = C substitute C for A**N in every expression of -a power of A to N or greater. An asymptotic command such as A**N = 0 sets -all terms involving A to powers greater than or equal to N to 0. Finite -fields may be generated by requiring modular arithmetic (the } -{\f2\uldb modular}{\v\f2 MODULAR} -{\f2 -switch) and defining the primitive polynomial via a }{\f3 let} {\f2 statement. -\par -\par -\par -}{\f3 let} {\f2 substitutions involving expressions are cleared by using -the } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 command with exactly the same expression. -\par -\par -Note when a simple }{\f3 let} {\f2 statement is used to assign functionality to an -operator, it is valid only for the exact identifiers used. For the use of the -}{\f3 let} {\f2 command to attach more general functionality to an operator, -see } -{\f2\uldb forall}{\v\f2 FORALL} -{\f2 . -\par -\par -Arrays as a whole cannot be arguments to }{\f3 let} {\f2 statements, but -matrices as a whole can be legal arguments, provided both arguments are -matrices. However, it is important to note that the two matrices are then -linked. Any change to an element of one matrix changes the corresponding -value in the other. Unless you want this behavior, you should not use -}{\f3 let} {\f2 for matrices. The assignment operator } -{\f2\uldb assign}{\v\f2 assign} -{\f2 can be used -for non-tracking assignments, avoiding the side effects. Matrices are -redimensioned as needed in }{\f3 let} {\f2 statements. -\par -\par -When array or matrix elements are used as the left-hand side of }{\f3 let} {\f2 -statements, the contents of that element is used as the argument. When the -contents is a number or some other expression that is not a valid left-hand -side for }{\f3 let} {\f2 , you get an error message. If the contents is an -identifier or simple expression, the }{\f3 let} {\f2 rule is globally attached -to that identifier, and is in effect not only inside the array or matrix, -but everywhere. Because of such unwanted side effects, you should not -use }{\f3 let} {\f2 with array or matrix elements. The assignment operator -}{\f3 :=} {\f2 can be used to put values into array or matrix elements without -the side effects. -\par -\par -Local variables declared inside }{\f3 begin} {\f2 ...}{\f3 end} {\f2 blocks cannot -be used as the left-hand side of }{\f3 let} {\f2 statements. However, -} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 blocks themselves can be used as the -right-hand side of }{\f3 let} {\f2 statements. The construction: - \par -syntax: \par -}{\f4 \par -\par -}{\f3 for all} {\f4 - }{\f3 let} {\f4 ()}{\f3 =} {\f4 -\par -\par -}{\f2 \par -is an alternative to the - \par -syntax: \par -}{\f4 \par -\par -}{\f3 procedure} {\f4 ()}{\f3 ;} {\f4 -\par -\par -}{\f2 \par -construction. One important difference between the two constructions is that -the as formal parameters to a procedure have their global values -protected against change by the procedure, while the of a -}{\f3 let} {\f2 statement are changed globally by its actions. -\par -\par -Be careful in using a construction such as }{\f3 let x = x + 1} {\f2 except inside -a controlled loop statement. The process of resubstitution continues until -a stack overflow message is given. -\par -\par -The }{\f3 let} {\f2 statement may be used to make global changes to variables from -inside procedures. If }{\f3 x} {\f2 is a formal parameter to a procedure, the -command }{\f3 let x = } {\f2 ... makes the change to the calling variable. -For example, if a procedure was defined by -\pard \tx3420 }{\f4 \par - procedure f(x,y); \par - let x = 15; \par -\pard \sl240 }{\f2 \par -\par -and the procedure was called as -\pard \tx3420 }{\f4 \par - f(a,b); \par -\pard \sl240 }{\f2 \par -\par -}{\f3 a} {\f2 would have its value changed to 15. Be careful when using }{\f3 let} {\f2 -statements inside procedures to avoid unwanted side effects. -\par -\par -It is also important to be careful when replacing }{\f3 let} {\f2 statements with -other }{\f3 let} {\f2 statements. The overlapping of these substitutions can be -unpredictable. Ordinarily the latest-entered rule is the first to be applied. -Sometimes the previous rule is superseded completely; other times it stays -around as a special case. The order of entering a set of related }{\f3 let} {\f2 -expressions is very important to their eventual behavior. The best -approach is to assume that the rules will be applied in an arbitrary order. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LINEAR} - -${\footnote \pard\plain \sl240 \fs20 $ LINEAR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0835} - - K{\footnote \pard\plain \sl240 \fs20 K operator;LINEAR declaration;declaration} - -}{\b\f2 LINEAR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -An operator can be declared linear in its first argument over powers of -its second argument by the declaration }{\f3 linear.} {\f2 - \par -syntax: \par -}{\f4 \par -\par -}{\f3 linear} {\f4 \{}{\f3 ,} {\f4 \}* -\par -\par -}{\f2 \par - must have been declared to be an operator. Be careful not -to use a system operator name, because this command may change its definition. -The operator being declared must have at least two arguments, and the -second one must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -linear f; \par - \par -f(0,x); \par - \par - 0 \par - \par - \par -f(-y,x); \par - \par - - F(1,X)*Y \par - \par - \par -f(y+z,x); \par - \par - F(1,X)*(Y + Z) \par - \par - \par -f(y*z,x); \par - \par - F(1,X)*Y*Z \par - \par - \par -depend z,x; \par - \par -f(y*z,x); \par - \par - F(Z,X)*Y \par - \par - \par -f(y/z,x); \par - \par - 1 \par - F(-,X)*Y \par - Z \par - \par - \par -depend y,x; \par - \par -f(y/z,x); \par - \par - Y \par - F(-,X) \par - Z \par - \par - \par -nodepend z,x; \par - \par -f(y/z,x); \par - \par - F(Y,X) \par - ------ \par - Z \par - \par - \par -f(2*e**sin(x),x); \par - \par - SIN(X) \par - 2*F(E ,X) \par - \par -\pard \sl240 }{\f2 Even when the operator has not had its functionality attached, it exhibits -linear properties as shown in the examples. Notice the difference when -dependencies are added. Dependencies are also in effect when the operator's -first argument contains its second, as in the last line above. -\par -\par -For a fully-developed example of the use of linear operators, refer to the -article in the , Vol. 14 (1974), pp. -301-317, ``Analytic Computation of Some Integrals in Fourth Order Quantum -Electrodynamics," by J.A. Fox and A.C. Hearn. The article includes the -complete listing of REDUCE procedures used for this work. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LINELENGTH} - -${\footnote \pard\plain \sl240 \fs20 $ LINELENGTH} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0836} - - K{\footnote \pard\plain \sl240 \fs20 K output;LINELENGTH declaration;declaration} - -}{\b\f2 LINELENGTH}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 linelength} {\f2 declaration sets the length of the output line. Default -is 80. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 linelength} {\f4 -\par -\par -}{\f2 \par -To change the linelength, - must evaluate to a positive integer less than 128 -(although this varies from system to system), and should not be less than -20 or so for proper operation. -\par -\par -}{\f3 linelength} {\f2 returns the previous linelength. If you want the current -linelength value, but not change it, say }{\f3 linelength nil} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LISP} - -${\footnote \pard\plain \sl240 \fs20 $ LISP} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0837} - - K{\footnote \pard\plain \sl240 \fs20 K LISP command;command} - -}{\b\f2 LISP}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 lisp} {\f2 command changes REDUCE's mode of operation to symbolic. When -}{\f3 lisp} {\f2 is followed by an expression, that expression is evaluated in -symbolic mode, but REDUCE's mode is not changed. This command is -equivalent to } -{\f2\uldb symbolic}{\v\f2 SYMBOLIC} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -lisp; \par - \par - NIL \par - \par - \par -car '(a b c d e); \par - \par - A \par - \par - \par -algebraic; \par - \par -c := (lisp car '(first second))**2; \par - \par - \par - \par - 2 \par - C := FIRST \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LISTARGP} - -${\footnote \pard\plain \sl240 \fs20 $ LISTARGP} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0838} - - K{\footnote \pard\plain \sl240 \fs20 K argument;list;LISTARGP declaration;declaration} - -}{\b\f2 LISTARGP}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 listargp} {\f4 \{}{\f3 ,} {\f4 \}* -\par -\par -}{\f2 \par -If an operator other than those specifically defined for lists is given a -single argument that is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 , then the result of this -operation will be a list in which that operator is applied to each element -of the list. -This process can be inhibited for a specific operator, or list of operators, -by using the declaration }{\f3 listargp} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -log \{a,b,c\}; \par - \par - LOG(A),LOG(B),LOG(C) \par - \par - \par -listargp log; \par - \par -log \{a,b,c\}; \par - \par - LOG(A,B,C) \par - \par -\pard \sl240 }{\f2 It is possible to inhibit such distribution globally by turning on the -switch } -{\f2\uldb listargs}{\v\f2 LISTARGS} -{\f2 . In addition, if an operator has more than one -argument, no such distribution occurs, so }{\f3 listargp} {\f2 has no effect. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NODEPEND} - -${\footnote \pard\plain \sl240 \fs20 $ NODEPEND} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0839} - - K{\footnote \pard\plain \sl240 \fs20 K depend;NODEPEND declaration;declaration} - -}{\b\f2 NODEPEND}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 nodepend} {\f2 declaration removes the dependency declared with -} -{\f2\uldb depend}{\v\f2 DEPEND} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 nodepend} {\f4 \{,\}+ -\par -\par -\par -\par -}{\f2 must be a kernel that has had a dependency declared upon the -one or more other kernels that are its other arguments. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -depend y,x,z; \par - \par -df(sin y,x); \par - \par - COS(Y)*DF(Y,X) \par - \par - \par -df(sin y,x,z); \par - \par - COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) \par - \par - \par -nodepend y,z; \par - \par -df(sin y,x); \par - \par - COS(Y)*DF(Y,X) \par - \par - \par -df(sin y,x,z); \par - \par - 0 \par - \par -\pard \sl240 }{\f2 A warning message is printed if the dependency had not been declared by -}{\f3 depend} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MATCH} - -${\footnote \pard\plain \sl240 \fs20 $ MATCH} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0840} - - K{\footnote \pard\plain \sl240 \fs20 K substitution;MATCH command;command} - -}{\b\f2 MATCH}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 match} {\f2 command is similar to the } -{\f2\uldb let}{\v\f2 LET} -{\f2 command, except -that it matches only explicit powers in substitution. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 match} {\f4 }{\f3 =} {\f4 \{, - }{\f3 =} {\f4 \}* -\par -\par -}{\f2 \par - is generally a term involving powers, and is limited by -the rules for the } -{\f2\uldb let}{\v\f2 LET} -{\f2 command. may be -any valid REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -match c**2*a**2 = d; \par -(a+c)**4; \par - \par - 4 3 3 4 \par - A + 4*A *C + 4*A*C + C + 6*D \par - \par - \par -match a+b = c; \par - \par -a + 2*b; \par - \par - B + C \par - \par - \par -(a + b + c)**2; \par - \par - 2 2 2 \par - A - B + 2*B*C + 3*C \par - \par - \par -clear a+b; \par - \par -(a + b + c)**2; \par - \par - 2 2 2 \par - A + 2*A*B + 2*A*C + B + 2*B*C + C \par - \par - \par -let p*r = s; \par - \par -match p*q = ss; \par - \par -(a + p*r)**2; \par - \par - 2 2 \par - A + 2*A*S + S \par - \par - \par -(a + p*q)**2; \par - \par - 2 2 2 \par - A + 2*A*SS + P *Q \par - \par -\pard \sl240 }{\f2 Note in the last example that }{\f3 a + b} {\f2 has been explicitly matched -after the squaring was done, replacing each single power of }{\f3 a} {\f2 by -}{\f3 c - b} {\f2 . This kind of substitution, although following the rules, is -confusing and could lead to unrecognizable results. It is better to use -}{\f3 match} {\f2 with explicit powers or products only. }{\f3 match} {\f2 should -not be used inside procedures for the same reasons that }{\f3 let} {\f2 should -not be. -\par -\par -Unlike } -{\f2\uldb let}{\v\f2 LET} -{\f2 substitutions, }{\f3 match} {\f2 substitutions are executed -after all other operations are complete. The last example shows the -difference. }{\f3 match} {\f2 commands can be cleared by using } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 , -with exactly the expression that the original }{\f3 match} {\f2 took. -}{\f3 match} {\f2 commands can also be done more generally with }{\f3 for all} {\f2 -or } -{\f2\uldb forall}{\v\f2 FORALL} -{\f2 ...}{\f3 such that} {\f2 commands. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NONCOM} - -${\footnote \pard\plain \sl240 \fs20 $ NONCOM} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0841} - - K{\footnote \pard\plain \sl240 \fs20 K operator;non commutative;commutative;NONCOM declaration;declaration} - -}{\b\f2 NONCOM}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -}{\f3 noncom} {\f2 declares that already-declared operators are noncommutative -under multiplication. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 noncom} {\f4 \{,\}* -\par -\par -}{\f2 \par - must have been declared an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 , or a warning -message is given. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f,h; \par - \par -noncom f; \par - \par -f(a)*f(b) - f(b)*f(a); \par - \par - F(A)*F(B) - F(B)*F(A) \par - \par - \par -h(a)*h(b) - h(b)*h(a); \par - \par - 0 \par - \par - \par -operator comm; \par - \par -for all x,y such that x neq y and ordp(x,y) \par - let f(x)*f(y) = f(y)*f(x) + comm(x,y); \par -\pard \sl240 \par - \par -f(1)*f(2); \par - \par - F(1)*F(2) \par - \par - \par -f(2)*f(1); \par - \par - COMM(2,1) + F(1)*F(2) \par - \par -\pard \sl240 }{\f2 The last example introduces the commutator of }{\f4 f(x)}{\f2 and }{\f4 f(y)}{\f2 -for all x and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or it -can remain an indeterminate operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NONZERO} - -${\footnote \pard\plain \sl240 \fs20 $ NONZERO} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0842} - - K{\footnote \pard\plain \sl240 \fs20 K operator;NONZERO declaration;declaration} - -}{\b\f2 NONZERO}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 nonzero} {\f4 \{,\}* -\par -\par -}{\f2 \par -If an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 }{\f3 f} {\f2 is declared } -{\f2\uldb odd}{\v\f2 ODD} -{\f2 , then }{\f3 f(0)} {\f2 -is replaced by zero unless }{\f3 f} {\f2 is also declared non zero by the -declaration }{\f3 nonzero} {\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par - odd f; \par - \par - f(0) \par - \par - 0 \par - \par - \par - nonzero f; \par - \par - f(0) \par - \par - F(0) \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ODD} - -${\footnote \pard\plain \sl240 \fs20 $ ODD} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0843} - - K{\footnote \pard\plain \sl240 \fs20 K operator;ODD declaration;declaration} - -}{\b\f2 ODD}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 odd} {\f4 \{,\}* -\par -\par -}{\f2 \par -This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. - \par -examples: \par -\pard \tx3420 }{\f4 \par - odd f; \par - \par - f(-a) \par - \par - -F(A) \par - \par - \par - f(-a,-b) \par - \par - -F(A,-B) \par - \par - \par - f(a,-b) \par - \par - F(A,-B) \par - \par -\pard \sl240 }{\f2 \par -\par -If say }{\f3 f} {\f2 is declared odd, then }{\f3 f(0)} {\f2 is replaced by zero -unless }{\f3 f} {\f2 is also declared non zero by the declaration -} -{\f2\uldb nonzero}{\v\f2 NONZERO} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # OFF} - -${\footnote \pard\plain \sl240 \fs20 $ OFF} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0844} - - K{\footnote \pard\plain \sl240 \fs20 K switch;OFF command;command} - -}{\b\f2 OFF}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 off} {\f2 command is used to turn switches off. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 off} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be any }{\f3 switch} {\f2 name. There is no problem if the -switch is already off. If the switch name is mistyped, an error message is -given. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ON} - -${\footnote \pard\plain \sl240 \fs20 $ ON} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0845} - - K{\footnote \pard\plain \sl240 \fs20 K switch;ON command;command} - -}{\b\f2 ON}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 on} {\f2 command is used to turn switches on. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 on} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be any }{\f3 switch} {\f2 name. There is no problem if the -switch is already on. If the switch name is mistyped, an error message is -given. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # OPERATOR} - -${\footnote \pard\plain \sl240 \fs20 $ OPERATOR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0846} - - K{\footnote \pard\plain \sl240 \fs20 K OPERATOR declaration;declaration} - -}{\b\f2 OPERATOR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -Use the }{\f3 operator} {\f2 declaration to declare your own operators. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 operator} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be any valid REDUCE identifier, which is not the name -of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 , } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 , scalar variable or previously-defined -operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator dis,fac; \par - \par -let dis(~x,~y) = sqrt(x^2 + y^2); \par - \par -dis(1,2); \par - \par - SQRT(5) \par - \par - \par -dis(a,10); \par - \par - 2 \par - SQRT(A + 100) \par - \par - \par -on rounded; \par - \par -dis(1.5,7.2); \par - \par - 7.35459040329 \par - \par - \par -let fac(~n) = if n=0 then 1 \par - else if not(fixp n and n>0) \par - then rederr "choose non-negative integer" \par - else for i := 1:n product i; \par -\pard \sl240 \par - \par -fac(5); \par - \par - 120 \par - \par - \par -fac(-2); \par - \par - ***** choose non-negative integer \par - \par -\pard \sl240 }{\f2 The first operator is the Euclidean distance metric, the distance of point -}{\f4 (x,y)}{\f2 from the origin. The second operator is the factorial. -\par -\par -Operators can have various properties assigned to them; they can be -declared } -{\f2\uldb infix}{\v\f2 INFIX} -{\f2 , } -{\f2\uldb linear}{\v\f2 LINEAR} -{\f2 , } -{\f2\uldb symmetric}{\v\f2 SYMMETRIC} -{\f2 , -} -{\f2\uldb antisymmetric}{\v\f2 ANTISYMMETRIC} -{\f2 , or } -{\f2\uldb noncom}{\v\f2 NONCOM} -{\f3 mutative} {\f2 . -The default operator is prefix, nonlinear, and commutative. -Precedence can also be assigned to operators using the declaration -} -{\f2\uldb precedence}{\v\f2 PRECEDENCE} -{\f2 . -\par -\par -Functionality is assigned to an operator by a } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement or -a } -{\f2\uldb forall}{\v\f2 FORALL} -{\f2 ...}{\f3 let} {\f2 statement, -(or possibly by a procedure with the name -of the operator). Be careful not to redefine a system operator by -accident. REDUCE permits you to redefine system operators, giving you a -warning message that the operator was already defined. This flexibility -allows you to add mathematical rules that do what you want them to do, but -can produce odd or erroneous behavior if you are not careful. -\par -\par -You can declare operators from inside } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 s, as long as they -are not local variables. Operators defined inside procedures are global. -A formal parameter may be declared as an operator, and has the effect of -declaring the calling variable as the operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ORDER} - -${\footnote \pard\plain \sl240 \fs20 $ ORDER} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0847} - - K{\footnote \pard\plain \sl240 \fs20 K output;variable order;order;ORDER declaration;declaration} - -}{\b\f2 ORDER}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 order} {\f2 declaration changes the order of precedence of kernels for -display purposes only. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 order} {\f4 \{,\}* -\par -\par -}{\f2 \par - must be a valid } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 or } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 name -complete with argument or a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of such objects. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x + y + z + cos(a); \par - \par - COS(A) + X + Y + Z \par - \par - \par -order z,y,x,cos(a); \par - \par -x + y + z + cos(a); \par - \par - Z + Y + X + COS(A) \par - \par - \par -(x + y)**2; \par - \par - 2 2 \par - Y + 2*Y*X + X \par - \par - \par -order nil; \par - \par -(z + cos(z))**2; \par - \par - 2 2 \par - COS(Z) + 2*COS(Z)*Z + Z \par - \par -\pard \sl240 }{\f2 }{\f3 order} {\f2 affects the printing order of the identifiers only; internal -order is unchanged. Change internal order of evaluation with the -declaration } -{\f2\uldb korder}{\v\f2 KORDER} -{\f2 . You can use }{\f3 order} {\f2 to feature variables -or functions you are particularly interested in. -\par -\par -Declarations made with }{\f3 order} {\f2 are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, specific -kernels named in new declarations are removed from previous ones and given -the new priority. Return to the standard canonical printing order with the -statement }{\f3 order nil} {\f2 . -\par -\par -The print order specified by }{\f3 order} {\f2 commands is not in effect if the -switch } -{\f2\uldb pri}{\v\f2 PRI} -{\f2 is off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRECEDENCE} - -${\footnote \pard\plain \sl240 \fs20 $ PRECEDENCE} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0848} - - K{\footnote \pard\plain \sl240 \fs20 K operator;PRECEDENCE declaration;declaration} - -}{\b\f2 PRECEDENCE}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 precedence} {\f2 declaration attaches a precedence to an infix operator. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 precedence} {\f4 , -\par -\par -}{\f2 \par - should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. - must be a system infix operator or have had its -precedence already declared. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f,h; \par - \par -precedence f,+; \par - \par -precedence h,*; \par - \par -a + f(1,2)*c; \par - \par - (1 F 2)*C + A \par - \par - \par -a + h(1,2)*c; \par - \par - 1 H 2*C + A \par - \par - \par -a*1 f 2*c; \par - \par - A F 2*C \par - \par - \par -a*1 h 2*c; \par - \par - 1 H 2*A*C \par - \par -\pard \sl240 }{\f2 The operator whose precedence is being declared is inserted into the infix -operator precedence list at the next higher place than . -\par -\par -Attaching a precedence to an operator has the side effect of declaring the -operator to be infix. If the identifier argument for }{\f3 precedence} {\f2 has -not been declared to be an operator, an attempt to use it causes an error -message. After declaring it to be an operator, it becomes an infix operator -with the precedence previously given. Infix operators may be used in prefix -form; if they are used in infix form, a space must be left on each side of -the operator to avoid ambiguity. Declared infix operators are always binary. -\par -\par -To see the infix operator precedence list, enter symbolic mode and type -}{\f3 preclis!*;} {\f2 . The lowest precedence operator is listed first. -\par -\par -All prefix operators have precedence higher than infix operators. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRECISION} - -${\footnote \pard\plain \sl240 \fs20 $ PRECISION} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0849} - - K{\footnote \pard\plain \sl240 \fs20 K floating point;rounded;PRECISION declaration;declaration} - -}{\b\f2 PRECISION}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 precision} {\f2 declaration sets the number of decimal places used when -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. Default is system dependent, and normally about 12. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 precision} {\f4 () or }{\f3 precision} {\f4 -\par -\par -}{\f2 \par - must be a positive integer. When is 0, the -current precision is displayed, but not changed. There is no upper limit, -but precision of greater than several hundred causes unpleasantly slow -operation on numeric calculations. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -7/9; \par - \par - 0.777777777778 \par - \par - \par -precision 20; \par - \par - 20 \par - \par - \par -7/9; \par - \par - 0.77777777777777777778 \par - \par - \par -sin(pi/4); \par - \par - 0.7071067811865475244 \par - \par -\pard \sl240 }{\f2 Trailing zeroes are dropped, so sometimes fewer than 20 decimal places are -printed as in the last example. Turn on the switch } -{\f2\uldb fullprec}{\v\f2 FULLPREC} -{\f2 if -you want to print all significant digits. The } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode -carries calculations to two more places than given by }{\f3 precision} {\f2 , and -rounds off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRINT\_PRECISION} - -${\footnote \pard\plain \sl240 \fs20 $ PRINT_PRECISION} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0850} - - K{\footnote \pard\plain \sl240 \fs20 K rounded;floating point;output;PRINT_PRECISION declaration;declaration} - -}{\b\f2 PRINT\_PRECISION}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 print_precision} {\f4 () - or }{\f3 print_precision} {\f4 -\par -\par -}{\f2 \par -In } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode, numbers are normally printed to the specified -precision. If the user wishes to print such numbers with less precision, -the printing precision can be set by the declaration }{\f3 print_precision} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -1/3; \par - \par - 0.333333333333 \par - \par - \par -print_precision 5; \par - \par -1/3 \par - \par - 0.33333 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REAL} - -${\footnote \pard\plain \sl240 \fs20 $ REAL} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0851} - - K{\footnote \pard\plain \sl240 \fs20 K REAL declaration;declaration} - -}{\b\f2 REAL}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 real} {\f2 declaration must be made immediately after a -} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 (or other variable declaration such as } -{\f2\uldb integer}{\v\f2 INTEGER} -{\f2 -and } -{\f2\uldb scalar}{\v\f2 SCALAR} -{\f2 ) and declares local integer variables. They are -initialized to zero. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 real} {\f4 \{,\}* -\par -\par -}{\f2 \par - may be any valid REDUCE identifier, except -}{\f3 t} {\f2 or }{\f3 nil} {\f2 . -\par -\par -Real variables remain local, and do not share values with variables of the -same name outside the } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 block. When the -block is finished, the variables are removed. You may use the words -} -{\f2\uldb integer}{\v\f2 INTEGER} -{\f2 or } -{\f2\uldb scalar}{\v\f2 SCALAR} -{\f2 in the place of }{\f3 real} {\f2 . -}{\f3 real} {\f2 does not indicate typechecking by the current REDUCE; it is -only for your own information. Declaration statements must immediately -follow the }{\f3 begin} {\f2 , without a semicolon between }{\f3 begin} {\f2 and the -first variable declaration. -\par -\par -Any variables used inside a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 -that were not declared }{\f3 scalar} {\f2 , }{\f3 real} {\f2 or }{\f3 integer} {\f2 are -global, and any change made to them inside the block affects their global -value. Any } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 or } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 declared inside a block is always -global. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REMFAC} - -${\footnote \pard\plain \sl240 \fs20 $ REMFAC} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0852} - - K{\footnote \pard\plain \sl240 \fs20 K output;factor;REMFAC declaration;declaration} - -}{\b\f2 REMFAC}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 remfac} {\f2 declaration removes the special factoring treatment of its -arguments that was declared with } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 remfac} {\f4 \{,\}+ -\par -\par -}{\f2 \par - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 or } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 name that -was declared as special with the } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 declaration. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SCALAR} - -${\footnote \pard\plain \sl240 \fs20 $ SCALAR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0853} - - K{\footnote \pard\plain \sl240 \fs20 K SCALAR declaration;declaration} - -}{\b\f2 SCALAR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 scalar} {\f2 declaration must be made immediately after a -} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 (or other variable declaration such as } -{\f2\uldb integer}{\v\f2 INTEGER} -{\f2 -and } -{\f2\uldb real}{\v\f2 REAL} -{\f2 ) and declares local scalar variables. They are -initialized to 0. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 scalar} {\f4 \{,\}* -\par -\par -}{\f2 \par - may be any valid REDUCE identifier, except }{\f3 t} {\f2 or -}{\f3 nil} {\f2 . -\par -\par -Scalar variables remain local, and do not share values with variables of -the same name outside the } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 . -When the block is finished, the variables are removed. You may use the -words } -{\f2\uldb real}{\v\f2 REAL} -{\f2 or } -{\f2\uldb integer}{\v\f2 INTEGER} -{\f2 in the place of }{\f3 scalar} {\f2 . -}{\f3 real} {\f2 and }{\f3 integer} {\f2 do not indicate typechecking by the current -REDUCE; they are only for your own information. Declaration statements -must immediately follow the }{\f3 begin} {\f2 , without a semicolon between -}{\f3 begin} {\f2 and the first variable declaration. -\par -\par -Any variables used inside }{\f3 begin} {\f2 ...}{\f3 end} {\f2 blocks that were not -declared }{\f3 scalar} {\f2 , }{\f3 real} {\f2 or }{\f3 integer} {\f2 are global, and any -change made to them inside the block affects their global value. Arrays -declared inside a block are always global. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SCIENTIFIC\_NOTATION} - -${\footnote \pard\plain \sl240 \fs20 $ SCIENTIFIC_NOTATION} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0854} - - K{\footnote \pard\plain \sl240 \fs20 K rounded;floating point;output;SCIENTIFIC_NOTATION declaration;declaration} - -}{\b\f2 SCIENTIFIC\_NOTATION}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 scientific_notation} {\f4 () or -}{\f3 scientific_notation} {\f4 (\{,\}) -\par -\par -}{\f2 \par - and are positive integers. -}{\f3 scientific_notation} {\f2 controls the output format of floating point -numbers. At the default settings, any number with five or less digits -before the decimal point is printed in a fixed-point notation, e.g., -12345.6. Numbers with more than five digits are printed in scientific -notation, e.g., 1.234567E+5. Similarly, by default, any number with -eleven or more zeros after the decimal point is printed in scientific -notation. -\par -\par -When }{\f3 scientific_notation} {\f2 is called with the numerical argument - m a number with more than m digits before the decimal point, -or m or more zeros after the decimal point, is printed in scientific -notation. When }{\f3 scientific_notation} {\f2 is called with a list -\{,\}, a number with more than m digits before the -decimal point, or n or more zeros after the decimal point is -printed in scientific notation. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on rounded; \par - \par - \par -12345.6; \par - \par - 12345.6 \par - \par - \par - \par -123456.5; \par - \par - 1.234565e+5 \par - \par - \par - \par -0.00000000000000012; \par - \par - 1.2e-16 \par - \par - \par - \par -scientific_notation 20; \par - \par - 5,11 \par - \par - \par - \par -5: 123456.7; \par - \par - 123456.7 \par - \par - \par - \par -0.00000000000000012; \par - \par - 0.00000000000000012 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SHARE} - -${\footnote \pard\plain \sl240 \fs20 $ SHARE} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0855} - - K{\footnote \pard\plain \sl240 \fs20 K SHARE declaration;declaration} - -}{\b\f2 SHARE}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 share} {\f2 declaration allows access to its arguments by both -algebraic and symbolic modes. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 share} {\f4 \{,\}* -\par -\par -}{\f2 \par - can be any valid REDUCE identifier. -\par -\par -Programming in } -{\f2\uldb symbolic}{\v\f2 SYMBOLIC} -{\f2 as well as algebraic mode allows -you a wider range -of techniques than just algebraic mode alone. Expressions do not cross the -boundary since they have different representations, unless the }{\f3 share} {\f2 -declaration is used. For more information on using symbolic mode, see -the , and the . -\par -\par -You should be aware that a previously-declared array is destroyed by the -}{\f3 share} {\f2 declaration. Scalar variables retain their values. You can -share a declared } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 that has not yet -been dimensioned so that it can be -used by both modes. Values that are later put into the matrix are -accessible from symbolic mode too, but not by the usual matrix reference -mechanism. In symbolic mode, a matrix is stored as a list whose first -element is } -{\f2\uldb MAT}{\v\f2 MAT} -{\f2 , and whose next elements are the rows of the matrix -stored as lists of the individual elements. Access in symbolic mode is by -the operators } -{\f2\uldb first}{\v\f2 FIRST} -{\f2 , } -{\f2\uldb second}{\v\f2 SECOND} -{\f2 , } -{\f2\uldb third}{\v\f2 THIRD} -{\f2 and -} -{\f2\uldb rest}{\v\f2 REST} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SYMBOLIC} - -${\footnote \pard\plain \sl240 \fs20 $ SYMBOLIC} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0856} - - K{\footnote \pard\plain \sl240 \fs20 K SYMBOLIC command;command} - -}{\b\f2 SYMBOLIC}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 symbolic} {\f2 command changes REDUCE's mode of operation to symbolic. -When }{\f3 symbolic} {\f2 is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the } -{\f2\uldb lisp}{\v\f2 LISP} -{\f2 command. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -symbolic; \par - \par - NIL \par - \par - \par -cdr '(a b c); \par - \par - (B C) \par - \par - \par -algebraic; \par - \par -x + symbolic car '(y z); \par - \par - X + Y \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SYMMETRIC} - -${\footnote \pard\plain \sl240 \fs20 $ SYMMETRIC} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0857} - - K{\footnote \pard\plain \sl240 \fs20 K operator;SYMMETRIC declaration;declaration} - -}{\b\f2 SYMMETRIC}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -When an operator is declared }{\f3 symmetric} {\f2 , its arguments are reordered -to conform to the internal ordering of the system. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 symmetric} {\f4 \{,\}* -\par -\par -}{\f2 \par - is an identifier that has been declared an operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator m,n; \par - \par -symmetric m,n; \par - \par -m(y,a,sin(x)); \par - \par - M(SIN(X),A,Y) \par - \par - \par -n(z,m(b,a,q)); \par - \par - N(M(A,B,Q),Z) \par - \par -\pard \sl240 }{\f2 If has not been declared to be an operator, the flag -}{\f3 symmetric} {\f2 is still attached to it. When is -subsequently used as an operator, the message }{\f3 Declare} {\f2 - }{\f3 operator ? (Y or N)} {\f2 is printed. If the user replies }{\f3 y} {\f2 , the -symmetric property of the operator is used. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TR} - -${\footnote \pard\plain \sl240 \fs20 $ TR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0858} - - K{\footnote \pard\plain \sl240 \fs20 K trace;TR declaration;declaration} - -}{\b\f2 TR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 tr} {\f2 declaration is used to trace system or user-written procedures. -It is only useful to those with a good knowledge of both Lisp and the -internal formats used by REDUCE. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 tr} {\f4 \{,\}* -\par -\par -}{\f2 \par - is the name of a REDUCE system procedure or one of your own -procedures. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 The system procedure }{\f3 prepsq} {\f2 is traced, - which prepares REDUCE standard -forms for printing by converting them to a Lisp prefix form.}{\f4 \pard \tx3420 \par - \par -tr prepsq; \par - \par - (PREPSQ) \par - \par - \par -x**2 + y; \par - \par - PREPSQ entry: \par - Arg 1: (((((X . 2) . 1) ((Y . 1) . 1)) . 1) \par - PREPSQ return value = (PLUS (EXPT X 2) Y) \par - PREPSQ entry: \par - Arg 1: (1 . 1) \par - PREPSQ return value = 1 \par - 2 \par - X + Y \par - \par - \par -untr prepsq; \par - \par - (PREPSQ) \par - \par -\pard \sl240 }{\f2 -\par -\par -This example is for a PSL-based system; the above format will vary if -other Lisp systems are used. -\par -\par -When a procedure is traced, the first lines show entry to the procedure and -the arguments it is given. The value returned by the procedure is printed -upon exit. If you are tracing several procedures, with a call to one of -them inside the other, the inner trace will be indented showing procedure -nesting. There are no trace options. However, the format of the trace -depends on the underlying Lisp system used. The trace can be removed with -the command } -{\f2\uldb untr}{\v\f2 UNTR} -{\f2 . Note that }{\f3 trace} {\f2 , below, is a matrix -operator, while }{\f3 tr} {\f2 does procedure tracing. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # UNTR} - -${\footnote \pard\plain \sl240 \fs20 $ UNTR} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0859} - - K{\footnote \pard\plain \sl240 \fs20 K trace;UNTR declaration;declaration} - -}{\b\f2 UNTR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - - \par -\par -The }{\f3 untr} {\f2 declaration is used to remove a trace from system or -user-written procedures declared with } -{\f2\uldb tr}{\v\f2 TR} -{\f2 . It is only useful to -those with a good knowledge of both Lisp and the internal formats used by -REDUCE. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 untr} {\f4 \{,\}* -\par -\par -}{\f2 \par - is the name of a REDUCE system procedure or one of your own -procedures that has previously been the argument of a }{\f3 tr} {\f2 -declaration. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # VARNAME} - -${\footnote \pard\plain \sl240 \fs20 $ VARNAME} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0860} - - K{\footnote \pard\plain \sl240 \fs20 K VARNAME declaration;declaration} - -}{\b\f2 VARNAME}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The declaration }{\f3 varname} {\f2 instructs REDUCE to use its argument as the -default Fortran (when } -{\f2\uldb fort}{\v\f2 FORT} -{\f2 is on) or } -{\f2\uldb structr}{\v\f2 STRUCTR} -{\f2 identifier -and identifier stem, rather than using }{\f3 ANS} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 varname} {\f4 -\par -\par -}{\f2 \par - can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -varname ident; \par - \par - IDENT \par - \par - \par -on fort; \par - \par -x**2 + 1; \par - \par - IDENT=X**2+1. \par - \par - \par -off fort,exp; \par - \par -structr(((x+y)**2 + z)**3); \par - \par - 3 \par - IDENT2 \par - where \par - 2 \par - IDENT2 := IDENT1 + Z \par - IDENT1 := X + Y \par - \par -\pard \sl240 }{\f2 } -{\f2\uldb exp}{\v\f2 EXP} -{\f2 was turned off so that } -{\f2\uldb structr}{\v\f2 STRUCTR} -{\f2 could show the -structure. If }{\f3 exp} {\f2 had been on, the expression would have been -expanded into a polynomial. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WEIGHT} - -${\footnote \pard\plain \sl240 \fs20 $ WEIGHT} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0861} - - K{\footnote \pard\plain \sl240 \fs20 K WEIGHT command;command} - -}{\b\f2 WEIGHT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 weight} {\f2 command is used to attach weights to kernels for asymptotic -constraints. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 weight} {\f4 }{\f3 =} {\f4 -\par -\par -}{\f2 \par - must be a REDUCE } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , must be a -positive integer, not 0. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := (x+y)**4; \par - \par - 4 3 2 2 3 4 \par - A := X + 4*X *Y + 6*X *Y + 4*X*Y + Y \par - \par - \par -weight x=2,y=3; \par - \par -wtlevel 8; \par - \par -a; \par - \par - 4 \par - X \par - \par - \par -wtlevel 10; \par - \par -a; \par - \par - 2 2 2 \par - X *(6*Y + 4*X*Y + X ) \par - \par - \par -int(x**2,x); \par - \par - ***** X invalid as KERNEL \par - \par -\pard \sl240 }{\f2 Weights and } -{\f2\uldb wtlevel}{\v\f2 WTLEVEL} -{\f2 are used for asymptotic constraints, where -higher-order terms are considered insignificant. -\par -\par -Weights are originally equivalent to 0 until set by a }{\f3 weight} {\f2 -command. To remove a weight from a kernel, use the } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 -command. Weights once assigned cannot be changed without clearing the -identifier. Once a weight is assigned to a kernel, it is no longer a -kernel and cannot be used in any REDUCE commands or operators that require -kernels, until the weight is cleared. Note that terms are ordered by -greatest weight. -\par -\par -The weight level of the system is set by } -{\f2\uldb wtlevel}{\v\f2 WTLEVEL} -{\f2 , initially at -2. Since no kernels have weights, no effect from }{\f3 wtlevel} {\f2 can be -seen. Once you assign weights to kernels, you must set }{\f3 wtlevel} {\f2 -correctly for the desired operation. When weighted variables appear in a -term, their weights are summed for the total weight of the term (powers of -variables multiply their weights). When a term exceeds the weight level -of the system, it is discarded from the result expression. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WHERE} - -${\footnote \pard\plain \sl240 \fs20 $ WHERE} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0862} - - K{\footnote \pard\plain \sl240 \fs20 K substitution;WHERE operator;operator} - -}{\b\f2 WHERE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 where} {\f2 operator provides an infix notation for one-time -substitutions for kernels in expressions. - \par -syntax: \par -}{\f4 \par -\par - }{\f3 where} {\f4 - }{\f3 =} {\f4 - \{, }{\f3 =} {\f4 \}* -\par -\par -}{\f2 \par - can be any REDUCE scalar expression, must -be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 . Alternatively a } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 or a }{\f3 rule list} {\f2 -can be a member of the right-hand part of a }{\f3 where} {\f2 expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**2 + 17*x*y + 4*y**2 where x=1,y=2; \par - \par - \par - 51 \par - \par - \par -for i := 1:5 collect x**i*q where q= for j := 1:i product j; \par - \par - \par - \par - 2 3 4 5 \par - \{X,2*X ,6*X ,24*X ,120*X \} \par - \par - \par -x**2 + y + z where z=y**3,y=3; \par - \par - 2 3 \par - X + Y + 3 \par - \par -\pard \sl240 }{\f2 Substitution inside a }{\f3 where} {\f2 expression has no effect upon the values -of the kernels outside the expression. The }{\f3 where} {\f2 operator has the -lowest precedence of all the infix operators, which are lower than prefix -operators, so that the substitutions apply to the entire expression -preceding the }{\f3 where} {\f2 operator. However, }{\f3 where} {\f2 is applied -before command keywords such as }{\f3 then} {\f2 , }{\f3 repeat} {\f2 , or }{\f3 do} {\f2 . -\par -\par -A } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 or a }{\f3 rule set} {\f2 in the right-hand part of the -}{\f3 where} {\f2 expression act as if the rules were activated by } -{\f2\uldb let}{\v\f2 LET} -{\f2 -immediately before the evaluation of the expression and deactivated -by } -{\f2\uldb clearrules}{\v\f2 CLEARRULES} -{\f2 immediately afterwards. -\par -\par -}{\f3 where} {\f2 gives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression can be -a command to be evaluated. The substitute assignments are made in -parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. -}{\f3 where} {\f2 can also be used to define auxiliary variables in -} -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 definitions. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WHILE} - -${\footnote \pard\plain \sl240 \fs20 $ WHILE} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0863} - - K{\footnote \pard\plain \sl240 \fs20 K loop;WHILE command;command} - -}{\b\f2 WHILE}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 while} {\f2 command causes a statement to be repeatedly executed until a -given condition is true. If the condition is initially false, the statement -is not executed at all. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 while} {\f4 }{\f3 do} {\f4 -\par -\par -}{\f2 \par - is given by a logical operator, must be a -single REDUCE statement, or a } -{\f2\uldb group}{\v\f2 group} -{\f2 (}{\f3 <<} {\f2 ...}{\f3 >>} {\f2 ) or -} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 10; \par - \par - A := 10 \par - \par - \par -while a <= 12 do <>; \par - \par - \par - \par - 10 \par - \par - \par - 11 \par - \par - 12 \par - \par -while a < 5 do <>; \par - \par - \par - \par - nothing is printed \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WTLEVEL} - -${\footnote \pard\plain \sl240 \fs20 $ WTLEVEL} - -+{\footnote \pard\plain \sl240 \fs20 + g9:0864} - - K{\footnote \pard\plain \sl240 \fs20 K WTLEVEL command;command} - -}{\b\f2 WTLEVEL}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -In conjunction with } -{\f2\uldb weight}{\v\f2 WEIGHT} -{\f2 , }{\f3 wtlevel} {\f2 is used to implement -asymptotic constraints. Its default value is 2. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 wtlevel} {\f4 -\par -\par -}{\f2 \par -To change the weight level, must evaluate to a positive -integer that is the greatest weight term to be retained in expressions -involving kernels with weight assignments. }{\f3 wtlevel} {\f2 returns the -new weight level. If you want the current weight level, but not -change it, say }{\f3 wtlevel nil} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x+y)**4; \par - \par - \par - 4 3 2 2 3 4 \par - X + 4*X *Y + 6*X *Y + 4*X*Y + Y \par - \par - \par -weight x=2,y=3; \par - \par -wtlevel 8; \par - \par -(x+y)**4; \par - \par - 4 \par - X \par - \par - \par -wtlevel 10; \par - \par -(x+y)**4; \par - \par - 2 2 2 \par - X *(6*Y + 4*X*Y + X ) \par - \par - \par -int(x**2,x); \par - \par - ***** X invalid as KERNEL \par - \par -\pard \sl240 }{\f2 }{\f3 wtlevel} {\f2 is used in conjunction with the command } -{\f2\uldb weight}{\v\f2 WEIGHT} -{\f2 to -enable asymptotic constraints. Weight of a term is computed by multiplying -the weights of each variable in it by the power to which it has been -raised, and adding the resulting weights for each variable. If the weight -of the term is greater than }{\f3 wtlevel} {\f2 , the term is dropped from the -expression, and not used in any further computation involving the -expression. -\par -\par -Once a weight has been attached to a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , it is no longer -recognized by the system as a kernel, though still a variable. It cannot -be used in REDUCE commands and operators that need kernels. The weight -attachment can be undone with a } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 command. }{\f3 wtlevel} {\f2 can -be changed as desired. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g9} - -${\footnote \pard\plain \sl240 \fs20 $ Declarations} - -+{\footnote \pard\plain \sl240 \fs20 + index:0009} -}{\b\f2 Declarations}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ALGEBRAIC command} -{\v\f2 ALGEBRAIC}{\f2 \par -}{\f2 \tab}{\f2\uldb ANTISYMMETRIC declaration} -{\v\f2 ANTISYMMETRIC}{\f2 \par -}{\f2 \tab}{\f2\uldb ARRAY declaration} -{\v\f2 ARRAY}{\f2 \par -}{\f2 \tab}{\f2\uldb CLEAR command} -{\v\f2 CLEAR}{\f2 \par -}{\f2 \tab}{\f2\uldb CLEARRULES command} -{\v\f2 CLEARRULES}{\f2 \par -}{\f2 \tab}{\f2\uldb DEFINE command} -{\v\f2 DEFINE}{\f2 \par -}{\f2 \tab}{\f2\uldb DEPEND declaration} -{\v\f2 DEPEND}{\f2 \par -}{\f2 \tab}{\f2\uldb EVEN declaration} -{\v\f2 EVEN}{\f2 \par -}{\f2 \tab}{\f2\uldb FACTOR declaration} -{\v\f2 FACTOR_declaration}{\f2 \par -}{\f2 \tab}{\f2\uldb FORALL command} -{\v\f2 FORALL}{\f2 \par -}{\f2 \tab}{\f2\uldb INFIX declaration} -{\v\f2 INFIX}{\f2 \par -}{\f2 \tab}{\f2\uldb INTEGER declaration} -{\v\f2 INTEGER}{\f2 \par -}{\f2 \tab}{\f2\uldb KORDER declaration} -{\v\f2 KORDER}{\f2 \par -}{\f2 \tab}{\f2\uldb LET command} -{\v\f2 LET}{\f2 \par -}{\f2 \tab}{\f2\uldb LINEAR declaration} -{\v\f2 LINEAR}{\f2 \par -}{\f2 \tab}{\f2\uldb LINELENGTH declaration} -{\v\f2 LINELENGTH}{\f2 \par -}{\f2 \tab}{\f2\uldb LISP command} -{\v\f2 LISP}{\f2 \par -}{\f2 \tab}{\f2\uldb LISTARGP declaration} -{\v\f2 LISTARGP}{\f2 \par -}{\f2 \tab}{\f2\uldb NODEPEND declaration} -{\v\f2 NODEPEND}{\f2 \par -}{\f2 \tab}{\f2\uldb MATCH command} -{\v\f2 MATCH}{\f2 \par -}{\f2 \tab}{\f2\uldb NONCOM declaration} -{\v\f2 NONCOM}{\f2 \par -}{\f2 \tab}{\f2\uldb NONZERO declaration} -{\v\f2 NONZERO}{\f2 \par -}{\f2 \tab}{\f2\uldb ODD declaration} -{\v\f2 ODD}{\f2 \par -}{\f2 \tab}{\f2\uldb OFF command} -{\v\f2 OFF}{\f2 \par -}{\f2 \tab}{\f2\uldb ON command} -{\v\f2 ON}{\f2 \par -}{\f2 \tab}{\f2\uldb OPERATOR declaration} -{\v\f2 OPERATOR}{\f2 \par -}{\f2 \tab}{\f2\uldb ORDER declaration} -{\v\f2 ORDER}{\f2 \par -}{\f2 \tab}{\f2\uldb PRECEDENCE declaration} -{\v\f2 PRECEDENCE}{\f2 \par -}{\f2 \tab}{\f2\uldb PRECISION declaration} -{\v\f2 PRECISION}{\f2 \par -}{\f2 \tab}{\f2\uldb PRINT\_PRECISION declaration} -{\v\f2 PRINT\_PRECISION}{\f2 \par -}{\f2 \tab}{\f2\uldb REAL declaration} -{\v\f2 REAL}{\f2 \par -}{\f2 \tab}{\f2\uldb REMFAC declaration} -{\v\f2 REMFAC}{\f2 \par -}{\f2 \tab}{\f2\uldb SCALAR declaration} -{\v\f2 SCALAR}{\f2 \par -}{\f2 \tab}{\f2\uldb SCIENTIFIC\_NOTATION declaration} -{\v\f2 SCIENTIFIC\_NOTATION}{\f2 \par -}{\f2 \tab}{\f2\uldb SHARE declaration} -{\v\f2 SHARE}{\f2 \par -}{\f2 \tab}{\f2\uldb SYMBOLIC command} -{\v\f2 SYMBOLIC}{\f2 \par -}{\f2 \tab}{\f2\uldb SYMMETRIC declaration} -{\v\f2 SYMMETRIC}{\f2 \par -}{\f2 \tab}{\f2\uldb TR declaration} -{\v\f2 TR}{\f2 \par -}{\f2 \tab}{\f2\uldb UNTR declaration} -{\v\f2 UNTR}{\f2 \par -}{\f2 \tab}{\f2\uldb VARNAME declaration} -{\v\f2 VARNAME}{\f2 \par -}{\f2 \tab}{\f2\uldb WEIGHT command} -{\v\f2 WEIGHT}{\f2 \par -}{\f2 \tab}{\f2\uldb WHERE operator} -{\v\f2 WHERE}{\f2 \par -}{\f2 \tab}{\f2\uldb WHILE command} -{\v\f2 WHILE}{\f2 \par -}{\f2 \tab}{\f2\uldb WTLEVEL command} -{\v\f2 WTLEVEL}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # IN} - -${\footnote \pard\plain \sl240 \fs20 $ IN} - -+{\footnote \pard\plain \sl240 \fs20 + g10:0865} - - K{\footnote \pard\plain \sl240 \fs20 K input;IN command;command} - -}{\b\f2 IN}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 in} {\f2 command takes a list of file names and inputs each file into -the system. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 in} {\f4 \{,\}* -\par -\par -}{\f2 \par - must be in the current directory, or be a valid pathname. -If the file name is not an identifier, double quote marks (}{\f3 "} {\f2 ) are -needed around the file name. -\par -\par -A message is given if the file cannot be found, or has a mistake -in it. -\par -\par -Ending the command with a semicolon causes the file to be echoed to the -screen; ending it with a dollar sign does not echo the file. If you want -some but not all of a file echoed, turn the switch } -{\f2\uldb echo}{\v\f2 ECHO} -{\f2 on or off -in the file. -\par -\par -An efficient way to develop procedures in REDUCE is to write them into a file -using a system editor of your choice, and then input the -files into an active REDUCE session. REDUCE reparses the procedure as -it takes information from the file, overwriting the previous procedure -definition. When it accepts the procedure, it echoes its name to the screen. -Data can also be input to the system from files. -\par -\par -Files to be read in should always end in } -{\f2\uldb end}{\v\f2 END} -{\f3 ;} {\f2 to avoid -end-of-file problems. Note that this is an additional }{\f3 end;} {\f2 to any -ending procedures in the file. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INPUT} - -${\footnote \pard\plain \sl240 \fs20 $ INPUT} - -+{\footnote \pard\plain \sl240 \fs20 + g10:0866} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;INPUT command;command} - -}{\b\f2 INPUT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 input} {\f2 command returns the input expression to the REDUCE numbered -prompt that is its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 input} {\f4 () or }{\f3 input} {\f4 -\par -\par -\par -\par -}{\f2 must be between 1 and the current REDUCE prompt number. -\par -\par -An expression brought back by }{\f3 input} {\f2 can be reexecuted with new -values or switch settings, or used as an argument in another expression. -The command } -{\f2\uldb ws}{\v\f2 WS} -{\f2 brings back the results of a numbered REDUCE -statement. Two lists contain every input and every output statement since -the beginning of the session. If your session is very long, storage space -begins to fill up with these expressions, so it is a good idea to end the -session once in a while, saving needed expressions to files with the -} -{\f2\uldb saveas}{\v\f2 SAVEAS} -{\f2 and } -{\f2\uldb out}{\v\f2 OUT} -{\f2 commands. -\par -\par -Switch settings and } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements can also be reexecuted by using -}{\f3 input} {\f2 . -\par -\par -An error message is given if a number is called for that has not yet been used. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # OUT} - -${\footnote \pard\plain \sl240 \fs20 $ OUT} - -+{\footnote \pard\plain \sl240 \fs20 + g10:0867} - - K{\footnote \pard\plain \sl240 \fs20 K open;output;OUT command;command} - -}{\b\f2 OUT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 out} {\f2 command directs output to the filename that is its argument, -until another }{\f3 out} {\f2 changes the output file, or } -{\f2\uldb shut}{\v\f2 SHUT} -{\f2 closes it. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 out} {\f4 or }{\f3 out "} {\f4 }{\f3 "} {\f4 or }{\f3 out t} {\f4 -\par -\par -}{\f2 \par - must be in the current directory, or be a valid complete -file description for your system. If the file name is not -in the current directory, quote marks are needed around the file name. -If the file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. -\par -\par -To restore output to the terminal, type }{\f3 out t} {\f2 , or } -{\f2\uldb shut}{\v\f2 SHUT} -{\f2 the -file. When you use }{\f3 out t} {\f2 , the file remains available, and if you -open it again (with another }{\f3 out} {\f2 ), new material is appended rather -than overwriting. -\par -\par -To write a file using }{\f3 out} {\f2 that can be input at a later time, the -switch } -{\f2\uldb nat}{\v\f2 NAT} -{\f2 must be turned off, so that the standard linear form -is saved that can be read in by } -{\f2\uldb in}{\v\f2 IN} -{\f2 . If }{\f3 nat} {\f2 is on, exponents -are printed on the line above the expression, which causes trouble -when REDUCE tries to read the file. -\par -\par -There is a slight complication if you are using the }{\f3 out} {\f2 command from -inside a file to create another file. The } -{\f2\uldb echo}{\v\f2 ECHO} -{\f2 switch is normally -off at the top-level and on while reading files (so you can see what is -being read in). If you create a file using }{\f3 out} {\f2 at the top-level, -the result lines are printed into the file as you want them. But if you -create such a file from inside a file, the }{\f3 echo} {\f2 switch is on, and -every line is echoed, first as you typed it, then as REDUCE parsed it, and -then once more for the file. Therefore, when you create a file from -a file, you need to turn }{\f3 echo} {\f2 off explicitly before the }{\f3 out} {\f2 -command, and turn it back on when you }{\f3 shut} {\f2 the created file, so your -executing file echoes as it should. This behavior also means that as you -watch the file execute, you cannot see the lines that are being put into -the }{\f3 out} {\f2 file. As soon as you turn }{\f3 echo} {\f2 on, you can see -output again. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SHUT} - -${\footnote \pard\plain \sl240 \fs20 $ SHUT} - -+{\footnote \pard\plain \sl240 \fs20 + g10:0868} - - K{\footnote \pard\plain \sl240 \fs20 K close;output;SHUT command;command} - -}{\b\f2 SHUT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 shut} {\f2 command closes output files. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 shut} {\f4 \{,\}* -\par -\par -}{\f2 \par - must have been a file opened by } -{\f2\uldb out}{\v\f2 OUT} -{\f2 . -\par -\par -A file that has been opened by } -{\f2\uldb out}{\v\f2 OUT} -{\f2 must be }{\f3 shut} {\f2 before it is -brought in by } -{\f2\uldb in}{\v\f2 IN} -{\f2 . Files that have been opened by }{\f3 out} {\f2 should -always be }{\f3 shut} {\f2 before the end of the REDUCE session, to avoid either -loss of information or the printing of extraneous information into the file. -In most systems, terminating a session by } -{\f2\uldb bye}{\v\f2 BYE} -{\f2 closes all open -output files. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g10} - -${\footnote \pard\plain \sl240 \fs20 $ Input and Output} - -+{\footnote \pard\plain \sl240 \fs20 + index:0010} -}{\b\f2 Input and Output}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb IN command} -{\v\f2 IN}{\f2 \par -}{\f2 \tab}{\f2\uldb INPUT command} -{\v\f2 INPUT}{\f2 \par -}{\f2 \tab}{\f2\uldb OUT command} -{\v\f2 OUT}{\f2 \par -}{\f2 \tab}{\f2\uldb SHUT command} -{\v\f2 SHUT}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACOS} - -${\footnote \pard\plain \sl240 \fs20 $ ACOS} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0869} - - K{\footnote \pard\plain \sl240 \fs20 K arccosine;ACOS operator;operator} - -}{\b\f2 ACOS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 acos} {\f2 operator returns the arccosine of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acos} {\f4 () or }{\f3 acos} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -acos(ab); \par - \par - ACOS(AB) \par - \par - \par -acos 15; \par - \par - ACOS(15) \par - \par - \par -df(acos(x*y),x); \par - \par - 2 2 \par - SQRT( - X *Y + 1)*Y \par - -------------------- \par - 2 2 \par - X *Y - 1 \par - \par - \par -on rounded; \par - \par -res := acos(sqrt(2)/2); \par - \par - RES := 0.785398163397 \par - \par - \par -res-pi/4; \par - \par - 0 \par - \par -\pard \sl240 }{\f2 An explicit numeric value is not given unless the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is -on and the argument has an absolute numeric value less than or equal to 1. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACOSH} - -${\footnote \pard\plain \sl240 \fs20 $ ACOSH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0870} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic arccosine;ACOSH operator;operator} - -}{\b\f2 ACOSH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -}{\f3 acosh} {\f2 represents the hyperbolic arccosine of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -}{\f3 acosh} {\f2 is known to the system. Numerical values may also be found by -turning on the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acosh} {\f4 () or }{\f3 acosh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -acosh a; \par - \par - ACOSH(A) \par - \par - \par -acosh(0); \par - \par - ACOSH(0) \par - \par - \par -df(acosh(a**2),a); \par - \par - 4 \par - 2*SQRT(A - 1)*A \par - ---------------- \par - 4 \par - A - 1 \par - \par - \par -int(acosh(x),x); \par - \par - INT(ACOSH(X),X) \par - \par -\pard \sl240 }{\f2 You may attach functionality by defining }{\f3 acosh} {\f2 to be the inverse of -}{\f3 cosh} {\f2 . This is done by the commands -\pard \tx3420 }{\f4 \par - put('cosh,'inverse,'acosh); \par - put('acosh,'inverse,'cosh); \par -\pard \sl240 }{\f2 \par -\par -You can write a procedure to attach integrals or other -functions to }{\f3 acosh} {\f2 . You may wish to add a check to see that its -argument is properly restricted. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACOT} - -${\footnote \pard\plain \sl240 \fs20 $ ACOT} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0871} - - K{\footnote \pard\plain \sl240 \fs20 K arccotangent;ACOT operator;operator} - -}{\b\f2 ACOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -}{\f3 acot} {\f2 represents the arccotangent of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -}{\f3 acot} {\f2 is known to the system. Numerical values may also be found by -turning on the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acot} {\f4 () or }{\f3 acot} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -You can add functionality yourself with }{\f3 let} {\f2 and procedures. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACOTH} - -${\footnote \pard\plain \sl240 \fs20 $ ACOTH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0872} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic cotangent;ACOTH operator;operator} - -}{\b\f2 ACOTH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -}{\f3 acoth} {\f2 represents the inverse hyperbolic cotangent of its argument. -It takes an arbitrary scalar expression as its argument. The derivative -of }{\f3 acoth} {\f2 is known to the system. Numerical values may also be found -by turning on the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acoth} {\f4 () or }{\f3 acoth} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, -matrix or vector expression. must be a single -identifier or begin with a prefix operator name. You can add -functionality yourself with }{\f3 let} {\f2 and procedures. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACSC} - -${\footnote \pard\plain \sl240 \fs20 $ ACSC} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0873} - - K{\footnote \pard\plain \sl240 \fs20 K arccosecant;ACSC operator;operator} - -}{\b\f2 ACSC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 acsc} {\f2 operator returns the arccosecant of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acsc} {\f4 () or }{\f3 acsc} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -acsc(ab); \par - \par - ACSC(AB) \par - \par - \par -acsc 15; \par - \par - ACSC(15) \par - \par - \par -df(acsc(x*y),x); \par - \par - 2 2 \par - -SQRT(X *Y - 1) \par - ---------------- \par - 2 2 \par - X*(X *Y - 1) \par - \par - \par -on rounded; \par - \par -res := acsc(2/sqrt(3)); \par - \par - RES := 1.0471975512 \par - \par - \par -res-pi/3; \par - \par - 0 \par - \par -\pard \sl240 }{\f2 An explicit numeric value is not given unless the switch }{\f3 rounded} {\f2 is -on and the argument has an absolute numeric value less than or equal to 1. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ACSCH} - -${\footnote \pard\plain \sl240 \fs20 $ ACSCH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0874} - - K{\footnote \pard\plain \sl240 \fs20 K arccosecant;ACSCH operator;operator} - -}{\b\f2 ACSCH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 acsch} {\f2 operator returns the hyperbolic arccosecant of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 acsch} {\f4 () or }{\f3 acsch} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -acsch(ab); \par - \par - ACSCH(AB) \par - \par - \par -acsch 15; \par - \par - ACSCH(15) \par - \par - \par -df(acsch(x*y),x); \par - \par - 2 2 \par - -SQRT(X *Y + 1) \par - ---------------- \par - 2 2 \par - X*(X *Y + 1) \par - \par - \par -on rounded; \par - \par -res := acsch(3); \par - \par - RES := 0.327450150237 \par - \par -\pard \sl240 }{\f2 An explicit numeric value is not given unless the switch }{\f3 rounded} {\f2 is -on and the argument has an absolute numeric value less than or equal to 1. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ASEC} - -${\footnote \pard\plain \sl240 \fs20 $ ASEC} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0875} - - K{\footnote \pard\plain \sl240 \fs20 K arccosecant;ASEC operator;operator} - -}{\b\f2 ASEC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 asec} {\f2 operator returns the arccosecant of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 asec} {\f4 () or }{\f3 asec} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -asec(ab); \par - \par - ASEC(AB) \par - \par - \par -asec 15; \par - \par - ASEC(15) \par - \par - \par -df(asec(x*y),x); \par - \par - 2 2 \par - SQRT(X *Y - 1) \par - --------------- \par - 2 2 \par - X*(X *Y - 1) \par - \par - \par -on rounded; \par - \par -res := asec sqrt(2); \par - \par - RES := 0.785398163397 \par - \par - \par -res-pi/4; \par - \par - 0 \par - \par -\pard \sl240 }{\f2 An explicit numeric value is not given unless the switch }{\f3 rounded} {\f2 is -on and the argument has an absolute numeric value greater or equal to 1. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ASECH} - -${\footnote \pard\plain \sl240 \fs20 $ ASECH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0876} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic arccosecant;ASECH operator;operator} - -}{\b\f2 ASECH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -}{\f3 asech} {\f2 represents the hyperbolic arccosecant of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -}{\f3 asech} {\f2 is known to the system. Numerical values may also be found by -turning on the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 asech} {\f4 () or }{\f3 asech} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -asech a; \par - \par - ASECH(A) \par - \par - \par -asech(1); \par - \par - 0 \par - \par - \par -df(acosh(a**2),a); \par - \par - 4 \par - 2*SQRT(- A + 1) \par - ---------------- \par - 4 \par - A*(A - 1) \par - \par - \par -int(asech(x),x); \par - \par - INT(ASECH(X),X) \par - \par -\pard \sl240 }{\f2 You may attach functionality by defining }{\f3 asech} {\f2 to be the inverse of -}{\f3 sech} {\f2 . This is done by the commands -\pard \tx3420 }{\f4 \par - put('sech,'inverse,'asech); \par - put('asech,'inverse,'sech); \par -\pard \sl240 }{\f2 \par -\par -You can write a procedure to attach integrals or other -functions to }{\f3 asech} {\f2 . You may wish to add a check to see that its -argument is properly restricted. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ASIN} - -${\footnote \pard\plain \sl240 \fs20 $ ASIN} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0877} - - K{\footnote \pard\plain \sl240 \fs20 K arcsine;ASIN operator;operator} - -}{\b\f2 ASIN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 asin} {\f2 operator returns the arcsine of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 asin} {\f4 () or }{\f3 asin} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -asin(givenangle); \par - \par - ASIN(GIVENANGLE) \par - \par - \par -asin(5); \par - \par - ASIN(5) \par - \par - \par -df(asin(2*x),x); \par - \par - 2 \par - 2*SQRT( - 4*X + 1)) \par - - -------------------- \par - 2 \par - 4*X - 1 \par - \par - \par -on rounded; \par - \par -asin .5; \par - \par - 0.523598775598 \par - \par - \par -asin(sqrt(3)); \par - \par - ASIN(1.73205080757) \par - \par - \par -asin(sqrt(3)/2); \par - \par - 1.04719755120 \par - \par -\pard \sl240 }{\f2 A numeric value is not returned by }{\f3 asin} {\f2 unless the switch -}{\f3 rounded} {\f2 is on and its argument has an absolute value less than or -equal to 1. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ASINH} - -${\footnote \pard\plain \sl240 \fs20 $ ASINH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0878} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic arcsine;ASINH operator;operator} - -}{\b\f2 ASINH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 asinh} {\f2 operator returns the hyperbolic arcsine of its argument. -The derivative of }{\f3 asinh} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 asinh} {\f4 () or }{\f3 asinh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -asinh d; \par - \par - ASINH(D) \par - \par - \par -asinh(1); \par - \par - ASINH(1) \par - \par - \par -df(asinh(2*x),x); \par - \par - 2 \par - 2*SQRT(4*X + 1)) \par - ----------------- \par - 2 \par - 4*X + 1 \par - \par -\pard \sl240 }{\f2 You may attach further functionality by defining }{\f3 asinh} {\f2 to be the -inverse of }{\f3 sinh} {\f2 . This is done by the commands -\pard \tx3420 }{\f4 \par - put('sinh,'inverse,'asinh); \par - put('asinh,'inverse,'sinh); \par -\pard \sl240 }{\f2 \par -\par -A numeric value is not returned by }{\f3 asinh} {\f2 unless the switch -}{\f3 rounded} {\f2 is on and its argument evaluates to a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ATAN} - -${\footnote \pard\plain \sl240 \fs20 $ ATAN} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0879} - - K{\footnote \pard\plain \sl240 \fs20 K arctangent;ATAN operator;operator} - -}{\b\f2 ATAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 atan} {\f2 operator returns the arctangent of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 atan} {\f4 () or }{\f3 atan} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -atan(middle); \par - \par - ATAN(MIDDLE) \par - \par - \par -on rounded; \par - \par -atan 45; \par - \par - 1.54857776147 \par - \par - \par -off rounded; \par - \par -int(atan(x),x); \par - \par - 2 \par - 2*ATAN(X)*X - LOG(X + 1) \par - ------------------------- \par - 2 \par - \par - \par -df(atan(y**2),y); \par - \par - 2*Y \par - ------- \par - 4 \par - Y + 1 \par - \par -\pard \sl240 }{\f2 A numeric value is not returned by }{\f3 atan} {\f2 unless the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on and its argument evaluates to a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ATANH} - -${\footnote \pard\plain \sl240 \fs20 $ ATANH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0880} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic arctangent;ATANH operator;operator} - -}{\b\f2 ATANH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 atanh} {\f2 operator returns the hyperbolic arctangent of its argument. -The derivative of }{\f3 asinh} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 atanh} {\f4 () or }{\f3 atanh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -atanh aa; \par - \par - ATANH(AA) \par - \par - \par -atanh(1); \par - \par - ATANH(1) \par - \par - \par -df(atanh(x*y),y); \par - \par - - X \par - ---------- \par - 2 2 \par - X *Y - 1 \par - \par -\pard \sl240 }{\f2 A numeric value is not returned by }{\f3 asinh} {\f2 unless the switch -}{\f3 rounded} {\f2 is on and its argument evaluates to a number. -You may attach additional functionality by defining }{\f3 atanh} {\f2 to be the -inverse of }{\f3 tanh} {\f2 . This is done by the commands -\par -\par -\pard \tx3420 }{\f4 \par - put('tanh,'inverse,'atanh); \par - put('atanh,'inverse,'tanh); \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ATAN2} - -${\footnote \pard\plain \sl240 \fs20 $ ATAN2} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0881} - - K{\footnote \pard\plain \sl240 \fs20 K ATAN2 operator;operator} - -}{\b\f2 ATAN2}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 atan2} {\f4 (,) -\par -\par -}{\f2 \par - is any valid scalar REDUCE expression. In -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode, if a numerical value exists, }{\f3 atan2} {\f2 returns -the principal value of the arc tangent of the second argument divided by -the first in the range [-pi,+pi] radians, using the signs of both -arguments to determine the quadrant of the return value. An expression in -terms of }{\f3 atan2} {\f2 is returned in other cases. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -atan2(3,2); \par - \par - ATAN2(3,2); \par - \par - \par -on rounded; \par - \par -atan2(3,2); \par - \par - 0.982793723247 \par - \par - \par -atan2(a,b); \par - \par - ATAN2(A,B); \par - \par - \par -atan2(1,0); \par - \par - 1.57079632679 \par - \par -\pard \sl240 }{\f2 }{\f3 atan2} {\f2 returns a numeric value only if } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. Then -}{\f3 atan2} {\f2 is calculated to the current degree of floating point precision. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COS} - -${\footnote \pard\plain \sl240 \fs20 $ COS} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0882} - - K{\footnote \pard\plain \sl240 \fs20 K COS operator;operator} - -}{\b\f2 COS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 cos} {\f2 operator returns the cosine of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cos} {\f4 () or }{\f3 cos} {\f4 -\par -\par -}{\f2 \par - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - \par -cos abc; \par - \par - COS(ABC) \par - \par - \par - \par -cos(pi); \par - \par - -1 \par - \par - \par - \par -cos 4; \par - \par - COS(4) \par - \par - \par - \par -on rounded; \par - \par - \par -cos(4); \par - \par - - 0.653643620864 \par - \par - \par - \par -cos log 5; \par - \par - - 0.0386319699339 \par - \par -\pard \sl240 }{\f2 }{\f3 cos} {\f2 returns a numeric value only if } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. Then the -cosine is calculated to the current degree of floating point precision. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COSH} - -${\footnote \pard\plain \sl240 \fs20 $ COSH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0883} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic cosine;COSH operator;operator} - -}{\b\f2 COSH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 cosh} {\f2 operator returns the hyperbolic cosine of its argument. -The derivative of }{\f3 cosh} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cosh} {\f4 () or }{\f3 cosh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -cosh b; \par - \par - COSH(B) \par - \par - \par - \par -cosh(0); \par - \par - 1 \par - \par - \par - \par -df(cosh(x*y),x); \par - \par - SINH(X*Y)*Y \par - \par - \par - \par -int(cosh(x),x); \par - \par - SINH(X) \par - \par -\pard \sl240 }{\f2 You may attach further functionality by defining its inverse (see -} -{\f2\uldb acosh}{\v\f2 ACOSH} -{\f2 ). -A numeric value is not returned by }{\f3 cosh} {\f2 unless the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on and its argument evaluates to a number. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COT} - -${\footnote \pard\plain \sl240 \fs20 $ COT} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0884} - - K{\footnote \pard\plain \sl240 \fs20 K COT operator;operator} - -}{\b\f2 COT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 cot} {\f2 represents the cotangent of its argument. It takes an arbitrary -scalar expression as its argument. The derivative of }{\f3 acot} {\f2 and some -simple properties are known to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cot} {\f4 () or }{\f3 cot} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -cot(a)*tan(a); \par - \par - COT(A)*TAN(A)) \par - \par - \par -cot(1); \par - \par - COT(1) \par - \par - \par -df(cot(2*x),x); \par - \par - 2 \par - - 2*(COT(2*X) + 1) \par - \par -\pard \sl240 }{\f2 Numerical values of expressions involving }{\f3 cot} {\f2 may be found by -turning on the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COTH} - -${\footnote \pard\plain \sl240 \fs20 $ COTH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0885} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic cotangent;COTH operator;operator} - -}{\b\f2 COTH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 coth} {\f2 operator returns the hyperbolic cotangent of its argument. -The derivative of }{\f3 coth} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 coth} {\f4 () or }{\f3 coth} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -df(coth(x*y),x); \par - \par - 2 \par - - Y*(COTH(X*Y) - 1) \par - \par - \par - \par -coth acoth z; \par - \par - Z \par - \par -\pard \sl240 }{\f2 You can write } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements and procedures to add further -functionality to }{\f3 coth} {\f2 if you wish. Numerical values of expressions -involving }{\f3 coth} {\f2 may also be found by turning on the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CSC} - -${\footnote \pard\plain \sl240 \fs20 $ CSC} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0886} - - K{\footnote \pard\plain \sl240 \fs20 K cosecant;CSC operator;operator} - -}{\b\f2 CSC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 csc} {\f2 operator returns the cosecant of its argument. -The derivative of }{\f3 csc} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 csc} {\f4 () or }{\f3 csc} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression. -must be a single identifier or begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -csc(q)*sin(q); \par - \par - CSC(Q)*SIN(Q) \par - \par - \par - \par -df(csc(x*y),x); \par - \par - -COT(X*Y)*CSC(X*Y)*Y \par - \par -\pard \sl240 }{\f2 You can write } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements and procedures to add further -functionality to }{\f3 csc} {\f2 if you wish. Numerical values of expressions -involving }{\f3 csc} {\f2 may also be found by turning on the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CSCH} - -${\footnote \pard\plain \sl240 \fs20 $ CSCH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0887} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic cosecan;CSCH operator;operator} - -}{\b\f2 CSCH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 cosh} {\f2 operator returns the hyperbolic cosecant of its argument. -The derivative of }{\f3 csch} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 csch} {\f4 () or }{\f3 csch} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -csch b; \par - \par - CSCH(B) \par - \par - \par - \par -csch(0); \par - \par - 0 \par - \par - \par - \par -df(csch(x*y),x); \par - \par - - COTH(X*Y)*CSCH(X*Y)*Y \par - \par - \par - \par -int(csch(x),x); \par - \par - INT(CSCH(X),X) \par - \par -\pard \sl240 }{\f2 A numeric value is not returned by }{\f3 csch} {\f2 unless the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on and its argument evaluates to a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ERF} - -${\footnote \pard\plain \sl240 \fs20 $ ERF} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0888} - - K{\footnote \pard\plain \sl240 \fs20 K error function;ERF operator;operator} - -}{\b\f2 ERF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 erf} {\f2 operator represents the error function, defined by -\par -\par -erf(x) = (2/sqrt(pi))*int(e^(-x^2),x) -\par -\par -A limited number of its properties are known to the system, including the -fact that it is an odd function. Its derivative is known, and from this, -some integrals may be computed. However, a complete integration procedure -for this operator is not currently included. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -erf(0); \par - \par - 0 \par - \par - \par -erf(-a); \par - \par - - ERF(A) \par - \par - \par -df(erf(x**2),x); \par - \par - 4*SQRT(PI)*X \par - ------------ \par - 4 \par - X \par - E *PI \par - \par - \par - \par -int(erf(x),x); \par - \par - 2 \par - X \par - E *ERF(X)*PI*X + SQRT(PI) \par - --------------------------- \par - 2 \par - X \par - E *PI \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXP} - -${\footnote \pard\plain \sl240 \fs20 $ EXP} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0889} - - K{\footnote \pard\plain \sl240 \fs20 K exponential function;EXP operator;operator} - -}{\b\f2 EXP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 exp} {\f2 operator returns }{\f3 e} {\f2 raised to the power of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 exp} {\f4 () or }{\f3 exp} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE scalar expression. - must be a single identifier or begin with a -prefix operator. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -exp(sin(x)); \par - \par - SIN X \par - E \par - \par - \par -exp(11); \par - \par - 11 \par - E \par - \par - \par -on rounded; \par - \par -exp sin(pi/3); \par - \par - 2.37744267524 \par - \par -\pard \sl240 }{\f2 Numeric values are returned only when }{\f3 rounded} {\f2 is on. -The single letter }{\f3 e} {\f2 with the exponential operator }{\f3 ^} {\f2 or -}{\f3 **} {\f2 may be substituted for }{\f3 exp} {\f2 without change of function. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SEC} - -${\footnote \pard\plain \sl240 \fs20 $ SEC} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0890} - - K{\footnote \pard\plain \sl240 \fs20 K SEC operator;operator} - -}{\b\f2 SEC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 sec} {\f2 operator returns the secant of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sec} {\f4 () or }{\f3 sec} {\f4 -\par -\par -}{\f2 \par - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - \par -sec abc; \par - \par - SEC(ABC) \par - \par - \par - \par -sec(pi); \par - \par - -1 \par - \par - \par - \par -sec 4; \par - \par - SEC(4) \par - \par - \par - \par -on rounded; \par - \par - \par -sec(4); \par - \par - - 1.52988565647 \par - \par - \par - \par -sec log 5; \par - \par - - 25.8852966005 \par - \par -\pard \sl240 }{\f2 }{\f3 sec} {\f2 returns a numeric value only if } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. Then the -secant is calculated to the current degree of floating point precision. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SECH} - -${\footnote \pard\plain \sl240 \fs20 $ SECH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0891} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic secant;SECH operator;operator} - -}{\b\f2 SECH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sech} {\f2 operator returns the hyperbolic secant of its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sech} {\f4 () or }{\f3 sech} {\f4 -\par -\par -}{\f2 \par - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sech abc; \par - \par - SECH(ABC) \par - \par - \par - \par -sech(0); \par - \par - 1 \par - \par - \par - \par -sech 4; \par - \par - SECH(4) \par - \par - \par - \par -on rounded; \par - \par - \par -sech(4); \par - \par - 0.0366189934737 \par - \par - \par - \par -sech log 5; \par - \par - 0.384615384615 \par - \par -\pard \sl240 }{\f2 }{\f3 sech} {\f2 returns a numeric value only if } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. Then the -expression is calculated to the current degree of floating point precision. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SIN} - -${\footnote \pard\plain \sl240 \fs20 $ SIN} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0892} - - K{\footnote \pard\plain \sl240 \fs20 K sine;SIN operator;operator} - -}{\b\f2 SIN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sin} {\f2 operator returns the sine of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 sin} {\f4 () or }{\f3 sin} {\f4 -\par -\par -}{\f2 \par - is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sin aa; \par - \par - SIN(AA) \par - \par - \par -sin(pi/2); \par - \par - 1 \par - \par - \par -on rounded; \par - \par -sin 3; \par - \par - 0.14112000806 \par - \par - \par -sin(pi/2); \par - \par - 1.0 \par - \par -\pard \sl240 }{\f2 }{\f3 sin} {\f2 returns a numeric value only if }{\f3 rounded} {\f2 is on. -Then the sine is calculated to the current degree of floating point precision. -The argument in this case is assumed to be in radians. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SINH} - -${\footnote \pard\plain \sl240 \fs20 $ SINH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0893} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic sine;SINH operator;operator} - -}{\b\f2 SINH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 sinh} {\f2 operator returns the hyperbolic sine of its argument. -The derivative of }{\f3 sinh} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sinh} {\f4 () or }{\f3 sinh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -sinh b; \par - \par - SINH(B) \par - \par - \par - \par -sinh(0); \par - \par - 0 \par - \par - \par -df(sinh(x**2),x); \par - \par - 2 \par - 2*COSH(X )*X \par - \par - \par -int(sinh(4*x),x); \par - \par - COSH(4*X) \par - --------- \par - 4 \par - \par - \par -on rounded; \par - \par -sinh 4; \par - \par - 27.2899171971 \par - \par -\pard \sl240 }{\f2 You may attach further functionality by defining its inverse (see -} -{\f2\uldb asinh}{\v\f2 ASINH} -{\f2 ). -A numeric value is not returned by }{\f3 sinh} {\f2 unless the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on and its argument evaluates to a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TAN} - -${\footnote \pard\plain \sl240 \fs20 $ TAN} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0894} - - K{\footnote \pard\plain \sl240 \fs20 K TAN operator;operator} - -}{\b\f2 TAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 tan} {\f2 operator returns the tangent of its argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 tan} {\f4 () or }{\f3 tan} {\f4 -\par -\par -\par -\par -}{\f2 is any valid scalar REDUCE expression, - is a single identifier or begins with a prefix -operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -tan a; \par - \par - TAN(A) \par - \par - \par -tan(pi/5); \par - \par - PI \par - TAN(--) \par - 5 \par - \par - \par -on rounded; \par -tan(pi/5); \par - \par - 0.726542528005 \par - \par -\pard \sl240 }{\f2 }{\f3 tan} {\f2 returns a numeric value only if }{\f3 rounded} {\f2 is on. Then the -tangent is calculated to the current degree of floating point accuracy. -\par -\par -When } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on, -no check is made to see if the argument of }{\f3 tan} {\f2 is a multiple of -}{\f4 pi/2}{\f2 , for which the tangent goes to positive or negative infinity. -(Of course, since REDUCE uses a fixed-point representation of }{\f4 pi/2}{\f2 , -it produces a large but not infinite number.) You need to make a check for -multiples of }{\f4 pi/2}{\f2 in any program you use that might possibly ask -for the tangent of such a quantity. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TANH} - -${\footnote \pard\plain \sl240 \fs20 $ TANH} - -+{\footnote \pard\plain \sl240 \fs20 + g11:0895} - - K{\footnote \pard\plain \sl240 \fs20 K hyperbolic tangent;TANH operator;operator} - -}{\b\f2 TANH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 tanh} {\f2 operator returns the hyperbolic tangent of its argument. -The derivative of }{\f3 tanh} {\f2 and some simple transformations are known -to the system. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 tanh} {\f4 () or }{\f3 tanh} {\f4 -\par -\par -}{\f2 \par - may be any scalar REDUCE expression, not an array, matrix or -vector expression. must be a single identifier or -begin with a prefix operator name. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -tanh b; \par - \par - TANH(B) \par - \par - \par -tanh(0); \par - \par - 0 \par - \par - \par -df(tanh(x*y),x); \par - \par - 2 \par - Y*( - TANH(X*Y) + 1) \par - \par - \par -int(tanh(x),x); \par - \par - 2*X \par - LOG(E + 1) - X \par - \par - \par -on rounded; tanh 2; \par - \par - 0.964027580076 \par - \par -\pard \sl240 }{\f2 You may attach further functionality by defining its inverse (see -} -{\f2\uldb atanh}{\v\f2 ATANH} -{\f2 ). -A numeric value is not returned by }{\f3 tanh} {\f2 unless the switch -} -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on and its argument evaluates to a number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g11} - -${\footnote \pard\plain \sl240 \fs20 $ Elementary Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0011} -}{\b\f2 Elementary Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ACOS operator} -{\v\f2 ACOS}{\f2 \par -}{\f2 \tab}{\f2\uldb ACOSH operator} -{\v\f2 ACOSH}{\f2 \par -}{\f2 \tab}{\f2\uldb ACOT operator} -{\v\f2 ACOT}{\f2 \par -}{\f2 \tab}{\f2\uldb ACOTH operator} -{\v\f2 ACOTH}{\f2 \par -}{\f2 \tab}{\f2\uldb ACSC operator} -{\v\f2 ACSC}{\f2 \par -}{\f2 \tab}{\f2\uldb ACSCH operator} -{\v\f2 ACSCH}{\f2 \par -}{\f2 \tab}{\f2\uldb ASEC operator} -{\v\f2 ASEC}{\f2 \par -}{\f2 \tab}{\f2\uldb ASECH operator} -{\v\f2 ASECH}{\f2 \par -}{\f2 \tab}{\f2\uldb ASIN operator} -{\v\f2 ASIN}{\f2 \par -}{\f2 \tab}{\f2\uldb ASINH operator} -{\v\f2 ASINH}{\f2 \par -}{\f2 \tab}{\f2\uldb ATAN operator} -{\v\f2 ATAN}{\f2 \par -}{\f2 \tab}{\f2\uldb ATANH operator} -{\v\f2 ATANH}{\f2 \par -}{\f2 \tab}{\f2\uldb ATAN2 operator} -{\v\f2 ATAN2}{\f2 \par -}{\f2 \tab}{\f2\uldb COS operator} -{\v\f2 COS}{\f2 \par -}{\f2 \tab}{\f2\uldb COSH operator} -{\v\f2 COSH}{\f2 \par -}{\f2 \tab}{\f2\uldb COT operator} -{\v\f2 COT}{\f2 \par -}{\f2 \tab}{\f2\uldb COTH operator} -{\v\f2 COTH}{\f2 \par -}{\f2 \tab}{\f2\uldb CSC operator} -{\v\f2 CSC}{\f2 \par -}{\f2 \tab}{\f2\uldb CSCH operator} -{\v\f2 CSCH}{\f2 \par -}{\f2 \tab}{\f2\uldb ERF operator} -{\v\f2 ERF}{\f2 \par -}{\f2 \tab}{\f2\uldb EXP operator} -{\v\f2 EXP}{\f2 \par -}{\f2 \tab}{\f2\uldb SEC operator} -{\v\f2 SEC}{\f2 \par -}{\f2 \tab}{\f2\uldb SECH operator} -{\v\f2 SECH}{\f2 \par -}{\f2 \tab}{\f2\uldb SIN operator} -{\v\f2 SIN}{\f2 \par -}{\f2 \tab}{\f2\uldb SINH operator} -{\v\f2 SINH}{\f2 \par -}{\f2 \tab}{\f2\uldb TAN operator} -{\v\f2 TAN}{\f2 \par -}{\f2 \tab}{\f2\uldb TANH operator} -{\v\f2 TANH}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SWITCHES} - -${\footnote \pard\plain \sl240 \fs20 $ SWITCHES} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0896} - - K{\footnote \pard\plain \sl240 \fs20 K SWITCHES introduction;introduction} - -}{\b\f2 SWITCHES}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -Switches are set on or off using the commands } -{\f2\uldb on}{\v\f2 ON} -{\f2 or -} -{\f2\uldb off}{\v\f2 OFF} -{\f2 , respectively. -The default setting of the switches described in this section is -} -{\f2\uldb off}{\v\f2 OFF} -{\f2 unless stated otherwise. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ALGINT} - -${\footnote \pard\plain \sl240 \fs20 $ ALGINT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0897} - - K{\footnote \pard\plain \sl240 \fs20 K integration;ALGINT switch;switch} - -}{\b\f2 ALGINT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 algint} {\f2 switch is on, the algebraic integration module (which -must be loaded from the REDUCE library) is used for integration. -\par -\par -Loading }{\f3 algint} {\f2 from the library automatically turns on the -}{\f3 algint} {\f2 switch. An error message will be given if }{\f3 algint} {\f2 is -turned on when the }{\f3 algint} {\f2 has not been loaded from the library. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ALLBRANCH} - -${\footnote \pard\plain \sl240 \fs20 $ ALLBRANCH} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0898} - - K{\footnote \pard\plain \sl240 \fs20 K ALLBRANCH switch;switch} - -}{\b\f2 ALLBRANCH}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -When }{\f3 allbranch} {\f2 is on, the operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 selects all -branches of solutions. -When }{\f3 allbranch} {\f2 is off, it selects only the principal -branches. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -solve(log(sin(x+3)),x); \par - \par - \{X=2*ARBINT(1)*PI - ASIN(1) - 3, \par - X=2*ARBINT(1)*PI + ASIN(1) + PI - 3\} \par - \par - \par -off allbranch; \par - \par -solve(log(sin(x+3)),x); \par - \par - X=ASIN(1) - 3 \par - \par -\pard \sl240 }{\f2 } -{\f2\uldb arbint}{\v\f2 ARBINT} -{\f2 (1) indicates an arbitrary integer, which is given a -unique identifier by REDUCE, showing that there are infinitely many -solutions of this type. When }{\f3 allbranch} {\f2 is off, the single -canonical solution is given. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ALLFAC} - -${\footnote \pard\plain \sl240 \fs20 $ ALLFAC} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0899} - - K{\footnote \pard\plain \sl240 \fs20 K output;ALLFAC switch;switch} - -}{\b\f2 ALLFAC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The }{\f3 allfac} {\f2 switch, when on, causes REDUCE to factor out automatically -common products in the output of expressions. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x + x*y**3 + x**2*cos(z); \par - \par - 3 \par - X*(COS(Z)*X + Y + 1) \par - \par - \par -off allfac; \par - \par -x + x*y**3 + x**2*cos(z); \par - \par - 2 3 \par - COS(Z)*X + X*Y + X \par - \par -\pard \sl240 }{\f2 The }{\f3 allfac} {\f2 switch has no effect when }{\f3 pri} {\f2 is off. Although the -switch setting stays as it was, printing behavior is as if it were off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARBVARS} - -${\footnote \pard\plain \sl240 \fs20 $ ARBVARS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0900} - - K{\footnote \pard\plain \sl240 \fs20 K solve;ARBVARS switch;switch} - -}{\b\f2 ARBVARS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 arbvars} {\f2 is on, the solutions of singular or underdetermined -systems of equations are presented in terms of arbitrary complex variables -(see } -{\f2\uldb arbcomplex}{\v\f2 ARBCOMPLEX} -{\f2 ). Otherwise, the solution is parametrized in -terms of some of the input variables. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{2x + y,4x + 2y\},\{x,y\}); \par - \par - arbcomplex(1) \par - \{\{x= - -------------,y=arbcomplex(1)\}\} \par - 2 \par - \par - \par -solve(\{sqrt(x)+ y**3-1\},\{x,y\}); \par - \par - \par - 6 3 \par - \{\{y=arbcomplex(2),x=y - 2*y + 1\}\} \par - \par - \par -off arbvars; \par - \par -solve(\{2x + y,4x + 2y\},\{x,y\}); \par - \par - y \par - \{\{x= - -\}\} \par - 2 \par - \par - \par -solve(\{sqrt(x)+ y**3-1\},\{x,y\}); \par - \par - \par - 6 3 \par - \{\{x=y - 2*y + 1\}\} \par - \par -\pard \sl240 }{\f2 With }{\f3 arbvars} {\f2 off, the return value }{\f3 \{\{\}\}} {\f2 means that the -equations given to } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 imply no relation among the input -variables. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BALANCED\_MOD} - -${\footnote \pard\plain \sl240 \fs20 $ BALANCED_MOD} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0901} - - K{\footnote \pard\plain \sl240 \fs20 K modular;BALANCED_MOD switch;switch} - -}{\b\f2 BALANCED\_MOD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -} -{\f2\uldb modular}{\v\f2 MODULAR} -{\f2 numbers are normally produced in the range [0,...), -where - is the current modulus. With }{\f3 balanced_mod} {\f2 on, the range -[-/2,/2] is used instead. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -setmod 7; \par - \par - 1 \par - \par - \par -on modular; \par - \par -4; \par - \par - 4 \par - \par - \par -on balanced_mod; \par - \par -4; \par - \par - -3 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BFSPACE} - -${\footnote \pard\plain \sl240 \fs20 $ BFSPACE} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0902} - - K{\footnote \pard\plain \sl240 \fs20 K floating point;output;BFSPACE switch;switch} - -}{\b\f2 BFSPACE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Floating point numbers are normally printed in a compact notation (either -fixed point or in scientific notation if } -{\f2\uldb SCIENTIFIC_NOTATION}{\v\f2 SCIENTIFIC\_NOTATION} -{\f2 -has been used). In some (but not all) cases, it helps comprehensibility -if spaces are inserted in the number at regular intervals. The switch -}{\f3 bfspace} {\f2 , if on, will cause a blank to be inserted in the number after -every five characters. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -1.2345678; \par - \par - 1.2345678 \par - \par - \par -on bfspace; \par - \par -1.2345678; \par - \par - 1.234 5678 \par - \par -\pard \sl240 }{\f2 \par -\par -}{\f3 bfspace} {\f2 is normally off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMBINEEXPT} - -${\footnote \pard\plain \sl240 \fs20 $ COMBINEEXPT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0903} - - K{\footnote \pard\plain \sl240 \fs20 K exponent simplification;COMBINEEXPT switch;switch} - -}{\b\f2 COMBINEEXPT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -REDUCE is in general poor at surd simplification. However, when the -switch }{\f3 combineexpt} {\f2 is on, the system attempts to combine -exponentials whenever possible. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -3^(1/2)*3^(1/3)*3^(1/6); \par - \par - 1/3 1/6 \par - SQRT(3)*3 *3 \par - \par - \par -on combineexpt; \par - \par -ws; \par - \par - 1 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMBINELOGS} - -${\footnote \pard\plain \sl240 \fs20 $ COMBINELOGS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0904} - - K{\footnote \pard\plain \sl240 \fs20 K logarithm;COMBINELOGS switch;switch} - -}{\b\f2 COMBINELOGS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches } -{\f2\uldb expandlogs}{\v\f2 EXPANDLOGS} -{\f2 and -}{\f3 combinelogs} {\f2 to carry out these operations. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on expandlogs; \par - \par -log(x*y); \par - \par - LOG(X) + LOG(Y) \par - \par - \par -on combinelogs; \par - \par -ws; \par - \par - LOG(X*Y) \par - \par -\pard \sl240 }{\f2 \par -\par -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMP} - -${\footnote \pard\plain \sl240 \fs20 $ COMP} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0905} - - K{\footnote \pard\plain \sl240 \fs20 K compiler;COMP switch;switch} - -}{\b\f2 COMP}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 comp} {\f2 is on, any succeeding function definitions are compiled -into a faster-running form. Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 The following procedure finds Fibonacci numbers recursively. -Create a new file ``refib" in your current directory with the following -lines in it:}{\f4 \pard \tx3420 \par - \par -procedure refib(n); \par - if fixp n and n >= 0 then \par - if n <= 1 then 1 \par - else refib(n-1) + refib(n-2) \par - else rederr "nonnegative integer only"; \par - \par -end; \par -\pard \sl240 \par -\pard \sl240 }{\f2 Now load REDUCE and run the following:}{\f4 \pard \tx3420 \par - \par -on time; \par - \par - Time: 100 ms \par - \par - \par - \par -in "refib"$ \par - \par - Time: 0 ms \par - \par - \par - \par - \par - \par - REFIB \par - \par - \par - \par - \par - \par - Time: 260 ms \par - \par - \par - \par - \par - \par - Time: 20 ms \par - \par - \par - \par -refib(80); \par - \par - 37889062373143906 \par - \par - \par - \par - \par - \par - Time: 14840 ms \par - \par - \par - \par -on comp; \par - \par - Time: 80 ms \par - \par - \par - \par -in "refib"$ \par - \par - Time: 20 ms \par - \par - \par - \par - \par - \par - REFIB \par - \par - \par - \par - \par - \par - Time: 640 ms \par - \par - \par - \par -refib(80); \par - \par - 37889062373143906 \par - \par - \par - \par - \par - \par - Time: 10940 ms \par - \par -\pard \sl240 }{\f2 -\par -\par -Note that the compiled procedure runs faster. Your time messages will -differ depending upon which system you have. Compiled functions remain so -for the duration of the REDUCE session, and are then lost. They must be -recompiled if wanted in another session. With the switch } -{\f2\uldb time}{\v\f2 TIME} -{\f2 on -as shown above, the CPU time used in executing the command is returned in -milliseconds. Be careful not to leave }{\f3 comp} {\f2 on unless you want it, -as it makes the processing of procedures much slower. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMPLEX} - -${\footnote \pard\plain \sl240 \fs20 $ COMPLEX} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0906} - - K{\footnote \pard\plain \sl240 \fs20 K complex;COMPLEX switch;switch} - -}{\b\f2 COMPLEX}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 complex} {\f2 switch is on, full complex arithmetic is used in -simplification, function evaluation, and factorization. Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -factorize(a**2 + b**2); \par - \par - 2 2 \par - \{A + B \} \par - \par - \par -on complex; \par - \par - \par -factorize(a**2 + b**2); \par - \par - \{A - I*B,A + I*B\} \par - \par - \par - \par -(x**2 + y**2)/(x + i*y); \par - \par - X - I*Y \par - \par - \par - \par -on rounded; \par - \par - *** Domain mode COMPLEX changed to COMPLEX_FLOAT \par - \par - \par - \par -sqrt(-17); \par - \par - 4.12310562562*I \par - \par - \par - \par -log(7*i); \par - \par - 1.94591014906 + 1.57079632679*I \par - \par -\pard \sl240 }{\f2 Complex floating-point can be done by turning on } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 in -addition to }{\f3 complex} {\f2 . With }{\f3 complex} {\f2 off however, REDUCE knows -that i is the square root of -1 but will not -carry out more complicated complex operations. If you want complex -denominators cleared by multiplication by their conjugates, turn on the -switch } -{\f2\uldb rationalize}{\v\f2 RATIONALIZE} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CREF} - -${\footnote \pard\plain \sl240 \fs20 $ CREF} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0907} - - K{\footnote \pard\plain \sl240 \fs20 K cross reference;CREF switch;switch} - -}{\b\f2 CREF}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The switch }{\f3 cref} {\f2 invokes the CREF cross-reference program that -processes a set of procedure definitions to produce a summary of their -entry points, undefined procedures, non-local variables and so on. The -program will also check that procedures are called with a consistent -number of arguments, and print a diagnostic message otherwise. -\par -\par -The output is alphabetized on the first seven characters of each function -name. -\par -\par -To invoke the cross-reference program, }{\f3 cref} {\f2 is first turned on. -This causes the program to load and the cross-referencing process to -begin. After all the required definitions are loaded, turning }{\f3 cref} {\f2 -off will cause a cross-reference listing to be produced. -\par -\par -Algebraic procedures in REDUCE are treated as if they were symbolic, so -that algebraic constructs will actually appear as calls to symbolic -functions, such as }{\f3 aeval} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CRAMER} - -${\footnote \pard\plain \sl240 \fs20 $ CRAMER} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0908} - - K{\footnote \pard\plain \sl240 \fs20 K solve;linear system;matrix;CRAMER switch;switch} - -}{\b\f2 CRAMER}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 cramer} {\f2 switch is on, } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 inversion -and linear equation -solving (operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 ) is done by Cramer's rule, through exterior -multiplication. Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on time; \par - \par - Time: 80 ms \par - \par - \par -off output; \par - \par - Time: 100 ms \par - \par - \par -mm := mat((a,b,c,d,f),(a,a,c,f,b),(b,c,a,c,d), (c,c,a,b,f), \par - (d,a,d,e,f)); \par -\pard \sl240 \par - \par - Time: 300 ms \par - \par - \par -inverse := 1/mm; \par - \par - Time: 18460 ms \par - \par - \par -on cramer; \par - \par - Time: 80 ms \par - \par - \par -cramersinv := 1/mm; \par - \par - Time: 9260 ms \par - \par -\pard \sl240 }{\f2 Your time readings will vary depending on the REDUCE version you use. -After you invert the matrix, turn on } -{\f2\uldb output}{\v\f2 OUTPUT} -{\f2 and ask for one of -the elements of the inverse matrix, such as }{\f3 cramersinv(3,2)} {\f2 , so that -you can see the size of the expressions produced. -\par -\par -Inversion of matrices and the solution of linear equations with dense -symbolic entries in many variables is generally considerably faster with -}{\f3 cramer} {\f2 on. However, inversion of numeric-valued matrices is -slower. Consider the matrices you're inverting before deciding whether to -turn }{\f3 cramer} {\f2 on or off. A substantial portion of the time in matrix -inversion is given to formatting the results for printing. To save this -time, turn }{\f3 output} {\f2 off, as shown in this example or terminate the -expression with a dollar sign instead of a semicolon. The results are -still available to you in the workspace associated with your prompt -number, or you can assign them to an identifier for further use. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEFN} - -${\footnote \pard\plain \sl240 \fs20 $ DEFN} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0909} - - K{\footnote \pard\plain \sl240 \fs20 K lisp;DEFN switch;switch} - -}{\b\f2 DEFN}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the switch }{\f3 defn} {\f2 is on, the Standard Lisp equivalent of the -input statement or procedure is printed, but not evaluated. Default is -}{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on defn; \par - \par - \par -17/3; \par - \par - (AEVAL (LIST 'QUOTIENT 17 3)) \par - \par - \par - \par -df(sin(x),x,2); \par - \par - \par - (AEVAL (LIST 'DF (LIST 'SIN 'X) 'X 2)) \par - \par - \par -procedure coshval(a); \par - begin scalar g; \par - g := (exp(a) + exp(-a))/2; \par - return g \par - end; \par -\pard \sl240 \par - \par - (AEVAL \par - (PROGN \par - (FLAG '(COSHVAL) 'OPFN) \par - (DE COSHVAL (A) \par - (PROG (G) \par - (SETQ G \par - (AEVAL \par - (LIST \par - 'QUOTIENT \par - (LIST \par - 'PLUS \par - (LIST 'EXP A) \par - (LIST 'EXP (LIST 'MINUS A))) \par - 2))) \par - (RETURN G)))) ) \par - \par - \par - \par -coshval(1); \par - \par - (AEVAL (LIST 'COSHVAL 1)) \par - \par - \par - \par -off defn; \par - \par - \par -coshval(1); \par - \par - Declare COSHVAL operator? (Y or N) \par - \par - \par - \par -n \par - \par -procedure coshval(a); \par - begin scalar g; \par - g := (exp(a) + exp(-a))/2; \par - return g \par - end; \par -\pard \sl240 \par - \par - COSHVAL \par - \par - \par - \par -on rounded; \par - \par - \par -coshval(1); \par - \par - 1.54308063482 \par - \par -\pard \sl240 }{\f2 The above function }{\f3 coshval} {\f2 finds the hyperbolic cosine (cosh) of its -argument. When }{\f3 defn} {\f2 is on, you can see the Standard Lisp equivalent -of the function, but it is not entered into the system as shown by the -message }{\f3 Declare COSHVAL operator?} {\f2 . It must be reentered with -}{\f3 defn} {\f2 off to be recognized. This procedure is used as an example; a -more efficient procedure would eliminate the unnecessary local variable -with -\pard \tx3420 }{\f4 \par - procedure coshval(a); \par - (exp(a) + exp(-a))/2; \par -\pard \sl240 }{\f2 \par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEMO} - -${\footnote \pard\plain \sl240 \fs20 $ DEMO} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0910} - - K{\footnote \pard\plain \sl240 \fs20 K output;interactive;DEMO switch;switch} - -}{\b\f2 DEMO}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The }{\f3 demo} {\f2 switch is used for interactive files, causing the system -to pause after each command in the file until you type a }{\f3 Return} {\f2 . -Default is }{\f3 off} {\f2 . -\par -\par -The switch }{\f3 demo} {\f2 has no effect on top level interactive -statements. Use it when you want to slow down operations in a file so -you can see what is happening. -\par -\par -You can either include the }{\f3 on demo} {\f2 command in the file, or enter -it from the top level before bringing in any file. Unlike the -} -{\f2\uldb pause}{\v\f2 PAUSE} -{\f2 command, }{\f3 on demo} {\f2 does not permit you to interrupt -the file for questions of your own. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DFPRINT} - -${\footnote \pard\plain \sl240 \fs20 $ DFPRINT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0911} - - K{\footnote \pard\plain \sl240 \fs20 K derivative;output;DFPRINT switch;switch} - -}{\b\f2 DFPRINT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 dfprint} {\f2 is on, expressions in the differentiation operator -} -{\f2\uldb df}{\v\f2 DF} -{\f2 are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. In addition, if the -switch } -{\f2\uldb noarg}{\v\f2 NOARG} -{\f2 is on (the default), the arguments of the -differentiated operator are suppressed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -df(f x,x); \par - \par - DF(F(X),X); \par - \par - \par -on dfprint; \par - \par -ws; \par - \par - F \par - X \par - \par - \par -df(f(x,y),x,y); \par - \par - F \par - Y \par - \par - \par -off noarg; \par - \par -ws; \par - \par - F(X,Y) \par - X \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DIV} - -${\footnote \pard\plain \sl240 \fs20 $ DIV} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0912} - - K{\footnote \pard\plain \sl240 \fs20 K output;DIV switch;switch} - -}{\b\f2 DIV}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 div} {\f2 is on, the system divides any simple factors found in -the denominator of an expression into the numerator. Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on div; \par - \par - \par -a := x**2/y**2; \par - \par - 2 -2 \par - A := X *Y \par - \par - \par - \par -b := a/(3*z); \par - \par - 1 2 -2 -1 \par - B := -*X *Y *Z \par - 3 \par - \par - \par - \par -off div; \par - \par - \par -a; \par - \par - 2 \par - X \par - --- \par - 2 \par - Y \par - \par - \par - \par -b; \par - \par - 2 \par - X \par - ------- \par - 2 \par - 3*Y *Z \par - \par -\pard \sl240 }{\f2 The }{\f3 div} {\f2 switch only has effect when the } -{\f2\uldb pri}{\v\f2 PRI} -{\f2 switch is on. -When }{\f3 pri} {\f2 is off, regardless of the setting of }{\f3 div} {\f2 , the -printing behavior is as if }{\f3 div} {\f2 were off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ECHO} - -${\footnote \pard\plain \sl240 \fs20 $ ECHO} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0913} - - K{\footnote \pard\plain \sl240 \fs20 K output;ECHO switch;switch} - -}{\b\f2 ECHO}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The }{\f3 echo} {\f2 switch is normally off for top-level entry, and on when files -are brought in. If }{\f3 echo} {\f2 is turned on at the top level, your input -statements are echoed to the screen (thus appearing twice). Default -}{\f3 off} {\f2 (but note default }{\f3 on} {\f2 for files). -\par -\par -If you want to display certain portions of a file and not others, use the -commands }{\f3 off echo} {\f2 and }{\f3 on echo} {\f2 inside the file. If you want -no display of the file, use the input command -\par -\par - }{\f3 in} {\f2 filename}{\f3 $} {\f2 -\par -\par -rather than using the semicolon delimiter. -\par -\par -Be careful when you use commands within a file to generate another file. -Since }{\f3 echo} {\f2 is on for files, the output file echoes input statements -(unlike its behavior from the top level). You should explicitly turn off -}{\f3 echo} {\f2 when writing output, and turn it back on when you're done. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ERRCONT} - -${\footnote \pard\plain \sl240 \fs20 $ ERRCONT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0914} - - K{\footnote \pard\plain \sl240 \fs20 K error handling;ERRCONT switch;switch} - -}{\b\f2 ERRCONT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 errcont} {\f2 switch is on, error conditions do not stop file -execution. Error messages will be printed whether }{\f3 errcont} {\f2 is on or -off. -\par -\par -Default is }{\f3 off} {\f2 . -\par -\par -The following describes what happens when an error occurs in a file under -each setting of }{\f3 errcont} {\f2 and }{\f3 int} {\f2 : -\par -\par -Both off: Message is printed and parsing continues, but no further -statements are executed; no commands from keyboard accepted except bye or -end; -\par -\par -}{\f3 errcont} {\f2 off, }{\f3 int} {\f2 on: Message is printed, and you are asked -if you wish to continue. (This is the default behavior); -\par -\par -}{\f3 errcont} {\f2 on, }{\f3 int} {\f2 off: Message is printed, and file continues -to execute without pause; -\par -\par -Both on: Message is printed, and file continues to execute without pause. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EVALLHSEQP} - -${\footnote \pard\plain \sl240 \fs20 $ EVALLHSEQP} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0915} - - K{\footnote \pard\plain \sl240 \fs20 K equation;EVALLHSEQP switch;switch} - -}{\b\f2 EVALLHSEQP}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Under normal circumstances, the right-hand-side of an } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 -is evaluated but not the left-hand-side. This also applies to any -substitutions made by the } -{\f2\uldb sub}{\v\f2 SUB} -{\f2 operator. If both sides are to be -evaluated, the switch }{\f3 evallhseqp} {\f2 should be turned on. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXP_switch} - -${\footnote \pard\plain \sl240 \fs20 $ EXP_switch} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0916} - - K{\footnote \pard\plain \sl240 \fs20 K simplification;EXP switch;switch} - -}{\b\f2 EXP}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 exp} {\f2 switch is on, powers and products of expressions are -expanded. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x+1)**3; \par - \par - 3 2 \par - X + 3*X + 3*X + 1 \par - \par - \par -(a + b*i)*(c + d*i); \par - \par - A*C + A*D*I + B*C*I - B*D \par - \par - \par -off exp; \par - \par -(x+1)**3; \par - \par - 3 \par - (X + 1) \par - \par - \par -(a + b*i)*(c + d*i); \par - \par - (A + B*I)*(C + D*I) \par - \par - \par -length((x+1)**2/(y+1)); \par - \par - 2 \par - \par -\pard \sl240 }{\f2 Note that REDUCE knows that i^2 = -1. -When }{\f3 exp} {\f2 is off, equivalent expressions may not simplify to the same -form, although zero expressions still simplify to zero. Several operators -that expect a polynomial argument behave differently when }{\f3 exp} {\f2 is -off, such as } -{\f2\uldb length}{\v\f2 LENGTH} -{\f2 . Be cautious about leaving }{\f3 exp} {\f2 off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXPANDLOGS} - -${\footnote \pard\plain \sl240 \fs20 $ EXPANDLOGS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0917} - - K{\footnote \pard\plain \sl240 \fs20 K logarithm;EXPANDLOGS switch;switch} - -}{\b\f2 EXPANDLOGS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches }{\f3 expandlogs} {\f2 and -} -{\f2\uldb combinelogs}{\v\f2 COMBINELOGS} -{\f2 to carry out these operations. Both are off by default. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on expandlogs; \par - \par -log(x*y); \par - \par - LOG(X) + LOG(Y) \par - \par - \par -on combinelogs; \par - \par -ws; \par - \par - LOG(X*Y) \par - \par -\pard \sl240 }{\f2 \par -\par -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EZGCD} - -${\footnote \pard\plain \sl240 \fs20 $ EZGCD} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0918} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;greatest common divisor;EZGCD switch;switch} - -}{\b\f2 EZGCD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 ezgcd} {\f2 and } -{\f2\uldb gcd}{\v\f2 GCD} -{\f2 are on, greatest common divisors are -computed using the EZ GCD algorithm that uses modular arithmetic (and is -usually faster). Default is }{\f3 off} {\f2 . -\par -\par -As a side effect of the gcd calculation, the expressions involved are -factored, though not the heavy-duty factoring of } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 . The -EZ GCD algorithm was introduced in a paper by J. Moses and D.Y.Y. Yun in -, 1973, pp. 159-166. -\par -\par -Note that the } -{\f2\uldb gcd}{\v\f2 GCD} -{\f2 switch must also be on for }{\f3 ezgcd} {\f2 to have -effect. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FACTOR} - -${\footnote \pard\plain \sl240 \fs20 $ FACTOR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0919} - - K{\footnote \pard\plain \sl240 \fs20 K output;FACTOR switch;switch} - -}{\b\f2 FACTOR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 factor} {\f2 switch is on, input expressions and results are -automatically factored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on factor; \par - \par - \par -aa := 3*x**3*a + 6*x**2*y*a + 3*x**3*b + 6*x**2*y*b \par - \par -+ x*y*a + 2*y**2*a + x*y*b + 2*y**2*b; \par - \par - \par - \par - 2 \par - AA := (A + B)*(3*X + Y)*(X + 2*Y) \par - \par - \par -off factor; \par - \par -aa; \par - \par - 3 2 2 3 2 \par - 3*A*X + 6*A*X *Y + A*X*Y + 2*A*Y + 3*B*X + 6*B*X *Y \par - \par - \par -+ B*X*Y + 2*B*Y^\{2\} \par - \par -on factor; \par - \par -ab := x**2 - 2; \par - \par - 2 \par - AB := X - 2 \par - \par -\pard \sl240 }{\f2 REDUCE factors univariate and multivariate polynomials with -integer coefficients, finding any factors that also have integer coefficients. -The factoring is done by reducing multivariate problems to univariate -ones with symbolic coefficients, and then solving the univariate ones modulo -small primes. The results of these calculations are merged to -determine the factors of the original polynomial. The factorizer normally -selects evaluation points and primes using a random number generator. -Thus, the detailed factoring behavior may be different each time any -particular problem is tackled. -\par -\par -When the }{\f3 factor} {\f2 switch is turned on, the } -{\f2\uldb exp}{\v\f2 EXP} -{\f2 switch is -turned off, and when the }{\f3 factor} {\f2 switch is turned off, the -} -{\f2\uldb exp}{\v\f2 EXP} -{\f2 switch is turned on, whether it was on previously or not. -\par -\par -When the switch } -{\f2\uldb trfac}{\v\f2 TRFAC} -{\f2 is on, informative messages are generated at -each call to the factorizer. The } -{\f2\uldb trallfac}{\v\f2 TRALLFAC} -{\f2 switch causes the -production of a more verbose trace message. It takes precedence over -}{\f3 trfac} {\f2 if they are both on. -\par -\par -To factor a polynomial explicitly and store the results, use the operator -} -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FAILHARD} - -${\footnote \pard\plain \sl240 \fs20 $ FAILHARD} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0920} - - K{\footnote \pard\plain \sl240 \fs20 K integration;FAILHARD switch;switch} - -}{\b\f2 FAILHARD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 failhard} {\f2 switch is on, the integration operator } -{\f2\uldb int}{\v\f2 INT} -{\f2 -terminates with an error message if the integral cannot be done in closed -terms. -Default is off. -\par -\par -Use the }{\f3 failhard} {\f2 switch when you are dealing with complicated integrals -and want to know immediately if REDUCE was unable to handle them. The -integration operator sometimes returns a formal integration form that is -more complicated than the original expression, when it is unable to -complete the integration. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FORT} - -${\footnote \pard\plain \sl240 \fs20 $ FORT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0921} - - K{\footnote \pard\plain \sl240 \fs20 K FORTRAN;FORT switch;switch} - -}{\b\f2 FORT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 fort} {\f2 is on, output is given Fortran-compatible syntax. Default -is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on fort; \par - \par -df(sin(7*x + y),x); \par - \par - ANS=7.*COS(7*X+Y) \par - \par - \par -on rounded; \par - \par -b := log(sin(pi/5 + n*pi)); \par - \par - B=LOG(SIN(3.14159265359*N+0.628318530718)) \par - \par -\pard \sl240 }{\f2 REDUCE results can be written to a file (using } -{\f2\uldb out}{\v\f2 OUT} -{\f2 ) and used as data -by Fortran programs when }{\f3 fort} {\f2 is in effect. }{\f3 fort} {\f2 knows about -correct statement length, continuation characters, defining a symbol when -it is first used, and other Fortran details. -\par -\par -The } -{\f2\uldb GENTRAN}{\v\f2 GENTRAN} -{\f2 package offers many more possibilities than the -}{\f3 fort} {\f2 switch. It produces Fortran (or C or Ratfor) code from REDUCE -procedures or structured specifications, including facilities for producing -double precision output. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FORTUPPER} - -${\footnote \pard\plain \sl240 \fs20 $ FORTUPPER} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0922} - - K{\footnote \pard\plain \sl240 \fs20 K FORTRAN;FORTUPPER switch;switch} - -}{\b\f2 FORTUPPER}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 fortupper} {\f2 is on, any Fortran-style output appears in upper case. -Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on fort; \par - \par -df(sin(7*x + y),x); \par - \par - ans=7.*cos(7*x+y) \par - \par - \par -on fortupper; \par - \par -df(sin(7*x + y),x); \par - \par - ANS=7.*COS(7*X+Y) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FULLPREC} - -${\footnote \pard\plain \sl240 \fs20 $ FULLPREC} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0923} - - K{\footnote \pard\plain \sl240 \fs20 K rounded;precision;FULLPREC switch;switch} - -}{\b\f2 FULLPREC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Trailing zeroes of rounded numbers to the full system precision are -normally not printed. If this information is needed, for example to get a -more understandable indication of the accuracy of certain data, the switch -}{\f3 fullprec} {\f2 can be turned on. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -1/2; \par - \par - 0.5 \par - \par - \par -on fullprec; \par - \par -ws; \par - \par - 0.500000000000 \par - \par -\pard \sl240 }{\f2 This is just an output options which neither influences -the accuracy of the computation nor does it give additional -information about the precision of the results. -See also } -{\f2\uldb scientific_notation}{\v\f2 SCIENTIFIC\_NOTATION} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FULLROOTS} - -${\footnote \pard\plain \sl240 \fs20 $ FULLROOTS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0924} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;FULLROOTS switch;switch} - -}{\b\f2 FULLROOTS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Since roots of cubic and quartic polynomials can often be very -messy, a switch }{\f3 fullroots} {\f2 controls the production -of results in closed form. } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 will apply the -formulas for explicit forms for degrees 3 and 4 only if -}{\f3 fullroots} {\f2 is }{\f3 on} {\f2 . Otherwise the result forms -are built using } -{\f2\uldb root_of}{\v\f2 ROOT\_OF} -{\f2 . Default is }{\f3 off} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GC} - -${\footnote \pard\plain \sl240 \fs20 $ GC} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0925} - - K{\footnote \pard\plain \sl240 \fs20 K memory;GC switch;switch} - -}{\b\f2 GC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -With the }{\f3 gc} {\f2 switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. -\par -\par -See } -{\f2\uldb reclaim}{\v\f2 RECLAIM} -{\f2 for an explanation of garbage collection. REDUCE does -garbage collection when needed even if you have turned the notices off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GCD_switch} - -${\footnote \pard\plain \sl240 \fs20 $ GCD_switch} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0926} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;greatest common divisor;GCD switch;switch} - -}{\b\f2 GCD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 gcd} {\f2 is on, common factors in numerators and denominators of -expressions are canceled. Default is }{\f3 off} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -(2*(f*h)**2 - f**2*g*h - (f*g)**2 - f*h**3 + f*h*g**2 \par - - h**4 + g*h**3)/(f**2*h - f**2*g - f*h**2 + 2*f*g*h \par - - f*g**2 - g*h**2 + g**2*h); \par -\pard \sl240 \par - \par - 2 2 2 2 2 2 3 3 4 \par - F *G + F *G*H - 2*F *H - F*G *H + F*H - G*H + H \par - ---------------------------------------------------- \par - 2 2 2 2 2 2 \par - F *G - F *H + F*G - 2*F*G*H + F*H - G *H + G*H \par - \par - \par -on gcd; \par - \par -ws; \par - \par - 2 \par - F*G + 2*F*H + H \par - ---------------- \par - F + G \par - \par - \par -e2 := a*c + a*d + b*c + b*d; \par - \par - E2 := A*C + A*D + B*C + B*D \par - \par - \par -off exp; \par - \par -e2; \par - \par - (A + B)*(C + D) \par - \par -\pard \sl240 }{\f2 Even with }{\f3 gcd} {\f2 off, a check is automatically made for common variable -and numerical products in the numerators and denominators of expression, -and the appropriate cancellations made. Thus the example demonstrating the -use of }{\f3 gcd} {\f2 is somewhat complicated. Note when } -{\f2\uldb exp}{\v\f2 EXP} -{\f2 is off, -}{\f3 gcd} {\f2 has the side effect of factoring the expression. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HORNER} - -${\footnote \pard\plain \sl240 \fs20 $ HORNER} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0927} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;output;HORNER switch;switch} - -}{\b\f2 HORNER}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 horner} {\f2 switch is on, polynomial expressions are printed -in Horner's form for faster and safer numerical evaluation. Default -is }{\f3 off} {\f2 . The leading variable of the expression is selected as -Horner variable. To select the Horner variable explicitly use the -} -{\f2\uldb korder}{\v\f2 KORDER} -{\f2 declaration. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on horner; \par - \par -(13p-4q)^3; \par - \par - 3 2 \par - ( - 64)*q + p*(624*q + p*(( - 2028)*q + p*2197)) \par - \par - \par -korder q; \par - \par -ws; \par - \par - 3 2 \par - 2197*p + q*(( - 2028)*p + q*(624*p + q*(-64))) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # IFACTOR} - -${\footnote \pard\plain \sl240 \fs20 $ IFACTOR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0928} - - K{\footnote \pard\plain \sl240 \fs20 K factorize;integer;IFACTOR switch;switch} - -}{\b\f2 IFACTOR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 ifactor} {\f2 switch is on, any integer terms appearing as a result -of the } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 command are factored themselves into primes. Default -is }{\f3 off} {\f2 . If the argument of }{\f3 factorize} {\f2 is an integer, -}{\f3 ifactor} {\f2 has no effect, since the integer is always factored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -factorize(4*x**2 + 28*x + 48); \par - \par - \{4,X + 3,X + 4\} \par - \par - \par -factorize(22587); \par - \par - \{3,7529\} \par - \par - \par -on ifactor; \par - \par -factorize(4*x**2 + 28*x + 48); \par - \par - \{2,2,X + 4,X + 3\} \par - \par - \par -factorize(22587); \par - \par - \{3,7529\} \par - \par -\pard \sl240 }{\f2 Constant terms that appear within nonconstant -polynomial factors are not factored. -\par -\par -The }{\f3 ifactor} {\f2 switch affects only factoring done specifically -with } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 , not on factoring done automatically when the -} -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 switch is on. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INT_switch} - -${\footnote \pard\plain \sl240 \fs20 $ INT_switch} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0929} - - K{\footnote \pard\plain \sl240 \fs20 K interactive;INT switch;switch} - -}{\b\f2 INT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The }{\f3 int} {\f2 switch specifies an interactive mode of operation. Default -}{\f3 on} {\f2 . -\par -\par -There is no reason to turn }{\f3 int} {\f2 off during interactive calculations, -since there are no benefits to be gained. If you do have }{\f3 int} {\f2 off -while inputting a file, and REDUCE finds an error, it prints the message -``Continuing with parsing only." In this state, REDUCE accepts only -} -{\f2\uldb end}{\v\f2 END} -{\f3 ;} {\f2 or } -{\f2\uldb bye}{\v\f2 BYE} -{\f3 ;} {\f2 from the keyboard; -everything else is ignored, even the command }{\f3 on int} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INTSTR} - -${\footnote \pard\plain \sl240 \fs20 $ INTSTR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0930} - - K{\footnote \pard\plain \sl240 \fs20 K output;INTSTR switch;switch} - -}{\b\f2 INTSTR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -If }{\f3 intstr} {\f2 (for ``internal structure'') is on, arguments of an -operator are printed in a more structured form. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -f(2x+2y); \par - \par - F(2*X + 2*Y) \par - \par - \par -on intstr; \par - \par -ws; \par - \par - F(2*(X + Y)) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LCM} - -${\footnote \pard\plain \sl240 \fs20 $ LCM} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0931} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;LCM switch;switch} - -}{\b\f2 LCM}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -The }{\f3 lcm} {\f2 switch instructs REDUCE to compute the least common multiple -of denominators whenever rational expressions occur. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -off lcm; \par - \par -z := 1/(x**2 - y**2) + 1/(x-y)**2; \par - \par - \par - \par - 2*X*(X - Y) \par - Z := ------------------------- \par - 4 3 3 4 \par - X - 2*X *Y + 2*X*Y - Y \par - \par - \par -on lcm; \par - \par -z; \par - \par - 2*X*(X - Y) \par - ------------------------- \par - 4 3 3 4 \par - X - 2*X *Y + 2*X*Y - Y \par - \par - \par -zz := 1/(x**2 - y**2) + 1/(x-y)**2; \par - \par - \par - \par - 2*X \par - ZZ := --------------------- \par - 3 2 2 3 \par - X - X *Y - X*Y + Y \par - \par - \par -on gcd; \par - \par -z; \par - \par - 2*X \par - ---------------------- \par - 3 2 2 3 \par - X - X *Y - X*Y + Y \par - \par -\pard \sl240 }{\f2 Note that }{\f3 lcm} {\f2 has effect only when rational expressions are first -combined. It does not examine existing structures for simplifications on -display. That is shown above when z is entered with -}{\f3 lcm} {\f2 off. It remains unsimplified even after }{\f3 lcm} {\f2 is turned -back on. However, a new variable containing the same expression is -simplified on entry. The switch } -{\f2\uldb gcd}{\v\f2 GCD} -{\f2 does examine existing -structures, as shown in the last example line above. -\par -\par -Full greatest common divisor calculations become expensive if work with -large rational expressions is required. A considerable savings of time -can be had if a full gcd check is made only when denominators are combined, -and only a partial check for numerators. This is the effect of the }{\f3 lcm} {\f2 -switch. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LESSSPACE} - -${\footnote \pard\plain \sl240 \fs20 $ LESSSPACE} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0932} - - K{\footnote \pard\plain \sl240 \fs20 K output;LESSSPACE switch;switch} - -}{\b\f2 LESSSPACE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -You can turn on the switch }{\f3 lessspace} {\f2 if you want fewer -blank lines in your output. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LIMITEDFACTORS} - -${\footnote \pard\plain \sl240 \fs20 $ LIMITEDFACTORS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0933} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;factorize;LIMITEDFACTORS switch;switch} - -}{\b\f2 LIMITEDFACTORS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -To get limited factorization in cases where it is too expensive to use -full multivariate polynomial factorization, the switch -}{\f3 limitedfactors} {\f2 can be turned on. In that case, only ``inexpensive'' -factoring operations, such as square-free factorization, will be used -when } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 is called. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := (y-x)^2*(y^3+2x*y+5)*(y^2-3x*y+7)$ \par - \par -factorize a; \par - \par - \{ - X + Y, \par - X - Y, \par - 3 \par - 2*X*Y + Y + 5, \par - 2 \par - 3*X*Y - Y - 7\} \par - \par - \par -on limitedfactors; \par - \par -factorize a; \par - \par - \{ - X + Y, \par - X - Y, \par - 2 2 4 3 5 3 2 \par - 6*X *Y + 3*X*Y - 2*X*Y + X*Y - Y - 7*Y - 5*Y - 35\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LIST_switch} - -${\footnote \pard\plain \sl240 \fs20 $ LIST_switch} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0934} - - K{\footnote \pard\plain \sl240 \fs20 K LIST switch;switch} - -}{\b\f2 LIST}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -The }{\f3 list} {\f2 switch causes REDUCE to print each term in any sum on -separate lines. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**2*(y**2 + 2*y) + x*(y**2 + z)/(2*a); \par - \par - \par - \par - 2 2 \par - X*(2*A*X*Y + 4*A*X*Y + Y +Z) \par - ------------------------------ \par - 2*A \par - \par - \par -on list; \par - \par -ws; \par - \par - 2 \par - (X*(2*A*X*Y \par - + 4*A*X*Y \par - 2 \par - + Y \par - + Z))/(2*A) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LISTARGS} - -${\footnote \pard\plain \sl240 \fs20 $ LISTARGS} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0935} - - K{\footnote \pard\plain \sl240 \fs20 K operator;argument;list;LISTARGS switch;switch} - -}{\b\f2 LISTARGS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -If an operator other than those specifically defined for lists is given a -single argument that is a list, then the result of this operation will be -a list in which that operator is applied to each element of the list. -This process can be inhibited globally by turning on the switch -}{\f3 listargs} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -log \{a,b,c\}; \par - \par - LOG(A),LOG(B),LOG(C) \par - \par - \par -on listargs; \par - \par -log \{a,b,c\}; \par - \par - LOG(A,B,C) \par - \par -\pard \sl240 }{\f2 It is possible to inhibit such distribution for a specific operator by -using the declaration } -{\f2\uldb listargp}{\v\f2 LISTARGP} -{\f2 . In addition, if an operator has -more than one argument, no such distribution occurs, so }{\f3 listargs} {\f2 -has no effect. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MCD} - -${\footnote \pard\plain \sl240 \fs20 $ MCD} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0936} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;MCD switch;switch} - -}{\b\f2 MCD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 mcd} {\f2 is on, sums and differences of rational expressions are put -on a common denominator. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a/(x+1) + b/5; \par - \par - 5*A + B*X + B \par - ------------- \par - 5*(X + 1) \par - \par - \par -off mcd; \par - \par -a/(x+1) + b/5; \par - \par - -1 \par - (X + 1) *A + 1/5*B \par - \par - \par -1/6 + 1/7; \par - \par - 13/42 \par - \par -\pard \sl240 }{\f2 Even with }{\f3 mcd} {\f2 off, rational expressions involving only numbers are still -put over a common denominator. -\par -\par -Turning }{\f3 mcd} {\f2 off is useful when explicit negative powers are needed, -or if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when }{\f3 mcd} {\f2 -is off are no longer in canonical form, and expressions equivalent to zero -may not simplify to 0. Some operations, such as factoring cannot be done -while }{\f3 mcd} {\f2 is off. This option should therefore be used with some -caution. Turning }{\f3 mcd} {\f2 off is most valuable in intermediate parts of -a complicated calculation, and should be turned back on for the last stage. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MODULAR} - -${\footnote \pard\plain \sl240 \fs20 $ MODULAR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0937} - - K{\footnote \pard\plain \sl240 \fs20 K modular;MODULAR switch;switch} - -}{\b\f2 MODULAR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 modular} {\f2 is on, polynomial coefficients are reduced by the -modulus set by } -{\f2\uldb setmod}{\v\f2 SETMOD} -{\f2 . If no modulus has been set, }{\f3 modular} {\f2 -has no effect. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -setmod 2; \par - \par - 1 \par - \par - \par -on modular; \par - \par -(x+y)**2; \par - \par - 2 2 \par - X + Y \par - \par - \par -145*x**2 + 20*x**3 + 17 + 15*x*y; \par - \par - \par - \par - 2 \par - X + X*Y + 1 \par - \par -\pard \sl240 }{\f2 Modular operations are only conducted on the coefficients, not the -exponents. The modulus is not restricted to being prime. When the modulus -is prime, division by a number not relatively prime to the modulus results -in a error message. When the modulus is a composite -number, division by a power of the modulus results in an error message, but -division by an integer which is a factor of the modulus does not. -The representation of modular number can be influenced by -} -{\f2\uldb balanced_mod}{\v\f2 BALANCED\_MOD} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MSG} - -${\footnote \pard\plain \sl240 \fs20 $ MSG} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0938} - - K{\footnote \pard\plain \sl240 \fs20 K output;MSG switch;switch} - -}{\b\f2 MSG}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 msg} {\f2 is off, the printing of warning messages is suppressed. Error -messages are still printed. -\par -\par -Warning messages include those about redimensioning an } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 -or declaring an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 where one is expected. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MULTIPLICITIES} - -${\footnote \pard\plain \sl240 \fs20 $ MULTIPLICITIES} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0939} - - K{\footnote \pard\plain \sl240 \fs20 K solve;MULTIPLICITIES switch;switch} - -}{\b\f2 MULTIPLICITIES}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 is applied to a set of equations with multiple roots, -solution multiplicities are normally stored in the global variable -} -{\f2\uldb root_multiplicities}{\v\f2 ROOT\_MULTIPLICITIES} -{\f2 rather than the solution list. If you want -the multiplicities explicitly displayed, the switch }{\f3 multiplicities} {\f2 -should be turned on. In this case, }{\f3 root_multiplicities} {\f2 has no value. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(x^2=2x-1,x); \par - \par - X=1 \par - \par - \par -root_multiplicities; \par - \par - 2 \par - \par - \par -on multiplicities; \par - \par -solve(x^2=2x-1,x); \par - \par - X=1,X=1 \par - \par - \par -root_multiplicities; \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NAT} - -${\footnote \pard\plain \sl240 \fs20 $ NAT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0940} - - K{\footnote \pard\plain \sl240 \fs20 K output;NAT switch;switch} - -}{\b\f2 NAT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 nat} {\f2 is on, output is printed to the screen in natural form, with -raised exponents. }{\f3 nat} {\f2 should be turned off when outputting expressions -to a file for future input. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x + y)**3; \par - \par - 3 2 2 3 \par - X + 3*X *Y + 3*X*Y + Y \par - \par - \par -off nat; \par - \par -(x + y)**3; \par - \par - X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ \par - \par - \par -on fort; \par - \par -(x + y)**3; \par - \par - ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3 \par - \par -\pard \sl240 }{\f2 With }{\f3 nat} {\f2 off, a dollar sign is printed at the end of each expression. -An output file written with }{\f3 nat} {\f2 off is ready to be read into REDUCE -using the command } -{\f2\uldb in}{\v\f2 IN} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NERO} - -${\footnote \pard\plain \sl240 \fs20 $ NERO} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0941} - - K{\footnote \pard\plain \sl240 \fs20 K output;NERO switch;switch} - -}{\b\f2 NERO}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 nero} {\f2 is on, zero assignments (such as matrix elements) are not -printed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -matrix a; \par -a := mat((1,0),(0,1)); \par - \par - A(1,1) := 1 \par - A(1,2) := 0 \par - A(2,1) := 0 \par - A(2,2) := 1 \par - \par - \par -on nero; \par - \par -a; \par - \par - MAT(1,1) := 1 \par - MAT(2,2) := 1 \par - \par - \par -a(1,2); \pard \sl240 }{\f2 nothing is printed.}{\f4 \pard \tx3420 \par - \par - \par -b := 0; \pard \sl240 }{\f2 nothing is printed.}{\f4 \pard \tx3420 \par - \par - \par -off nero; \par - \par -b := 0; \par - \par - B := 0 \par - \par -\pard \sl240 }{\f2 -\par -\par -}{\f3 nero} {\f2 is often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOARG} - -${\footnote \pard\plain \sl240 \fs20 $ NOARG} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0942} - - K{\footnote \pard\plain \sl240 \fs20 K derivative;output;NOARG switch;switch} - -}{\b\f2 NOARG}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When } -{\f2\uldb dfprint}{\v\f2 DFPRINT} -{\f2 is on, expressions in the differentiation operator -} -{\f2\uldb df}{\v\f2 DF} -{\f2 are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. When }{\f3 noarg} {\f2 -is on (the default), the arguments of the differentiated operator are also -suppressed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -df(f x,x); \par - \par - DF(F(X),X); \par - \par - \par -on dfprint; \par - \par -ws; \par - \par - F \par - X \par - \par - \par -off noarg; \par - \par -ws; \par - \par - F(X) \par - X \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOLNR} - -${\footnote \pard\plain \sl240 \fs20 $ NOLNR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0943} - - K{\footnote \pard\plain \sl240 \fs20 K integration;NOLNR switch;switch} - -}{\b\f2 NOLNR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 nolnr} {\f2 is on, the linear properties of the integration operator -} -{\f2\uldb int}{\v\f2 INT} -{\f2 are suppressed if the integral cannot be found in closed terms. -\par -\par -REDUCE uses the linear properties of integration to attempt to break down -an integral into manageable pieces. If an integral cannot be found in -closed terms, these pieces are returned. When the }{\f3 nolnr} {\f2 switch is off, -as many of the pieces as possible are integrated. When it is on, if any piece -fails, the rest of them remain unevaluated. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOSPLIT} - -${\footnote \pard\plain \sl240 \fs20 $ NOSPLIT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0944} - - K{\footnote \pard\plain \sl240 \fs20 K output;NOSPLIT switch;switch} - -}{\b\f2 NOSPLIT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Under normal circumstances, the printing routines try to break an expression -across lines at a natural point. This is a fairly expensive process. If -you are not overly concerned about where the end-of-line breaks come, you -can speed up the printing of expressions by turning off the switch -}{\f3 nosplit} {\f2 . This switch is normally on. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NUMVAL} - -${\footnote \pard\plain \sl240 \fs20 $ NUMVAL} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0945} - - K{\footnote \pard\plain \sl240 \fs20 K rounded;NUMVAL switch;switch} - -}{\b\f2 NUMVAL}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -With } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 on, elementary functions with numerical arguments -will return a numerical answer where appropriate. If you wish to inhibit -this evaluation, }{\f3 numval} {\f2 should be turned off. It is normally on. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -cos 3.4; \par - \par - - 0.966798192579 \par - \par - \par -off numval; \par - \par -cos 3.4; \par - \par - COS(3.4) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # OUTPUT} - -${\footnote \pard\plain \sl240 \fs20 $ OUTPUT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0946} - - K{\footnote \pard\plain \sl240 \fs20 K output;OUTPUT switch;switch} - -}{\b\f2 OUTPUT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 output} {\f2 is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default is -}{\f3 on} {\f2 . -\par -\par -Turn output }{\f3 off} {\f2 if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large expressions -for display. Results are still available with } -{\f2\uldb ws}{\v\f2 WS} -{\f2 , or in their -assigned variables. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # OVERVIEW} - -${\footnote \pard\plain \sl240 \fs20 $ OVERVIEW} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0947} - - K{\footnote \pard\plain \sl240 \fs20 K factorize;OVERVIEW switch;switch} - -}{\b\f2 OVERVIEW}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 overview} {\f2 is on, the amount of detail reported by the factorizer -switches } -{\f2\uldb trfac}{\v\f2 TRFAC} -{\f2 and } -{\f2\uldb trallfac}{\v\f2 TRALLFAC} -{\f2 is reduced. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PERIOD} - -${\footnote \pard\plain \sl240 \fs20 $ PERIOD} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0948} - - K{\footnote \pard\plain \sl240 \fs20 K integer;output;PERIOD switch;switch} - -}{\b\f2 PERIOD}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 period} {\f2 is on, periods are added after integers in -Fortran-compatible output (when } -{\f2\uldb fort}{\v\f2 FORT} -{\f2 is on). There is no effect -when }{\f3 fort} {\f2 is off. Default is }{\f3 on} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRECISE} - -${\footnote \pard\plain \sl240 \fs20 $ PRECISE} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0949} - - K{\footnote \pard\plain \sl240 \fs20 K square root;simplification;PRECISE switch;switch} - -}{\b\f2 PRECISE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 precise} {\f2 switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. -Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -sqrt(x**2); \par - \par - X \par - \par - \par -(x**2)**(1/4); \par - \par - SQRT(X) \par - \par - \par -on precise; \par - \par -sqrt(x**2); \par - \par - ABS(X) \par - \par - \par -(x**2)**(1/4); \par - \par - SQRT(ABS(X)) \par - \par -\pard \sl240 }{\f2 In many types of mathematical work, simplification of powers and surds can -proceed by the fastest means of simplifying the exponents arithmetically. -When it is important to you that the positive root be returned, turn -}{\f3 precise} {\f2 on. One situation where this is important is when graphing -square-root expressions such as sqrt(x^2+y^2) to -avoid a spike caused by REDUCE simplifying -sqrt(y^2) to y when x is -zero. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRET} - -${\footnote \pard\plain \sl240 \fs20 $ PRET} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0950} - - K{\footnote \pard\plain \sl240 \fs20 K output;PRET switch;switch} - -}{\b\f2 PRET}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 pret} {\f2 is on, input is printed in standard REDUCE format and then -evaluated. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on pret; \par - \par - (x+1)^3; \par - \par - (x + 1)**3; \par - 3 2 \par - X + 3*X + 3*X + 1 \par - \par - \par - \par -procedure fac(n); \par - if not (fixp(n) and n>=0) \par - then rederr "Choose nonneg. integer only" \par - else for i := 0:n-1 product i+1; \par -\pard \sl240 \par - \par - procedure fac n; \par - if not (fixp n and n>=0) \par - then rederr "Choose nonneg. integer only" \par - else for i := 0:n - 1 product i + 1; \par - FAC \par - \par - \par - \par -fac 5; \par - \par - fac 5; \par - 120 \par - \par -\pard \sl240 }{\f2 Note that all input is converted to lower case except strings (which keep -the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on each -side. In addition, syntactical constructs like -}{\f3 if} {\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 are printed in a standard format. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PRI} - -${\footnote \pard\plain \sl240 \fs20 $ PRI} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0951} - - K{\footnote \pard\plain \sl240 \fs20 K output;PRI switch;switch} - -}{\b\f2 PRI}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 pri} {\f2 is on, the declarations } -{\f2\uldb order}{\v\f2 ORDER} -{\f2 and } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 can -be used, and the switches } -{\f2\uldb allfac}{\v\f2 ALLFAC} -{\f2 , } -{\f2\uldb div}{\v\f2 DIV} -{\f2 , } -{\f2\uldb rat}{\v\f2 RAT} -{\f2 , -and } -{\f2\uldb revpri}{\v\f2 REVPRI} -{\f2 take effect when they are on. Default is }{\f3 on} {\f2 . -\par -\par -Printing of expressions is faster with }{\f3 pri} {\f2 off. The expressions are -then returned in one standard form, without any of the display options that -can be used to feature or display various parts of the expression. You can -also gain insight into REDUCE's representation of expressions with -}{\f3 pri} {\f2 off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RAISE} - -${\footnote \pard\plain \sl240 \fs20 $ RAISE} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0952} - - K{\footnote \pard\plain \sl240 \fs20 K character;input;RAISE switch;switch} - -}{\b\f2 RAISE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 raise} {\f2 is on, lower case letters are automatically converted to -upper case on input. }{\f3 raise} {\f2 is normally on. -\par -\par -This conversion affects the internal representation of the letter, and is -independent of the case with which a letter is printed, which is normally -lower case. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RAT} - -${\footnote \pard\plain \sl240 \fs20 $ RAT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0953} - - K{\footnote \pard\plain \sl240 \fs20 K output;RAT switch;switch} - -}{\b\f2 RAT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 rat} {\f2 switch is on, and kernels have been selected to display -with the } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 declaration, the denominator is printed with each -term rather than one common denominator at the end of an expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x+1)/x + x**2/sin y; \par - \par - \par - 3 \par - SIN(Y)*X + SIN(Y) + X \par - ---------------------- factor x; \par - SIN(Y)*X \par - \par - \par -(x+1)/x + x**2/sin y; \par - \par - \par - 3 \par - X + X*SIN(Y) + SIN(Y) \par - ---------------------- on rat; \par - X*SIN(Y) \par - \par - \par -(x+1)/x + x**2/sin y; \par - \par - \par - 2 \par - X -1 \par - ------ + 1 + X \par - SIN(Y) \par - \par -\pard \sl240 }{\f2 The }{\f3 rat} {\f2 switch only has effect when the } -{\f2\uldb pri}{\v\f2 PRI} -{\f2 switch is on. -When }{\f3 pri} {\f2 is off, regardless of the setting of }{\f3 rat} {\f2 , the -printing behavior is as if }{\f3 rat} {\f2 were off. }{\f3 rat} {\f2 only has -effect upon the display of expressions, not their internal form. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RATARG} - -${\footnote \pard\plain \sl240 \fs20 $ RATARG} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0954} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;rational expression;RATARG switch;switch} - -}{\b\f2 RATARG}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 ratarg} {\f2 is on, rational expressions can be given to operators -such as } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 and } -{\f2\uldb lterm}{\v\f2 LTERM} -{\f2 that normally require -polynomials in one of their arguments. When }{\f3 ratarg} {\f2 is off, rational -expressions cause an error message. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -aa := x/y**2 + 1/x + y/x**2; \par - \par - \par - 3 2 3 \par - X + X*Y + Y \par - AA := -------------- \par - 2 2 \par - X *Y \par - \par - \par -coeff(aa,x); \par - \par - 3 2 3 \par - X + X*Y + Y \par - ***** -------------- invalid as POLYNOMIAL \par - 2 2 \par - X *Y \par - \par - \par -on ratarg; \par - \par -coeff(aa,x); \par - \par - \par - Y 1 1 \par - \{--,--,0,-----\} \par - 2 2 2 2 \par - X X X *Y \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RATIONAL} - -${\footnote \pard\plain \sl240 \fs20 $ RATIONAL} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0955} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;rational expression;RATIONAL switch;switch} - -}{\b\f2 RATIONAL}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 rational} {\f2 is on, polynomial expressions with rational coefficients -are produced. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x/2 + 3*y/4; \par - \par - 2*X + 3*Y \par - --------- \par - 4 \par - \par - \par -(x**2 + 5*x + 17)/2; \par - \par - 2 \par - X + 5*X + 17 \par - ------------- \par - 2 \par - \par - \par -on rational; \par - \par -x/2 + 3y/4; \par - \par - 1 3 \par - -*(X + -*Y) \par - 2 2 \par - \par - \par -(x**2 + 5*x + 17)/2; \par - \par - 1 2 \par - -*(X + 5*X + 17) \par - 2 \par - \par -\pard \sl240 }{\f2 By using }{\f3 rational} {\f2 , polynomial expressions with rational -coefficients can be used in some commands that expect polynomials. With -}{\f3 rational} {\f2 off, such a polynomial becomes a rational expression, with -denominator the least common multiple of the denominators of the rational -number coefficients. \par -\par - -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RATIONALIZE} - -${\footnote \pard\plain \sl240 \fs20 $ RATIONALIZE} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0956} - - K{\footnote \pard\plain \sl240 \fs20 K complex;simplification;rational expression;RATIONALIZE switch;switch} - -}{\b\f2 RATIONALIZE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 rationalize} {\f2 switch is on, denominators of rational expressions -that contain complex numbers or root expressions are simplified by -multiplication by their conjugates. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -qq := (1+sqrt(3))/(sqrt(3)-7); \par - \par - SQRT(3) + 1 \par - QQ := ----------- \par - SQRT(3) - 7 \par - \par - \par -on rationalize; \par - \par -qq; \par - \par - - 4*SQRT(3) - 5 \par - --------------- \par - 23 \par - \par - \par -2/(4 + 6**(1/3)); \par - \par - 2/3 1/3 \par - 6 - 4*6 + 16 \par - ------------------ \par - 35 \par - \par - \par -(i-1)/(i+3); \par - \par - 2*I - 1 \par - ------- \par - 5 \par - \par - \par -off rationalize; \par - \par -(i-1)/(i+3); \par - \par - I - 1 \par - ------ \par - I + 3 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RATPRI} - -${\footnote \pard\plain \sl240 \fs20 $ RATPRI} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0957} - - K{\footnote \pard\plain \sl240 \fs20 K rational expression;output;RATPRI switch;switch} - -}{\b\f2 RATPRI}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 ratpri} {\f2 switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a linear -style. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -3/17; \par - \par - 3 \par - -- \par - 17 \par - \par - \par -2/b + 3/y; \par - \par - 3*B + 2*Y \par - --------- \par - B*Y \par - \par - \par -off ratpri; \par - \par -3/17; \par - \par - 3/17 \par - \par - \par -2/b + 3/y; \par - \par - (3*B + 2*Y)/(B*Y) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REVPRI} - -${\footnote \pard\plain \sl240 \fs20 $ REVPRI} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0958} - - K{\footnote \pard\plain \sl240 \fs20 K output;REVPRI switch;switch} - -}{\b\f2 REVPRI}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When the }{\f3 revpri} {\f2 switch is on, terms are printed in reverse order from -the normal printing order. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**5 + x**2 + 18 + sqrt(y); \par - \par - 5 2 \par - SQRT(Y) + X + X + 18 \par - \par - \par -a + b + c + w; \par - \par - A + B + C + W \par - \par - \par -on revpri; \par - \par -x**5 + x**2 + 18 + sqrt(y); \par - \par - 2 5 \par - 17 + X + X + SQRT(Y) \par - \par - \par -a + b + c + w; \par - \par - W + C + B + A \par - \par -\pard \sl240 }{\f2 Turn }{\f3 revpri} {\f2 on when you want to display a polynomial in ascending -rather than descending order. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RLISP88} - -${\footnote \pard\plain \sl240 \fs20 $ RLISP88} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0959} - - K{\footnote \pard\plain \sl240 \fs20 K lisp;RLISP88 switch;switch} - -}{\b\f2 RLISP88}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -Rlisp '88 is a superset of the Rlisp that has been traditionally used for -the support of REDUCE. It is fully documented in the book Marti, J.B., -``RLISP '88: An Evolutionary Approach to Program Design and Reuse'', -World Scientific, Singapore (1993). It supports different looping -constructs from the traditional Rlisp, and treats ``-'' as a letter unless -separated by spaces. Turning on the switch }{\f3 rlisp88} {\f2 converts to -Rlisp '88 parsing conventions in symbolic mode, and enables the use of -Rlisp '88 extensions. Turning off the switch reverts to the traditional -Rlisp and the previous mode ( (} -{\f2\uldb symbolic}{\v\f2 SYMBOLIC} -{\f2 or } -{\f2\uldb algebraic}{\v\f2 ALGEBRAIC} -{\f2 ) -in force before }{\f3 rlisp88} {\f2 was turned on. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROUNDALL} - -${\footnote \pard\plain \sl240 \fs20 $ ROUNDALL} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0960} - - K{\footnote \pard\plain \sl240 \fs20 K floating point;rational expression;rounded;ROUNDALL switch;switch} - -}{\b\f2 ROUNDALL}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -In } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode, rational numbers are normally converted to a -floating point representation. If }{\f3 roundall} {\f2 is off, this conversion -does not occur. }{\f3 roundall} {\f2 is normally }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -1/2; \par - \par - 0.5 \par - \par - \par -off roundall; \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROUNDBF} - -${\footnote \pard\plain \sl240 \fs20 $ ROUNDBF} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0961} - - K{\footnote \pard\plain \sl240 \fs20 K ROUNDBF switch;switch} - -}{\b\f2 ROUNDBF}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -When } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on, the normal defaults cause underflows to be -converted to zero. If you really want the small number that results in -such cases, }{\f3 roundbf} {\f2 can be turned on. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -exp(-100000.1^2); \par - \par - 0 \par - \par - \par -on roundbf; \par - \par -exp(-100000.1^2); \par - \par - 1.18441281937E-4342953505 \par - \par -\pard \sl240 }{\f2 If a polynomial is input in } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode at the default -precision into any } -{\f2\uldb roots}{\v\f2 ROOTS} -{\f2 function, and it is not possible to -represent any of the coefficients of the polynomial precisely in the -system floating point representation, the switch }{\f3 roundbf} {\f2 will be -automatically turned on. All rounded computation will use the internal -bigfloat representation until the user subsequently turns }{\f3 roundbf} {\f2 -off. (A message is output to indicate that this condition is in effect.) -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROUNDED} - -${\footnote \pard\plain \sl240 \fs20 $ ROUNDED} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0962} - - K{\footnote \pard\plain \sl240 \fs20 K floating point;ROUNDED switch;switch} - -}{\b\f2 ROUNDED}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 rounded} {\f2 is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 digits. -The precise number can be found by the command } -{\f2\uldb precision}{\v\f2 PRECISION} -{\f2 (0). - \par -examples: \par -\pard \tx3420 }{\f4 \par -pi; \par - \par - PI \par - \par - \par -35/217; \par - \par - 5 \par - -- \par - 31 \par - \par - \par -on rounded; \par - \par -pi; \par - \par - 3.14159265359 \par - \par - \par -35/217; \par - \par - 0.161 \par - \par - \par -sqrt(3); \par - \par - 1.73205080756 \par - \par -\pard \sl240 }{\f2 \par -\par -If more than the default number of decimal places are required, use the -} -{\f2\uldb precision}{\v\f2 PRECISION} -{\f2 command to set the required number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SAVESTRUCTR} - -${\footnote \pard\plain \sl240 \fs20 $ SAVESTRUCTR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0963} - - K{\footnote \pard\plain \sl240 \fs20 K STRUCTR OPERATOR;SAVESTRUCTR switch;switch} - -}{\b\f2 SAVESTRUCTR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 savestructr} {\f2 is on, results of the } -{\f2\uldb structr}{\v\f2 STRUCTR} -{\f2 command are -returned as a list whose first element is the representation for the -expression and the remaining elements are equations showing the -relationships of the generated variables. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -off exp; \par - \par -structr((x+y)^3 + sin(x)^2); \par - \par - ANS3 \par - where \par - 3 2 \par - ANS3 := ANS1 + ANS2 \par - ANS2 := SIN(X) \par - ANS1 := X + Y \par - \par - \par -ans3; \par - \par - ANS3 \par - \par - \par -on savestructr; \par - \par -structr((x+y)^\{3\} + sin(x)^\{2\}); \par - \par - 3 2 \par - ANS3,ANS3=ANS1 + ANS2 ,ANS2=SIN(X),ANS1=X + Y \par - \par - \par -ans3 where rest ws; \par - \par - 3 2 \par - (X + Y) + SIN(X) \par - \par -\pard \sl240 }{\f2 In normal operation, } -{\f2\uldb structr}{\v\f2 STRUCTR} -{\f2 is only a display command. With -}{\f3 savestructr} {\f2 on, you can access the various parts of the expression -produced by }{\f3 structr} {\f2 . -\par -\par -The generic system names use the stem }{\f3 ANS} {\f2 . You can change this to your -own stem by the command } -{\f2\uldb varname}{\v\f2 VARNAME} -{\f2 . REDUCE adds integers to this stem -to make unique identifiers. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SOLVESINGULAR} - -${\footnote \pard\plain \sl240 \fs20 $ SOLVESINGULAR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0964} - - K{\footnote \pard\plain \sl240 \fs20 K solve;SOLVESINGULAR switch;switch} - -}{\b\f2 SOLVESINGULAR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 solvesingular} {\f2 is on, singular or underdetermined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{2x + y,4x + 2y\},\{x,y\}); \par - \par - ARBCOMPLEX(1) \par - \{\{X= - -------------,Y=ARBCOMPLEX(1)\}\} \par - 2 \par - \par - \par -solve(\{7x + 15y - z,x - y - z\},\{x,y,z\}); \par - \par - \par - 8*ARBCOMPLEX(3) \par - \{\{X=---------------- \par - 11 \par - 3*ARBCOMPLEX(3) \par - Y= - ---------------- \par - 11 \par - Z=ARBCOMPLEX(3)\}\} \par - \par - \par -off solvesingular; \par - \par -solve(\{2x + y,4x + 2y\},\{x,y\}); \par - \par - ***** SOLVE given singular equations \par - \par - \par -solve(\{7x + 15y - z,x - y - z\},\{x,y,z\}); \par - \par - \par - ***** SOLVE given singular equations \par - \par -\pard \sl240 }{\f2 The integer following the identifier } -{\f2\uldb arbcomplex}{\v\f2 ARBCOMPLEX} -{\f2 above is assigned by -the system, and serves to identify the variable uniquely. It has no other -significance. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TIME} - -${\footnote \pard\plain \sl240 \fs20 $ TIME} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0965} - - K{\footnote \pard\plain \sl240 \fs20 K time;TIME switch;switch} - -}{\b\f2 TIME}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 time} {\f2 is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on time; \par - \par - Time: 4940 ms \par - \par - \par -df(sin(x**2 + y),y); \par - \par - 2 \par - COS(X + Y ) \par - Time: 180 ms \par - \par - \par -solve(x**2 - 6*y,x); \par - \par - \{X= - SQRT(Y)*SQRT(6), \par - X=SQRT(Y)*SQRT(6)\} \par - Time: 320 ms \par - \par -\pard \sl240 }{\f2 When }{\f3 time} {\f2 is first turned on, the time since the beginning of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed after -the results of each command. Idle time or time spent typing in commands is -not counted. If }{\f3 time} {\f2 is turned off, the first reading after it is -turned on again gives the time elapsed since it was turned off. The time -printed is CPU or wall clock time, depending on the system. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRALLFAC} - -${\footnote \pard\plain \sl240 \fs20 $ TRALLFAC} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0966} - - K{\footnote \pard\plain \sl240 \fs20 K factorize;TRALLFAC switch;switch} - -}{\b\f2 TRALLFAC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 trallfac} {\f2 is on, a more detailed trace of factorizer calls is -generated. -\par -\par -The }{\f3 trallfac} {\f2 switch takes precedence over } -{\f2\uldb trfac}{\v\f2 TRFAC} -{\f2 if they are -both on. }{\f3 trfac} {\f2 gives a factorization trace with less detail in it. -When the } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 switch is on also, all input polynomials are sent to -the factorizer automatically and trace information is generated. The -} -{\f2\uldb out}{\v\f2 OUT} -{\f2 command saves the results of the factoring, but not the trace. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRFAC} - -${\footnote \pard\plain \sl240 \fs20 $ TRFAC} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0967} - - K{\footnote \pard\plain \sl240 \fs20 K factorize;TRFAC switch;switch} - -}{\b\f2 TRFAC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 trfac} {\f2 is on, a narrative trace of any calls to the factorizer is -generated. Default is }{\f3 off} {\f2 . -\par -\par -When the switch } -{\f2\uldb factor}{\v\f2 FACTOR} -{\f2 is on, and }{\f3 trfac} {\f2 is on, every input -polynomial is sent to the factorizer, and a trace generated. With -}{\f3 factor} {\f2 off, only polynomials that are explicitly factored with the -command } -{\f2\uldb factorize}{\v\f2 FACTORIZE} -{\f2 generate trace information. -\par -\par -The } -{\f2\uldb out}{\v\f2 OUT} -{\f2 command saves the results of the factoring, but not -the trace. The } -{\f2\uldb trallfac}{\v\f2 TRALLFAC} -{\f2 switch gives trace information to a -greater level of detail. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRIGFORM} - -${\footnote \pard\plain \sl240 \fs20 $ TRIGFORM} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0968} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;TRIGFORM switch;switch} - -}{\b\f2 TRIGFORM}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When } -{\f2\uldb fullroots}{\v\f2 FULLROOTS} -{\f2 is on, } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 will compute the -roots of a cubic or quartic polynomial is closed form. When -}{\f3 trigform} {\f2 is on, the roots will be expressed by trigonometric -forms. Otherwise nested surds are used. Default is }{\f3 on} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRINT} - -${\footnote \pard\plain \sl240 \fs20 $ TRINT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0969} - - K{\footnote \pard\plain \sl240 \fs20 K integration;TRINT switch;switch} - -}{\b\f2 TRINT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 trint} {\f2 is on, a narrative tracing various steps in the -integration process is produced. -\par -\par -The } -{\f2\uldb out}{\v\f2 OUT} -{\f2 command saves the results of the integration, but not the -trace. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRNONLNR} - -${\footnote \pard\plain \sl240 \fs20 $ TRNONLNR} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0970} - - K{\footnote \pard\plain \sl240 \fs20 K solve;TRNONLNR switch;switch} - -}{\b\f2 TRNONLNR}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 trnonlnr} {\f2 is on, a narrative tracing various steps in -the process for solving non-linear equations is produced. -\par -\par -}{\f3 trnonlnr} {\f2 can only be used after the solve package has been loaded -(e.g., by an explicit call of } -{\f2\uldb load_package}{\v\f2 LOAD\_PACKAGE} -{\f2 ). The } -{\f2\uldb out}{\v\f2 OUT} -{\f2 -command saves the results of the equation solving, but not the trace. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # VAROPT} - -${\footnote \pard\plain \sl240 \fs20 $ VAROPT} - -+{\footnote \pard\plain \sl240 \fs20 + g12:0971} - - K{\footnote \pard\plain \sl240 \fs20 K solve;VAROPT switch;switch} - -}{\b\f2 VAROPT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - \par -\par -When }{\f3 varopt} {\f2 is on, the sequence of variables is optimized by -} -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 with respect to execution speed. Otherwise, the sequence -given in the call to } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 is preserved. Default is }{\f3 on} {\f2 . -\par -\par -In combination with the switch } -{\f2\uldb arbvars}{\v\f2 ARBVARS} -{\f2 , }{\f3 varopt} {\f2 can be used -to control variable elimination. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -off arbvars; \par - \par -solve(\{x+2z,x-3y\},\{x,y,z\}); \par - \par - x x \par - \{\{y=-,z= - -\}\} \par - 3 2 \par - \par - \par -solve(\{x*y=1,z=x\},\{x,y,z\}); \par - \par - 1 \par - \{\{z=x,y=-\}\} \par - x \par - \par - \par -off varopt; \par - \par -solve(\{x+2z,x-3y\},\{x,y,z\}); \par - \par - 2*z \par - \{\{x= - 2*z,y= - ---\}\} \par - 3 \par - \par - \par -solve(\{x*y=1,z=x\},\{x,y,z\}); \par - \par - 1 \par - \{\{y=-,x=z\}\} \par - z \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g12} - -${\footnote \pard\plain \sl240 \fs20 $ General Switches} - -+{\footnote \pard\plain \sl240 \fs20 + index:0012} -}{\b\f2 General Switches}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb SWITCHES introduction} -{\v\f2 SWITCHES}{\f2 \par -}{\f2 \tab}{\f2\uldb ALGINT switch} -{\v\f2 ALGINT}{\f2 \par -}{\f2 \tab}{\f2\uldb ALLBRANCH switch} -{\v\f2 ALLBRANCH}{\f2 \par -}{\f2 \tab}{\f2\uldb ALLFAC switch} -{\v\f2 ALLFAC}{\f2 \par -}{\f2 \tab}{\f2\uldb ARBVARS switch} -{\v\f2 ARBVARS}{\f2 \par -}{\f2 \tab}{\f2\uldb BALANCED\_MOD switch} -{\v\f2 BALANCED\_MOD}{\f2 \par -}{\f2 \tab}{\f2\uldb BFSPACE switch} -{\v\f2 BFSPACE}{\f2 \par -}{\f2 \tab}{\f2\uldb COMBINEEXPT switch} -{\v\f2 COMBINEEXPT}{\f2 \par -}{\f2 \tab}{\f2\uldb COMBINELOGS switch} -{\v\f2 COMBINELOGS}{\f2 \par -}{\f2 \tab}{\f2\uldb COMP switch} -{\v\f2 COMP}{\f2 \par -}{\f2 \tab}{\f2\uldb COMPLEX switch} -{\v\f2 COMPLEX}{\f2 \par -}{\f2 \tab}{\f2\uldb CREF switch} -{\v\f2 CREF}{\f2 \par -}{\f2 \tab}{\f2\uldb CRAMER switch} -{\v\f2 CRAMER}{\f2 \par -}{\f2 \tab}{\f2\uldb DEFN switch} -{\v\f2 DEFN}{\f2 \par -}{\f2 \tab}{\f2\uldb DEMO switch} -{\v\f2 DEMO}{\f2 \par -}{\f2 \tab}{\f2\uldb DFPRINT switch} -{\v\f2 DFPRINT}{\f2 \par -}{\f2 \tab}{\f2\uldb DIV switch} -{\v\f2 DIV}{\f2 \par -}{\f2 \tab}{\f2\uldb ECHO switch} -{\v\f2 ECHO}{\f2 \par -}{\f2 \tab}{\f2\uldb ERRCONT switch} -{\v\f2 ERRCONT}{\f2 \par -}{\f2 \tab}{\f2\uldb EVALLHSEQP switch} -{\v\f2 EVALLHSEQP}{\f2 \par -}{\f2 \tab}{\f2\uldb EXP switch} -{\v\f2 EXP_switch}{\f2 \par -}{\f2 \tab}{\f2\uldb EXPANDLOGS switch} -{\v\f2 EXPANDLOGS}{\f2 \par -}{\f2 \tab}{\f2\uldb EZGCD switch} -{\v\f2 EZGCD}{\f2 \par -}{\f2 \tab}{\f2\uldb FACTOR switch} -{\v\f2 FACTOR}{\f2 \par -}{\f2 \tab}{\f2\uldb FAILHARD switch} -{\v\f2 FAILHARD}{\f2 \par -}{\f2 \tab}{\f2\uldb FORT switch} -{\v\f2 FORT}{\f2 \par -}{\f2 \tab}{\f2\uldb FORTUPPER switch} -{\v\f2 FORTUPPER}{\f2 \par -}{\f2 \tab}{\f2\uldb FULLPREC switch} -{\v\f2 FULLPREC}{\f2 \par -}{\f2 \tab}{\f2\uldb FULLROOTS switch} -{\v\f2 FULLROOTS}{\f2 \par -}{\f2 \tab}{\f2\uldb GC switch} -{\v\f2 GC}{\f2 \par -}{\f2 \tab}{\f2\uldb GCD switch} -{\v\f2 GCD_switch}{\f2 \par -}{\f2 \tab}{\f2\uldb HORNER switch} -{\v\f2 HORNER}{\f2 \par -}{\f2 \tab}{\f2\uldb IFACTOR switch} -{\v\f2 IFACTOR}{\f2 \par -}{\f2 \tab}{\f2\uldb INT switch} -{\v\f2 INT_switch}{\f2 \par -}{\f2 \tab}{\f2\uldb INTSTR switch} -{\v\f2 INTSTR}{\f2 \par -}{\f2 \tab}{\f2\uldb LCM switch} -{\v\f2 LCM}{\f2 \par -}{\f2 \tab}{\f2\uldb LESSSPACE switch} -{\v\f2 LESSSPACE}{\f2 \par -}{\f2 \tab}{\f2\uldb LIMITEDFACTORS switch} -{\v\f2 LIMITEDFACTORS}{\f2 \par -}{\f2 \tab}{\f2\uldb LIST switch} -{\v\f2 LIST_switch}{\f2 \par -}{\f2 \tab}{\f2\uldb LISTARGS switch} -{\v\f2 LISTARGS}{\f2 \par -}{\f2 \tab}{\f2\uldb MCD switch} -{\v\f2 MCD}{\f2 \par -}{\f2 \tab}{\f2\uldb MODULAR switch} -{\v\f2 MODULAR}{\f2 \par -}{\f2 \tab}{\f2\uldb MSG switch} -{\v\f2 MSG}{\f2 \par -}{\f2 \tab}{\f2\uldb MULTIPLICITIES switch} -{\v\f2 MULTIPLICITIES}{\f2 \par -}{\f2 \tab}{\f2\uldb NAT switch} -{\v\f2 NAT}{\f2 \par -}{\f2 \tab}{\f2\uldb NERO switch} -{\v\f2 NERO}{\f2 \par -}{\f2 \tab}{\f2\uldb NOARG switch} -{\v\f2 NOARG}{\f2 \par -}{\f2 \tab}{\f2\uldb NOLNR switch} -{\v\f2 NOLNR}{\f2 \par -}{\f2 \tab}{\f2\uldb NOSPLIT switch} -{\v\f2 NOSPLIT}{\f2 \par -}{\f2 \tab}{\f2\uldb NUMVAL switch} -{\v\f2 NUMVAL}{\f2 \par -}{\f2 \tab}{\f2\uldb OUTPUT switch} -{\v\f2 OUTPUT}{\f2 \par -}{\f2 \tab}{\f2\uldb OVERVIEW switch} -{\v\f2 OVERVIEW}{\f2 \par -}{\f2 \tab}{\f2\uldb PERIOD switch} -{\v\f2 PERIOD}{\f2 \par -}{\f2 \tab}{\f2\uldb PRECISE switch} -{\v\f2 PRECISE}{\f2 \par -}{\f2 \tab}{\f2\uldb PRET switch} -{\v\f2 PRET}{\f2 \par -}{\f2 \tab}{\f2\uldb PRI switch} -{\v\f2 PRI}{\f2 \par -}{\f2 \tab}{\f2\uldb RAISE switch} -{\v\f2 RAISE}{\f2 \par -}{\f2 \tab}{\f2\uldb RAT switch} -{\v\f2 RAT}{\f2 \par -}{\f2 \tab}{\f2\uldb RATARG switch} -{\v\f2 RATARG}{\f2 \par -}{\f2 \tab}{\f2\uldb RATIONAL switch} -{\v\f2 RATIONAL}{\f2 \par -}{\f2 \tab}{\f2\uldb RATIONALIZE switch} -{\v\f2 RATIONALIZE}{\f2 \par -}{\f2 \tab}{\f2\uldb RATPRI switch} -{\v\f2 RATPRI}{\f2 \par -}{\f2 \tab}{\f2\uldb REVPRI switch} -{\v\f2 REVPRI}{\f2 \par -}{\f2 \tab}{\f2\uldb RLISP88 switch} -{\v\f2 RLISP88}{\f2 \par -}{\f2 \tab}{\f2\uldb ROUNDALL switch} -{\v\f2 ROUNDALL}{\f2 \par -}{\f2 \tab}{\f2\uldb ROUNDBF switch} -{\v\f2 ROUNDBF}{\f2 \par -}{\f2 \tab}{\f2\uldb ROUNDED switch} -{\v\f2 ROUNDED}{\f2 \par -}{\f2 \tab}{\f2\uldb SAVESTRUCTR switch} -{\v\f2 SAVESTRUCTR}{\f2 \par -}{\f2 \tab}{\f2\uldb SOLVESINGULAR switch} -{\v\f2 SOLVESINGULAR}{\f2 \par -}{\f2 \tab}{\f2\uldb TIME switch} -{\v\f2 TIME}{\f2 \par -}{\f2 \tab}{\f2\uldb TRALLFAC switch} -{\v\f2 TRALLFAC}{\f2 \par -}{\f2 \tab}{\f2\uldb TRFAC switch} -{\v\f2 TRFAC}{\f2 \par -}{\f2 \tab}{\f2\uldb TRIGFORM switch} -{\v\f2 TRIGFORM}{\f2 \par -}{\f2 \tab}{\f2\uldb TRINT switch} -{\v\f2 TRINT}{\f2 \par -}{\f2 \tab}{\f2\uldb TRNONLNR switch} -{\v\f2 TRNONLNR}{\f2 \par -}{\f2 \tab}{\f2\uldb VAROPT switch} -{\v\f2 VAROPT}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COFACTOR} - -${\footnote \pard\plain \sl240 \fs20 $ COFACTOR} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0972} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;COFACTOR operator;operator} - -}{\b\f2 COFACTOR}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 cofactor} {\f2 returns the cofactor of the element in row - and column of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . Errors occur -if or do not evaluate to integer expressions or if -the matrix is not square. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cofactor} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); \par - \par - \par - A*R - C*P \par - \par - \par -cofactor(mat((a,b,c),(d,e,f)),1,1); \par - \par - \par - ***** non-square matrix \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DET} - -${\footnote \pard\plain \sl240 \fs20 $ DET} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0973} - - K{\footnote \pard\plain \sl240 \fs20 K determinant;matrix;DET operator;operator} - -}{\b\f2 DET}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 det} {\f2 operator returns the determinant of its -(square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 ) argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 det} {\f4 () or }{\f3 det} {\f4 -\par -\par -}{\f2 \par - must evaluate to a square matrix. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -matrix m,n; \par - \par - \par -m := mat((a,b),(c,d)); \par - \par - M(1,1) := A \par - M(1,2) := B \par - M(2,1) := C \par - M(2,2) := D \par - \par - \par - \par -det m; \par - \par - A*D - B*C \par - \par - \par -n := mat((1,2),(1,2)); \par - \par - N(1,1) := 1 \par - N(1,2) := 2 \par - N(2,1) := 1 \par - N(2,2) := 2 \par - \par - \par - \par - \par -det(n); \par - \par - 0 \par - \par - \par - \par -det(5); \par - \par - 5 \par - \par -\pard \sl240 }{\f2 Given a numerical argument, }{\f3 det} {\f2 returns the number. However, given a -variable name that has not been declared of type matrix, or a non-square -matrix, }{\f3 det} {\f2 returns an error message. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MAT} - -${\footnote \pard\plain \sl240 \fs20 $ MAT} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0974} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;MAT operator;operator} - -}{\b\f2 MAT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 mat} {\f2 operator is used to represent a two-dimensional -} -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mat} {\f4 ((\{,\}*) \{(\{}{\f3 ,} {\f4 \}*)\}*) -\par -\par -}{\f2 \par - may be any valid REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -mat((1,2),(3,4)); \par - \par - MAT(1,1) := 1 \par - MAT(2,3) := 2 \par - MAT(2,1) := 3 \par - MAT(2,2) := 4 \par - \par - \par -mat(2,1); \par - \par - ***** Matrix mismatch \par - Cont? (Y or N) \par - \par - \par -matrix qt; \par - \par -qt := ws; \par - \par - QT(1,1) := 1 \par - QT(1,2) := 2 \par - QT(2,1) := 3 \par - QT(2,2) := 4 \par - \par - \par -matrix a,b; \par - \par -a := mat((x),(y),(z)); \par - \par - A(1,1) := X \par - A(2,1) := Y \par - A(3,1) := Z \par - \par - \par -b := mat((sin x,cos x,1)); \par - \par - B(1,1) := SIN(X) \par - B(1,2) := COS(X) \par - B(1,3) := 1 \par - \par -\pard \sl240 }{\f2 Matrices need not have a size declared (unlike arrays). }{\f3 mat} {\f2 -redimensions a matrix variable as needed. It is necessary, of course, -that all rows be the same length. An anonymous matrix, as shown in the -first example, must be named before it can be referenced (note error -message). When using }{\f3 mat} {\f2 to fill a 1 x n -matrix, the row of values must be inside a second set of parentheses, to -eliminate ambiguity. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MATEIGEN} - -${\footnote \pard\plain \sl240 \fs20 $ MATEIGEN} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0975} - - K{\footnote \pard\plain \sl240 \fs20 K eigenvalue;matrix;MATEIGEN operator;operator} - -}{\b\f2 MATEIGEN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 mateigen} {\f2 operator calculates the eigenvalue equation and the -corresponding eigenvectors of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mateigen} {\f4 (,) -\par -\par -}{\f2 \par - must be a declared matrix of values, and must be -a legal REDUCE identifier. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -aa := mat((2,5),(1,0))\$ \par - \par -mateigen(aa,alpha); \par - \par - 2 \par - \{\{ALPHA - 2*ALPHA - 5, \par - 1, \par - 5*ARBCOMPLEX(1) \par - MAT(1,1) := ---------------, \par - ALPHA - 2 \par - \\ \par - MAT(2,1) := ARBCOMPLEX(1) \par - \}\} \par - \par -charpoly := first first ws; \par - \par - 2 \par - CHARPOLY := ALPHA - 2*ALPHA - 5 \par - \par - \par -bb := mat((1,0,1),(1,1,0),(0,0,1))\$ \par - \par -mateigen(bb,lamb); \par - \par - \{\{LAMB - 1,3, \par - [ 0 ] \par - [ARBCOMPLEX(2)] \par - [ 0 ] \par - \}\} \par - \par -\pard \sl240 }{\f2 The }{\f3 mateigen} {\f2 operator returns a list of lists of three -elements. The first element is a square free factor of the characteristic -polynomial; the second element is its multiplicity; and the third element -is the corresponding eigenvector. If the characteristic polynomial can be -completely factored, the product of the first elements of all the sublists -will produce the minimal polynomial. You can access the various parts of -the answer with the usual list access operators. -\par -\par -If the matrix is degenerate, more than one eigenvector can be produced for -the same eigenvalue, as shown by more than one arbitrary variable in the -eigenvector. The identification numbers of the arbitrary complex variables -shown in the examples above may not be the same as yours. Note that since -}{\f3 lambda} {\f2 is a reserved word in REDUCE, you cannot use it as a -tag-id for this operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MATRIX} - -${\footnote \pard\plain \sl240 \fs20 $ MATRIX} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0976} - - K{\footnote \pard\plain \sl240 \fs20 K MATRIX declaration;declaration} - -}{\b\f2 MATRIX}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -Identifiers are declared to be of type }{\f3 matrix} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 matrix} {\f4 \tab option (,) -\par -\par -\{, \tab option - (,)\}* -\par -\par -}{\f2 \par - must not be an already-defined operator or array or -the name of a scalar variable. Dimensions are optional, and if used appear -inside parentheses. must be a positive integer. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -matrix a,b(1,4),c(4,4); \par - \par -b(1,1); \par - \par - 0 \par - \par - \par -a(1,1); \par - \par - ***** Matrix A not set \par - \par - \par -a := mat((x0,y0),(x1,y1)); \par - \par - A(1,1) := X0 \par - A(1,2) := Y0 \par - A(2,1) := X0 \par - A(2,2) := X1 \par - \par - \par -length a; \par - \par - \{2,2\} \par - \par - \par -b := a**2; \par - \par - 2 \par - B(1,1) := X0 + X1*Y0 \par - B(1,2) := Y0*(X0 + Y1) \par - B(2,1) := X1*(X0 + Y1) \par - 2 \par - B(2,2) := X1*Y0 + Y1 \par - \par -\pard \sl240 }{\f2 When a matrix variable has not been dimensioned, matrix elements cannot be -referenced until the matrix is set by the } -{\f2\uldb mat}{\v\f2 MAT} -{\f2 operator. When a -matrix is dimensioned in its declaration, matrix elements are set to 0. -Matrix elements cannot stand for themselves. When you use } -{\f2\uldb let}{\v\f2 LET} -{\f2 on -a matrix element, there is no effect unless the element contains a -constant, in which case an error message is returned. The same behavior -occurs with } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 . Do use } -{\f2\uldb clear}{\v\f2 CLEAR} -{\f2 to try to -set a matrix element to 0. } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements can be applied to -matrices as a whole, if the right-hand side of the expression is a matrix -expression, and the left-hand side identifier has been declared to be a matrix. -\par -\par -Arithmetical operators apply to matrices of the correct dimensions. The -operators }{\f3 +} {\f2 and }{\f3 -} {\f2 can be used with matrices of the same -dimensions. The operator }{\f3 *} {\f2 can be used to multiply -m x n matrices by n x p -matrices. Matrix multiplication is non-commutative. Scalars can also be -multiplied with matrices, with the result that each element of the matrix -is multiplied by the scalar. The operator }{\f3 /} {\f2 applied to two -matrices computes the first matrix multiplied by the inverse of the -second, if the inverse exists, and produces an error message otherwise. -Matrices can be divided by scalars, which results in dividing each element -of the matrix. Scalars can also be divided by matrices when the matrices -are invertible, and the result is the multiplication of the scalar by the -inverse of the matrix. Matrix inverses can by found by }{\f3 1/A} {\f2 or -}{\f3 /A} {\f2 , where }{\f3 A} {\f2 is a matrix. Square matrices can be raised to -positive integer powers, and also to negative integer powers if they are -nonsingular. -\par -\par -When a matrix variable is assigned to the results of a calculation, the -matrix is redimensioned if necessary. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NULLSPACE} - -${\footnote \pard\plain \sl240 \fs20 $ NULLSPACE} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0977} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;NULLSPACE operator;operator} - -}{\b\f2 NULLSPACE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 nullspace} {\f4 () -\par -\par -}{\f2 \par - calculates for its } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 argument, -}{\f3 a} {\f2 , a list of -linear independent vectors (a basis) whose linear combinations satisfy the -equation }{\f4 a x = 0}{\f2 . The basis is provided in a form such that as many -upper components as possible are isolated. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -nullspace mat((1,2,3,4),(5,6,7,8)); \par - \par - \par - \{ \par - [ 1 ] \par - [ ] \par - [ 0 ] \par - [ ] \par - [ - 3] \par - [ ] \par - [ 2 ] \par - , \par - [ 0 ] \par - [ ] \par - [ 1 ] \par - [ ] \par - [ - 2] \par - [ ] \par - [ 1 ] \par - \} \par - \par -\pard \sl240 }{\f2 Note that with }{\f3 b := nullspace a} {\f2 , the expression }{\f3 length b} {\f2 is -the nullity/ of A, and that }{\f3 second length a - length b} {\f2 -calculates the rank/ of A. The rank of a matrix expression can -also be found more directly by the } -{\f2\uldb rank}{\v\f2 RANK} -{\f2 operator. -\par -\par -In addition to the REDUCE matrix form, }{\f3 nullspace} {\f2 accepts as input a -matrix given as a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of lists, that is interpreted as a row matrix. If -that form of input is chosen, the vectors in the result will be -represented by lists as well. This additional input syntax facilitates -the use of }{\f3 nullspace} {\f2 in applications different from classical linear -algebra. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RANK} - -${\footnote \pard\plain \sl240 \fs20 $ RANK} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0978} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;RANK operator;operator} - -}{\b\f2 RANK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 rank} {\f4 () -\par -\par -}{\f2 \par -}{\f3 rank} {\f2 calculates the rank of its matrix argument. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -rank mat((a,b,c),(d,e,f)); \par - \par - 2 \par - \par -\pard \sl240 }{\f2 The argument to }{\f3 rank} {\f2 can also be a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of lists, interpreted -either as a row matrix or a set of equations. If that form of input is -chosen, the vectors in the result will be represented by lists as well. -This additional input syntax facilitates the use of }{\f3 rank} {\f2 in -applications different from classical linear algebra. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TP} - -${\footnote \pard\plain \sl240 \fs20 $ TP} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0979} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;transpose;TP operator;operator} - -}{\b\f2 TP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 tp} {\f2 operator returns the transpose of its } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 - argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 tp} {\f4 or }{\f3 tp} {\f4 () -\par -\par -}{\f2 \par - must be a matrix, which either has had its dimensions set -in its declaration, or has had values put into it by }{\f3 mat} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -matrix m,n; \par - \par -m := mat((1,2,3),(4,5,6))$ \par - \par -n := tp m; \par - \par - N(1,1) := 1 \par - N(1,2) := 4 \par - N(2,1) := 2 \par - N(2,2) := 5 \par - N(3,1) := 3 \par - N(3,2) := 6 \par - \par -\pard \sl240 }{\f2 In an assignment statement involving }{\f3 tp} {\f2 , the matrix identifier on the -left-hand side is redimensioned to the correct size for the transpose. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRACE} - -${\footnote \pard\plain \sl240 \fs20 $ TRACE} - -+{\footnote \pard\plain \sl240 \fs20 + g13:0980} - - K{\footnote \pard\plain \sl240 \fs20 K matrix;TRACE operator;operator} - -}{\b\f2 TRACE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 trace} {\f2 operator finds the trace of its } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 argument. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 trace} {\f4 () or }{\f3 trace} {\f4 -\par -\par -}{\f2 \par - or must evaluate to a square -matrix. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -matrix a; \par - \par -a := mat((x1,y1),(x2,y2))\$ \par - \par -trace a; \par - \par - X1 + Y2 \par - \par -\pard \sl240 }{\f2 The trace is the sum of the entries along the diagonal of a square matrix. -Given a non-matrix expression, or a non-square matrix, }{\f3 trace} {\f2 returns -an error message. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g13} - -${\footnote \pard\plain \sl240 \fs20 $ Matrix Operations} - -+{\footnote \pard\plain \sl240 \fs20 + index:0013} -}{\b\f2 Matrix Operations}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb COFACTOR operator} -{\v\f2 COFACTOR}{\f2 \par -}{\f2 \tab}{\f2\uldb DET operator} -{\v\f2 DET}{\f2 \par -}{\f2 \tab}{\f2\uldb MAT operator} -{\v\f2 MAT}{\f2 \par -}{\f2 \tab}{\f2\uldb MATEIGEN operator} -{\v\f2 MATEIGEN}{\f2 \par -}{\f2 \tab}{\f2\uldb MATRIX declaration} -{\v\f2 MATRIX}{\f2 \par -}{\f2 \tab}{\f2\uldb NULLSPACE operator} -{\v\f2 NULLSPACE}{\f2 \par -}{\f2 \tab}{\f2\uldb RANK operator} -{\v\f2 RANK}{\f2 \par -}{\f2 \tab}{\f2\uldb TP operator} -{\v\f2 TP}{\f2 \par -}{\f2 \tab}{\f2\uldb TRACE operator} -{\v\f2 TRACE}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Groebner_bases} - -${\footnote \pard\plain \sl240 \fs20 $ Groebner_bases} - -+{\footnote \pard\plain \sl240 \fs20 + g14:0981} - - K{\footnote \pard\plain \sl240 \fs20 K Kredel-Weispfenning algorithm;Faugere-Gianni-Lazard-Mora algorithm;Hollmann algorithm;Buchberger algorithm;Groebner bases;Groebner bases introduction;introducti -on} - -}{\b\f2 GROEBNER BASES}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -The GROEBNER package calculates }{\f3 Groebner bases} {\f2 using the - }{\f3 Buchberger algorithm} {\f2 and provides related algorithms -for arithmetic with ideal bases, such as ideal quotients, -Hilbert polynomials ( }{\f3 Hollmann algorithm} {\f2 ), -basis conversion ( - }{\f3 Faugere-Gianni-Lazard-Mora algorithm} {\f2 ), independent -variable set ( }{\f3 Kredel-Weispfenning algorithm} {\f2 ). -\par -\par -Some routines of the Groebner package are used by } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 - in -that context the package is loaded automatically. However, if you -want to use the package by explicit calls you must load it by -\pard \tx3420 }{\f4 \par - load_package groebner; \par -\pard \sl240 }{\f2 \par -\par -For the common parameter setting of most operators in this package -see } -{\f2\uldb ideal parameters}{\v\f2 Ideal_Parameters} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Ideal_Parameters} - -${\footnote \pard\plain \sl240 \fs20 $ Ideal_Parameters} - -+{\footnote \pard\plain \sl240 \fs20 + g14:0982} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;Ideal Parameters concept;concept} - -}{\b\f2 IDEAL PARAMETERS}{\f2 \par -\par - - \par -\par -Most operators of the }{\f3 Groebner} {\f2 package compute expressions in a -polynomial ring which given as [,,...] where - is the current REDUCE coefficient domain. All algebraically -exact domains of REDUCE are supported. The package can operate over rings -and fields. The operation mode is distinguished automatically. In -general the ring mode is a bit faster than the field mode. The factoring -variant can be applied only over domains which allow you factoring of -multivariate polynomials. -\par -\par -The variable sequence is either declared explicitly as argument -in form of a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 in } -{\f2\uldb torder}{\v\f2 TORDER} -{\f2 , or it is extracted -automatically from the expressions. In the second case the current REDUCE -system order is used (see } -{\f2\uldb korder}{\v\f2 KORDER} -{\f2 ) for arranging the variables. -If some kernels should play the role of formal parameters (the ground -domain then is the polynomial ring over these), the variable -sequences must be given explicitly. -\par -\par -All REDUCE } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 s can be used as variables. But please note, -that all variables are considered as independent. E.g. when using -}{\f3 sin(a)} {\f2 and }{\f3 cos(a)} {\f2 as variables, the basic relation -}{\f3 sin(a)^2+cos(a)^2-1=0} {\f2 must be explicitly added to an equation set -because the Groebner operators don't include such knowledge automatically. -\par -\par -The terms (monomials) in polynomials are arranged according to the current -} -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 . Note that the algebraic properties of the computed -results only are valid as long as neither the ordering nor the variable -sequence changes. -\par -\par -The input expressions can be polynomials

, rational -functions / or equations = built from -polynomials or rational functions. Apart from the }{\f3 tracing} {\f2 -algorithms } -{\f2\uldb groebnert}{\v\f2 groebnert} -{\f2 and } -{\f2\uldb preducet}{\v\f2 preducet} -{\f2 , where the equations -have a specific meaning, equations are converted to simple expressions by -taking the difference of the left-hand and right-hand sides --=>

. Rational functions are converted to -polynomials by converting the expression to a common denominator form -first, and then using the numerator only =>

. So eventual -zeros of the denominators are ignored. -\par -\par -A basis on input or output of an algorithm is coded as } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of -expressions \{,,...\} . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Term_order} - -${\footnote \pard\plain \sl240 \fs20 $ Term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0983} - - K{\footnote \pard\plain \sl240 \fs20 K distributive polynomials;Term order introduction;introduction} - -}{\b\f2 TERM ORDER}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - - \par -\par -For all }{\f3 Groebner} {\f2 operations the polynomials are -represented in distributive form: a sum of terms (monomials). -The terms are ordered corresponding to the actual }{\f3 term order} {\f2 -which is set by the } -{\f2\uldb torder}{\v\f2 TORDER} -{\f2 operator, and to the -actual variable sequence which is either given as explicit -parameter or by the system } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 order. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TORDER} - -${\footnote \pard\plain \sl240 \fs20 $ TORDER} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0984} - - K{\footnote \pard\plain \sl240 \fs20 K TORDER operator;operator} - -}{\b\f2 TORDER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 torder} {\f2 sets the actual variable sequence and term order. -\par -\par -1. simple term order: - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder} {\f4 (, ) -\par -\par -}{\f2 \par -where is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 of variables (} -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 s) and - is the name of a simple } -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 mode -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 , } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 , -} -{\f2\uldb revgradlex term order}{\v\f2 revgradlex_term_order} -{\f2 or another implemented parameterless mode. -\par -\par -2. stepped term order: - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder} {\f4 (,,) -\par -\par -\par -\par -}{\f2 where is the name of a two step term order, one of -} -{\f2\uldb gradlexgradlex term order}{\v\f2 gradlexgradlex_term_order} -{\f2 , } -{\f2\uldb gradlexrevgradlex term order}{\v\f2 gradlexrevgradlex_term_order} -{\f2 , -} -{\f2\uldb lexgradlex term order}{\v\f2 lexgradlex_term_order} -{\f2 or } -{\f2\uldb lexrevgradlex term order}{\v\f2 lexrevgradlex_term_order} -{\f2 , and - is a positive integer. -\par -\par -3. weighted term order - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder} {\f4 (, }{\f3 weighted} {\f4 , ,,...); -\par -\par -}{\f2 \par -where the are positive integers, see } -{\f2\uldb weighted term order}{\v\f2 weighted_term_order} -{\f2 . -\par -\par -4. matrix term order - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder} {\f4 (, }{\f3 matrix} {\f4 , ); -\par -\par -}{\f2 \par -where is a matrix with integer elements, see -} -{\f2\uldb torder_compile}{\v\f2 torder_compile} -{\f2 . -\par -\par -5. compiled term order - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder} {\f4 (, }{\f3 co} {\f4 ); -\par -\par -}{\f2 \par -where is the name of a routine generated by -} -{\f2\uldb torder_compile}{\v\f2 torder_compile} -{\f2 . -\par -\par -}{\f3 torder} {\f2 sets the variable sequence and the term order mode. If the -an empty list is used as variable sequence, the automatic variable extraction -is activated. The defaults are the empty variable list an the -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 . -The previous setting is returned as a list. -\par -\par -Alternatively to the above syntax the arguments of }{\f3 torder} {\f2 may be -collected in a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 and passed as one argument to -}{\f3 torder} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # torder_compile} - -${\footnote \pard\plain \sl240 \fs20 $ torder_compile} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0985} - - K{\footnote \pard\plain \sl240 \fs20 K term order;torder_compile operator;operator} - -}{\b\f2 TORDER_COMPILE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -A matrix can be converted into -a compilable LISP program for faster execution by using - \par -syntax: \par -}{\f4 \par -\par -}{\f3 torder_compile} {\f4 (,) -\par -\par -}{\f2 \par -where is an identifier for the new term order and -is an integer matrix to be used as } -{\f2\uldb matrix term order}{\v\f2 matrix_term_order} -{\f2 . Afterwards -the term order can be activated by using in a } -{\f2\uldb torder}{\v\f2 TORDER} -{\f2 -expression. The resulting program is compiled if the switch } -{\f2\uldb comp}{\v\f2 COMP} -{\f2 -is on, or if the }{\f3 torder_compile} {\f2 expression is part of a compiled -module. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # lex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ lex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0986} - - K{\footnote \pard\plain \sl240 \fs20 K variable elimination;term order;lex term order concept;concept} - -}{\b\f2 LEX TERM ORDER}{\f2 \par -\par - - \par -\par -The terms are ordered lexicographically: two terms t1 t2 -are compared for their degrees -along the fixed variable sequence: t1 is higher than t2 -if the first different degree is higher in t1. -This order has the }{\f3 elimination property} {\f2 -for }{\f3 groebner basis} {\f2 calculations. -If the ideal has a univariate polynomial in the last -variable the groebner basis will contain -such polynomial. }{\f3 Lex} {\f2 is best -suited for solving of polynomial equation systems. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ gradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0987} - - K{\footnote \pard\plain \sl240 \fs20 K term order;gradlex term order concept;concept} - -}{\b\f2 GRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -The terms are ordered first with their total -degree, and if the total degree is identical -the comparison is } -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 . -With }{\f3 groebner} {\f2 basis calculations this term order -produces polynomials of lowest degree. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # revgradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ revgradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0988} - - K{\footnote \pard\plain \sl240 \fs20 K term order;revgradlex term order concept;concept} - -}{\b\f2 REVGRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -The terms are ordered first with their total -degree (degree sum), and if the total degree is identical -the comparison is the inverse of } -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 . -With } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 and } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 -calculations this term order -is similar to } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 ; it is known -as most efficient ordering with respect to computing time. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gradlexgradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ gradlexgradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0989} - - K{\footnote \pard\plain \sl240 \fs20 K term order;gradlexgradlex term order concept;concept} - -}{\b\f2 GRADLEXGRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -The terms are separated into two groups where the -second parameter of the } -{\f2\uldb torder}{\v\f2 TORDER} -{\f2 call determines -the length of the first group. For a comparison first -the total degrees of both variable groups are compared. -If both are equal -} -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 comparison is applied to the first -group, and if that does not decide } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 -is applied for the second group. This order has the elimination -property for the variable groups. It can be used e.g. for -separating variables from parameters. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gradlexrevgradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ gradlexrevgradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0990} - - K{\footnote \pard\plain \sl240 \fs20 K term order;gradlexrevgradlex term order concept;concept} - -}{\b\f2 GRADLEXREVGRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -Similar to } -{\f2\uldb gradlexgradlex term order}{\v\f2 gradlexgradlex_term_order} -{\f2 , but using -} -{\f2\uldb revgradlex term order}{\v\f2 revgradlex_term_order} -{\f2 for the second group. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # lexgradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ lexgradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0991} - - K{\footnote \pard\plain \sl240 \fs20 K term order;lexgradlex term order concept;concept} - -}{\b\f2 LEXGRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -Similar to } -{\f2\uldb gradlexgradlex term order}{\v\f2 gradlexgradlex_term_order} -{\f2 , but using -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 for the first group. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # lexrevgradlex_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ lexrevgradlex_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0992} - - K{\footnote \pard\plain \sl240 \fs20 K term order;lexrevgradlex term order concept;concept} - -}{\b\f2 LEXREVGRADLEX TERM ORDER}{\f2 \par -\par - - \par -\par -Similar to } -{\f2\uldb gradlexgradlex term order}{\v\f2 gradlexgradlex_term_order} -{\f2 , but using -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 for the first group -} -{\f2\uldb revgradlex term order}{\v\f2 revgradlex_term_order} -{\f2 for the second group. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # weighted_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ weighted_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0993} - - K{\footnote \pard\plain \sl240 \fs20 K term order;weighted term order concept;concept} - -}{\b\f2 WEIGHTED TERM ORDER}{\f2 \par -\par - - \par -\par -establishes a graduated ordering -similar to } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 , where the exponents first are -multiplied by the given weights. If there are less weight values than -variables, the weight list is extended by ones. If the weighted degree -comparison is not decidable, the -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 is used. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # graded_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ graded_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0994} - - K{\footnote \pard\plain \sl240 \fs20 K term order;graded term order concept;concept} - -}{\b\f2 GRADED TERM ORDER}{\f2 \par -\par - - \par -\par -establishes a cascaded term ordering: first a graduated ordering -similar to } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 is used, where the exponents first are -multiplied by the given weights. If there are less weight values than -variables, the weight list is extended by ones. If the weighted degree -comparison is not decidable, the term ordering described in the following -parameters of the } -{\f2\uldb torder}{\v\f2 TORDER} -{\f2 command is used. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # matrix_term_order} - -${\footnote \pard\plain \sl240 \fs20 $ matrix_term_order} - -+{\footnote \pard\plain \sl240 \fs20 + g15:0995} - - K{\footnote \pard\plain \sl240 \fs20 K term order;matrix term order concept;concept} - -}{\b\f2 MATRIX TERM ORDER}{\f2 \par -\par - - \par -\par -Any arbitrary term order mode can be installed by a matrix with -integer elements where the row length corresponds to the variable -number. The matrix must have at least as many rows as columns. -It must have full rank, and the top nonzero element of each column -must be positive. -\par -\par -The matrix }{\f3 term order mode} {\f2 -defines a term order where the exponent vectors of the monomials are -first multiplied by the matrix and the resulting vectors are compared -lexicographically. -\par -\par -If the switch } -{\f2\uldb comp}{\v\f2 COMP} -{\f2 is on, the matrix is converted into -a compiled LISP program for faster execution. A matrix can also be -compiled explicitly, see } -{\f2\uldb torder_compile}{\v\f2 torder_compile} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g15} - -${\footnote \pard\plain \sl240 \fs20 $ Term order} - -+{\footnote \pard\plain \sl240 \fs20 + index:0015} -}{\b\f2 Term order}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Term order introduction} -{\v\f2 Term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb TORDER operator} -{\v\f2 TORDER}{\f2 \par -}{\f2 \tab}{\f2\uldb torder_compile operator} -{\v\f2 torder_compile}{\f2 \par -}{\f2 \tab}{\f2\uldb lex term order concept} -{\v\f2 lex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb gradlex term order concept} -{\v\f2 gradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb revgradlex term order concept} -{\v\f2 revgradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb gradlexgradlex term order concept} -{\v\f2 gradlexgradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb gradlexrevgradlex term order concept} -{\v\f2 gradlexrevgradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb lexgradlex term order concept} -{\v\f2 lexgradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb lexrevgradlex term order concept} -{\v\f2 lexrevgradlex_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb weighted term order concept} -{\v\f2 weighted_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb graded term order concept} -{\v\f2 graded_term_order}{\f2 \par -}{\f2 \tab}{\f2\uldb matrix term order concept} -{\v\f2 matrix_term_order}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GVARS} - -${\footnote \pard\plain \sl240 \fs20 $ GVARS} - -+{\footnote \pard\plain \sl240 \fs20 + g16:0996} - - K{\footnote \pard\plain \sl240 \fs20 K GVARS operator;operator} - -}{\b\f2 GVARS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 gvars} {\f4 (\{,,... \}) -\par -\par -\par -\par -}{\f2 where are expressions or } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s. -\par -\par -}{\f3 gvars} {\f2 extracts from the expressions the } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f3 s} {\f2 -which can -play the role of variables for a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 -calculation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GROEBNER} - -${\footnote \pard\plain \sl240 \fs20 $ GROEBNER} - -+{\footnote \pard\plain \sl240 \fs20 + g16:0997} - - K{\footnote \pard\plain \sl240 \fs20 K Buchberger algorithm;GROEBNER operator;operator} - -}{\b\f2 GROEBNER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 groebner} {\f4 (\{}{\f3 exp} {\f4 , ...\}) -\par -\par -\par -\par -}{\f2 where \{}{\f3 exp} {\f2 , ... \}is a list of -expressions or equations. -\par -\par -The operator }{\f3 groebner} {\f2 implements the Buchberger algorithm -for computing Groebner bases for a given set of -expressions with respect to the given set of variables in the order -given. As a side effect, the sequence of variables is stored as a REDUCE list -in the shared variable } -{\f2\uldb gvarslast}{\v\f2 gvarslast} -{\f2 - this is important in cases -where the algorithm rearranges the variable sequence because } -{\f2\uldb groebopt}{\v\f2 groebopt} -{\f2 -is }{\f3 on} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - groebner(\{x**2+y**2-1,x-y\}) \par - \par - \{X - Y,2*Y**2 -1\} \par - \par -\pard \sl240 }{\f2 \par -related: \par -\par -\tab } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 operator -\par -\tab } -{\f2\uldb gvarslast}{\v\f2 gvarslast} -{\f2 variable -\par -\tab } -{\f2\uldb groebopt}{\v\f2 groebopt} -{\f2 switch -\par -\tab } -{\f2\uldb groebprereduce}{\v\f2 groebprereduce} -{\f2 switch -\par -\tab } -{\f2\uldb groebfullreduction}{\v\f2 groebfullreduction} -{\f2 switch -\par -\tab } -{\f2\uldb gltbasis}{\v\f2 gltbasis} -{\f2 switch -\par -\tab } -{\f2\uldb gltb}{\v\f2 gltb} -{\f2 variable -\par -\tab } -{\f2\uldb glterms}{\v\f2 glterms} -{\f2 variable -\par -\tab } -{\f2\uldb groebstat}{\v\f2 groebstat} -{\f2 switch -\par -\tab } -{\f2\uldb trgroeb}{\v\f2 trgroeb} -{\f2 switch -\par -\tab } -{\f2\uldb trgroebs}{\v\f2 trgroebs} -{\f2 switch -\par -\tab } -{\f2\uldb groebprot}{\v\f2 groebprot} -{\f2 switch -\par -\tab } -{\f2\uldb groebprotfile}{\v\f2 groebprotfile} -{\f2 variable -\par -\tab } -{\f2\uldb groebnert}{\v\f2 groebnert} -{\f2 operator -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebopt} - -${\footnote \pard\plain \sl240 \fs20 $ groebopt} - -+{\footnote \pard\plain \sl240 \fs20 + g16:0998} - - K{\footnote \pard\plain \sl240 \fs20 K groebopt switch;switch} - -}{\b\f2 GROEBOPT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -If }{\f3 groebopt} {\f2 is set ON, the sequence of variables is optimized -with respect to execution speed of }{\f3 groebner} {\f2 calculations; -note that the final list of variables is available in } -{\f2\uldb gvarslast}{\v\f2 gvarslast} -{\f2 . -By default }{\f3 groebopt} {\f2 is off, conserving the original variable -sequence. -\par -\par -An explicitly declared dependency using the } -{\f2\uldb depend}{\v\f2 DEPEND} -{\f2 -declaration supersedes the variable optimization. - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 \par -\par -guarantees that a will be placed in front of x and y. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gvarslast} - -${\footnote \pard\plain \sl240 \fs20 $ gvarslast} - -+{\footnote \pard\plain \sl240 \fs20 + g16:0999} - - K{\footnote \pard\plain \sl240 \fs20 K gvarslast variable;variable} - -}{\b\f2 GVARSLAST}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -After a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculation -the actual variable sequence is stored in the variable -}{\f3 gvarslast} {\f2 . If } -{\f2\uldb groebopt}{\v\f2 groebopt} -{\f2 is }{\f3 on} {\f2 -}{\f3 gvarslast} {\f2 shows the variable sequence after reordering. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebprereduce} - -${\footnote \pard\plain \sl240 \fs20 $ groebprereduce} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1000} - - K{\footnote \pard\plain \sl240 \fs20 K groebprereduce switch;switch} - -}{\b\f2 GROEBPREREDUCE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -If }{\f3 groebprereduce} {\f2 set ON, } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 -and } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 try to simplify the -input expressions: if the head term of an input expression is a -multiple of the head term of another expression, it can be reduced; -these reductions are done cyclicly as long as possible in order to -shorten the main part of the algorithm. -\par -\par -By default }{\f3 groebprereduce} {\f2 is off. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebfullreduction} - -${\footnote \pard\plain \sl240 \fs20 $ groebfullreduction} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1001} - - K{\footnote \pard\plain \sl240 \fs20 K groebfullreduction switch;switch} - -}{\b\f2 GROEBFULLREDUCTION}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -If }{\f3 groebfullreduction} {\f2 set off, the polynomial reduction steps during -} -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 and } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 are limited to the pure head -term reduction; subsequent terms are reduced otherwise. -\par -\par -By default }{\f3 groebfullreduction} {\f2 is on. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gltbasis} - -${\footnote \pard\plain \sl240 \fs20 $ gltbasis} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1002} - - K{\footnote \pard\plain \sl240 \fs20 K gltbasis switch;switch} - -}{\b\f2 GLTBASIS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -If }{\f3 gltbasis} {\f2 set on, the leading terms of the result basis -of a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculation are -extracted. They are collected as a basis of monomials, which is -available as value of the global variable } -{\f2\uldb gltb}{\v\f2 gltb} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gltb} - -${\footnote \pard\plain \sl240 \fs20 $ gltb} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1003} - - K{\footnote \pard\plain \sl240 \fs20 K gltb variable;variable} - -}{\b\f2 GLTB}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -See } -{\f2\uldb gltbasis}{\v\f2 gltbasis} -{\f2 -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # glterms} - -${\footnote \pard\plain \sl240 \fs20 $ glterms} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1004} - - K{\footnote \pard\plain \sl240 \fs20 K glterms variable;variable} - -}{\b\f2 GLTERMS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -If the expressions in a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 -call contain parameters (symbols -which are not member of the variable list), the share variable -}{\f3 glterms} {\f2 is set to a list of expression which during the -calculation were assumed to be nonzero. The calculated bases -are valid only under the assumption that all these expressions do -not vanish. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebstat} - -${\footnote \pard\plain \sl240 \fs20 $ groebstat} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1005} - - K{\footnote \pard\plain \sl240 \fs20 K groebstat switch;switch} - -}{\b\f2 GROEBSTAT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -if }{\f3 groebstat} {\f2 is on, a summary of the -} -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 computation is printed -at the end -including the computing time, the number of intermediate -H polynomials and the counters for the criteria hits. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # trgroeb} - -${\footnote \pard\plain \sl240 \fs20 $ trgroeb} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1006} - - K{\footnote \pard\plain \sl240 \fs20 K trgroeb switch;switch} - -}{\b\f2 TRGROEB}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -if }{\f3 trgroeb} {\f2 is on, intermediate H polynomials are -printed during a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 -or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # trgroebs} - -${\footnote \pard\plain \sl240 \fs20 $ trgroebs} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1007} - - K{\footnote \pard\plain \sl240 \fs20 K trgroebs switch;switch} - -}{\b\f2 TRGROEBS}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -if }{\f3 trgroebs} {\f2 is on, intermediate H and S polynomials are -printed during a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 or } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gzerodim_} - -${\footnote \pard\plain \sl240 \fs20 $ gzerodim_} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1008} - - K{\footnote \pard\plain \sl240 \fs20 K gzerodim? operator;operator} - -}{\b\f2 GZERODIM?}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 gzerodim!?} {\f4 () -\par -\par -\par -\par -}{\f2 where is a Groebner basis in the current -} -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 with the actual setting -(see } -{\f2\uldb ideal parameters}{\v\f2 Ideal_Parameters} -{\f2 ). -\par -\par -}{\f3 gzerodim!?} {\f2 tests whether the ideal spanned by the given basis -has dimension zero. If yes, the number of zeros is returned, -} -{\f2\uldb nil}{\v\f2 NIL} -{\f2 otherwise. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gdimension} - -${\footnote \pard\plain \sl240 \fs20 $ gdimension} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1009} - - K{\footnote \pard\plain \sl240 \fs20 K groebner;ideal dimension;gdimension operator;operator} - -}{\b\f2 GDIMENSION}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 gdimension} {\f4 () -\par -\par -\par -\par -}{\f2 where is a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 basis in the current -term order (see } -{\f2\uldb ideal parameters}{\v\f2 Ideal_Parameters} -{\f2 ). -}{\f3 gdimension} {\f2 computes the dimension of the ideal -spanned by the given basis and returns the dimension as an integer -number. The Kredel-Weispfenning algorithm is used: the dimension -is the length of the longest independent variable set, -see } -{\f2\uldb gindependent_sets}{\v\f2 gindependent\_sets} -{\f2 -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gindependent\_sets} - -${\footnote \pard\plain \sl240 \fs20 $ gindependent_sets} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1010} - - K{\footnote \pard\plain \sl240 \fs20 K Kredel-Weispfenning algorithm;groebner;ideal dimension;ideal variables;gindependent_sets operator;operator} - -}{\b\f2 GINDEPENDENT\_SETS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 gindependent_sets} {\f4 () -\par -\par -\par -\par -}{\f2 where is a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 basis in any }{\f3 term order} {\f2 -(which must be the current }{\f3 term order} {\f2 ) with the specified -variables (see } -{\f2\uldb ideal parameters}{\v\f2 Ideal_Parameters} -{\f2 ). -\par -\par -}{\f3 Gindependent_sets} {\f2 computes the maximal -left independent variable sets of the ideal, that are -the variable sets which play the role of free parameters in the -current ideal basis. Each set is a list which is a subset of the -variable list. The result is a list of these sets. For an -ideal with dimension zero the list is empty. -The Kredel-Weispfenning algorithm is used. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # dd_groebner} - -${\footnote \pard\plain \sl240 \fs20 $ dd_groebner} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1011} - - K{\footnote \pard\plain \sl240 \fs20 K dd_groebner operator;operator} - -}{\b\f2 DD_GROEBNER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -For a homogeneous system of polynomials under -} -{\f2\uldb graded term order}{\v\f2 graded_term_order} -{\f2 , } -{\f2\uldb gradlex term order}{\v\f2 gradlex_term_order} -{\f2 , -} -{\f2\uldb revgradlex term order}{\v\f2 revgradlex_term_order} -{\f2 \par -\par -or } -{\f2\uldb weighted term order}{\v\f2 weighted_term_order} -{\f2 -a Groebner Base can be computed with limiting the grade -of the intermediate S polynomials: - \par -syntax: \par -}{\f4 \par -\par -}{\f3 dd_groebner} {\f4 (,,) -\par -\par -}{\f2 \par -where is a non negative integer and is an integer -or ``infinity". A pair of polynomials is considered -only if the grade of the lcm of their head terms is between - and . -For the term orders }{\f3 graded} {\f2 or }{\f3 weighted} {\f2 the (first) weight -vector is used for the grade computation. Otherwise the total -degree of a term is used. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # glexconvert} - -${\footnote \pard\plain \sl240 \fs20 $ glexconvert} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1012} - - K{\footnote \pard\plain \sl240 \fs20 K univariate polynomial;term order;ideal variables;glexconvert operator;operator} - -}{\b\f2 GLEXCONVERT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 glexconvert} {\f4 ([,][,MAXDEG=] -[,NEWVARS=]) -\par -\par -\par -\par -}{\f2 where is a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 basis -in the current term order, (optional) is a positive -integer and (optional) is a list of variables -(see } -{\f2\uldb ideal parameters}{\v\f2 Ideal_Parameters} -{\f2 ). -\par -\par -The operator }{\f3 glexconvert} {\f2 converts the basis -of a zero-dimensional ideal (finite number -of isolated solutions) from arbitrary ordering into a basis under -} -{\f2\uldb lex term order}{\v\f2 lex_term_order} -{\f2 . -\par -\par -The parameter defines the new variable sequence. -If omitted, the -original variable sequence is used. If only a subset of variables is -specified here, the partial ideal basis is evaluated. -\par -\par -If is a list with one element, the minimal - }{\f3 univariate polynomial} {\f2 is computed. -\par -\par - is an upper limit for the degrees. The algorithm stops with -an error message, if this limit is reached. -\par -\par -A warning occurs, if the ideal is not zero dimensional. -\par -\par -During the call the }{\f3 term order} {\f2 of the input basis must -be active. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # greduce} - -${\footnote \pard\plain \sl240 \fs20 $ greduce} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1013} - - K{\footnote \pard\plain \sl240 \fs20 K greduce operator;operator} - -}{\b\f2 GREDUCE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 greduce} {\f4 (exp, \{exp1, exp2, ... , expm\}) -\par -\par -\par -\par -}{\f2 where exp is an expression, and \{exp1, exp2, ... , expm\} is -a list of expressions or equations. -\par -\par -}{\f3 greduce} {\f2 is functionally equivalent with a call to -} -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 and then a call to } -{\f2\uldb preduce}{\v\f2 preduce} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # preduce} - -${\footnote \pard\plain \sl240 \fs20 $ preduce} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1014} - - K{\footnote \pard\plain \sl240 \fs20 K preduce operator;operator} - -}{\b\f2 PREDUCE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 preduce} {\f4 (

, \{, ... \}) -\par -\par -\par -\par -}{\f2 where

is an expression, and \{, ... \}is -a list of expressions or equations. -\par -\par -}{\f3 preduce} {\f2 computes the remainder of }{\f3 exp} {\f2 -modulo the given set of polynomials resp. equations. -This result is unique (canonical) only if the given set -is a }{\f3 groebner} {\f2 basis under the current } -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 -\par -\par -see also: } -{\f2\uldb preducet}{\v\f2 preducet} -{\f2 operator. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # idealquotient} - -${\footnote \pard\plain \sl240 \fs20 $ idealquotient} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1015} - - K{\footnote \pard\plain \sl240 \fs20 K idealquotient operator;operator} - -}{\b\f2 IDEALQUOTIENT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 idealquotient} {\f4 (\{, ...\}, ) -\par -\par -\par -\par -}{\f2 where \{,...\} is a list of -expressions or equations, is a single expression or equation. -\par -\par -}{\f3 idealquotient} {\f2 computes the ideal quotient: -ideal spanned by the expressions \{,...\} -divided by the single polynomial/expression . The result -is the } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 basis of the quotient ideal. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # hilbertpolynomial} - -${\footnote \pard\plain \sl240 \fs20 $ hilbertpolynomial} - -+{\footnote \pard\plain \sl240 \fs20 + g16:1016} - - K{\footnote \pard\plain \sl240 \fs20 K Hollmann algorithm;hilbertpolynomial operator;operator} - -}{\b\f2 HILBERTPOLYNOMIAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 hilbertpolynomial() -\par -\par -\par -\par -}{\f2 where is a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 basis in the -current } -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 . -\par -\par -The degree of the }{\f3 Hilbert polynomial} {\f2 is the -dimension of the ideal spanned by the basis. For an -ideal of dimension zero the Hilbert polynomial is a -constant which is the number of common zeros of the -ideal (including eventual multiplicities). -The }{\f3 Hollmann algorithm} {\f2 is used. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g16} - -${\footnote \pard\plain \sl240 \fs20 $ Basic Groebner operators} - -+{\footnote \pard\plain \sl240 \fs20 + index:0016} -}{\b\f2 Basic Groebner operators}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb GVARS operator} -{\v\f2 GVARS}{\f2 \par -}{\f2 \tab}{\f2\uldb GROEBNER operator} -{\v\f2 GROEBNER}{\f2 \par -}{\f2 \tab}{\f2\uldb groebopt switch} -{\v\f2 groebopt}{\f2 \par -}{\f2 \tab}{\f2\uldb gvarslast variable} -{\v\f2 gvarslast}{\f2 \par -}{\f2 \tab}{\f2\uldb groebprereduce switch} -{\v\f2 groebprereduce}{\f2 \par -}{\f2 \tab}{\f2\uldb groebfullreduction switch} -{\v\f2 groebfullreduction}{\f2 \par -}{\f2 \tab}{\f2\uldb gltbasis switch} -{\v\f2 gltbasis}{\f2 \par -}{\f2 \tab}{\f2\uldb gltb variable} -{\v\f2 gltb}{\f2 \par -}{\f2 \tab}{\f2\uldb glterms variable} -{\v\f2 glterms}{\f2 \par -}{\f2 \tab}{\f2\uldb groebstat switch} -{\v\f2 groebstat}{\f2 \par -}{\f2 \tab}{\f2\uldb trgroeb switch} -{\v\f2 trgroeb}{\f2 \par -}{\f2 \tab}{\f2\uldb trgroebs switch} -{\v\f2 trgroebs}{\f2 \par -}{\f2 \tab}{\f2\uldb gzerodim? operator} -{\v\f2 gzerodim_}{\f2 \par -}{\f2 \tab}{\f2\uldb gdimension operator} -{\v\f2 gdimension}{\f2 \par -}{\f2 \tab}{\f2\uldb gindependent\_sets operator} -{\v\f2 gindependent\_sets}{\f2 \par -}{\f2 \tab}{\f2\uldb dd_groebner operator} -{\v\f2 dd_groebner}{\f2 \par -}{\f2 \tab}{\f2\uldb glexconvert operator} -{\v\f2 glexconvert}{\f2 \par -}{\f2 \tab}{\f2\uldb greduce operator} -{\v\f2 greduce}{\f2 \par -}{\f2 \tab}{\f2\uldb preduce operator} -{\v\f2 preduce}{\f2 \par -}{\f2 \tab}{\f2\uldb idealquotient operator} -{\v\f2 idealquotient}{\f2 \par -}{\f2 \tab}{\f2\uldb hilbertpolynomial operator} -{\v\f2 hilbertpolynomial}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebnerf} - -${\footnote \pard\plain \sl240 \fs20 $ groebnerf} - -+{\footnote \pard\plain \sl240 \fs20 + g17:1017} - - K{\footnote \pard\plain \sl240 \fs20 K groebnerf operator;operator} - -}{\b\f2 GROEBNERF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 groebnerf} {\f4 (\{, ...\}[,\{\},\{, ... \}]); -\par -\par -\par -\par -}{\f2 where \{, ... \}is a list of expressions or -equations, and \{,... \}is -an optional list of polynomials to be considered as non zero -for this calculation. An empty list must be passed as second argument -if the non-zero list is specified. -\par -\par -}{\f3 groebnerf} {\f2 tries to separate polynomials into individual factors and -to branch the computation in a recursive manner (factorization tree). -The result is a list of partial Groebner bases. -Multiplicities (one factor with a higher power, the same partial basis -twice) are deleted as early as possible in order to speed up the -calculation. -\par -\par -The third parameter of }{\f3 groebnerf} {\f2 declares some polynomials -nonzero. If any of these is found in a branch of the calculation -the branch is canceled. -\par -\par - \par -example: \par -\pard \tx3420 }{\f4 \par -groebnerf(\{ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3, \par - 2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3, \par - x**3*y+x**2*y+3*x**3+2*x**2 \}, \{y,x\}); \par - \par - \{\{Y - 3,X\}, \par - \par - 2 \par - \{2*Y + 2*X - 1,2*X - 5*X - 5\}\} \par -\pard \sl240 }{\f2 \par -related: \par -\par -\tab } -{\f2\uldb groebresmax}{\v\f2 groebresmax} -{\f2 variable -\par -\tab } -{\f2\uldb groebmonfac}{\v\f2 groebmonfac} -{\f2 variable -\par -\tab } -{\f2\uldb groebrestriction}{\v\f2 groebrestriction} -{\f2 variable -\par -\tab } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 operator -\par -\tab } -{\f2\uldb gvarslast}{\v\f2 gvarslast} -{\f2 variable -\par -\tab } -{\f2\uldb groebopt}{\v\f2 groebopt} -{\f2 switch -\par -\tab } -{\f2\uldb groebprereduce}{\v\f2 groebprereduce} -{\f2 switch -\par -\tab } -{\f2\uldb groebfullreduction}{\v\f2 groebfullreduction} -{\f2 switch -\par -\tab } -{\f2\uldb gltbasis}{\v\f2 gltbasis} -{\f2 switch -\par -\tab } -{\f2\uldb gltb}{\v\f2 gltb} -{\f2 variable -\par -\tab } -{\f2\uldb glterms}{\v\f2 glterms} -{\f2 variable -\par -\tab } -{\f2\uldb groebstat}{\v\f2 groebstat} -{\f2 switch -\par -\tab } -{\f2\uldb trgroeb}{\v\f2 trgroeb} -{\f2 switch -\par -\tab } -{\f2\uldb trgroebs}{\v\f2 trgroebs} -{\f2 switch -\par -\tab } -{\f2\uldb groebnert}{\v\f2 groebnert} -{\f2 operator -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebmonfac} - -${\footnote \pard\plain \sl240 \fs20 $ groebmonfac} - -+{\footnote \pard\plain \sl240 \fs20 + g17:1018} - - K{\footnote \pard\plain \sl240 \fs20 K groebmonfac variable;variable} - -}{\b\f2 GROEBMONFAC}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -The variable }{\f3 groebmonfac} {\f2 is connected to -the handling of monomial factors. A monomial factor is a product -of variable powers as a factor, e.g. x**2*y in x**3*y - -2*x**2*y**2. A monomial factor represents a solution of the type - x = 0 or y = 0 with a certain multiplicity. With -} -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 the multiplicity of monomial factors is lowered -to the value of the shared variable }{\f3 groebmonfac} {\f2 -which by default is 1 (= monomial factors remain present, but their -multiplicity is brought down). With -}{\f3 groebmonfac} {\f2 := 0 -the monomial factors are suppressed completely. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebresmax} - -${\footnote \pard\plain \sl240 \fs20 $ groebresmax} - -+{\footnote \pard\plain \sl240 \fs20 + g17:1019} - - K{\footnote \pard\plain \sl240 \fs20 K groebresmax variable;variable} - -}{\b\f2 GROEBRESMAX}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -The variable }{\f3 groebresmax} {\f2 -controls during } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculations -the number of partial results. Its default value is 300. If -more partial results are calculated, the calculation is -terminated. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebrestriction} - -${\footnote \pard\plain \sl240 \fs20 $ groebrestriction} - -+{\footnote \pard\plain \sl240 \fs20 + g17:1020} - - K{\footnote \pard\plain \sl240 \fs20 K groebrestriction variable;variable} - -}{\b\f2 GROEBRESTRICTION}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -During } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 calculations -irrelevant branches can be excluded -by setting the variable }{\f3 groebrestriction} {\f2 . The -following restrictions are implemented: - \par -syntax: \par -}{\f4 \par -\par -}{\f3 groebrestriction} {\f4 := }{\f3 nonnegative} {\f4 -\par -\par -}{\f3 groebrestriction} {\f4 := }{\f3 positive} {\f4 -\par -\par -}{\f3 groebrestriction} {\f4 := }{\f3 zeropoint} {\f4 -\par -\par -}{\f2 \par -With }{\f3 nonnegative} {\f2 branches are excluded where one -polynomial has no nonnegative real zeros; with }{\f3 positive} {\f2 -the restriction is sharpened to positive zeros only. -The restriction }{\f3 zeropoint} {\f2 excludes all branches -which do not have the origin (0,0,...0) in their solution -set. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g17} - -${\footnote \pard\plain \sl240 \fs20 $ Factorizing Groebner bases} - -+{\footnote \pard\plain \sl240 \fs20 + index:0017} -}{\b\f2 Factorizing Groebner bases}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb groebnerf operator} -{\v\f2 groebnerf}{\f2 \par -}{\f2 \tab}{\f2\uldb groebmonfac variable} -{\v\f2 groebmonfac}{\f2 \par -}{\f2 \tab}{\f2\uldb groebresmax variable} -{\v\f2 groebresmax}{\f2 \par -}{\f2 \tab}{\f2\uldb groebrestriction variable} -{\v\f2 groebrestriction}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebprot} - -${\footnote \pard\plain \sl240 \fs20 $ groebprot} - -+{\footnote \pard\plain \sl240 \fs20 + g18:1021} - - K{\footnote \pard\plain \sl240 \fs20 K groebprot switch;switch} - -}{\b\f2 GROEBPROT}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -If }{\f3 groebprot} {\f2 is }{\f3 ON} {\f2 the computation steps during -} -{\f2\uldb preduce}{\v\f2 preduce} -{\f2 , } -{\f2\uldb greduce}{\v\f2 greduce} -{\f2 and } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 -are collected in a list which is assigned to the variable -} -{\f2\uldb groebprotfile}{\v\f2 groebprotfile} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebprotfile} - -${\footnote \pard\plain \sl240 \fs20 $ groebprotfile} - -+{\footnote \pard\plain \sl240 \fs20 + g18:1022} - - K{\footnote \pard\plain \sl240 \fs20 K groebprotfile variable;variable} - -}{\b\f2 GROEBPROTFILE}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -See } -{\f2\uldb groebprot}{\v\f2 groebprot} -{\f2 switch. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # groebnert} - -${\footnote \pard\plain \sl240 \fs20 $ groebnert} - -+{\footnote \pard\plain \sl240 \fs20 + g18:1023} - - K{\footnote \pard\plain \sl240 \fs20 K groebnert operator;operator} - -}{\b\f2 GROEBNERT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 groebnert} {\f4 (\{=,...\}) -\par -\par -\par -\par -}{\f2 where are } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f3 s} {\f2 (simple or indexed variables), - are polynomials. -\par -\par -}{\f3 groebnert} {\f2 is functionally equivalent to a } -{\f2\uldb groebner}{\v\f2 GROEBNER} -{\f2 -call for \{,...\}, but the result is a set of -equations where the left-hand sides are the basis elements while -the right-hand sides are the same values expressed as combinations -of the input formulas, expressed in terms of the names - \par -example: \par -\pard \tx3420 }{\f4 \par - groebnert(\{p1=2*x**2+4*y**2-100,p2=2*x-y+1\}); \par - \par - GB1 := \{2*X - Y + 1=P2, \par - \par - 2 \par - 9*Y - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2\} \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # preducet} - -${\footnote \pard\plain \sl240 \fs20 $ preducet} - -+{\footnote \pard\plain \sl240 \fs20 + g18:1024} - - K{\footnote \pard\plain \sl240 \fs20 K preducet operator;operator} - -}{\b\f2 PREDUCET}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -syntax: \par -}{\f4 \par -\par -}{\f3 preduce} {\f4 (

,\{=...\}) -\par -\par -}{\f2 \par -where

is an expression, are kernels -(simple or indexed variables), -}{\f3 exp} {\f2 are polynomials. -\par -\par -}{\f3 preducet} {\f2 computes the remainder of

modulo \{,...\} -similar to } -{\f2\uldb preduce}{\v\f2 preduce} -{\f2 , but the result is an equation -which expresses the remainder as combination of the polynomials. - \par -example: \par -\pard \tx3420 }{\f4 \par - \par - GB2 := \{G1=2*X - Y + 1,G2=9*Y**2 - 2*Y - 199\} \par - preducet(q=x**2,gb2); \par - \par - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2 \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g18} - -${\footnote \pard\plain \sl240 \fs20 $ Tracing Groebner bases} - -+{\footnote \pard\plain \sl240 \fs20 + index:0018} -}{\b\f2 Tracing Groebner bases}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb groebprot switch} -{\v\f2 groebprot}{\f2 \par -}{\f2 \tab}{\f2\uldb groebprotfile variable} -{\v\f2 groebprotfile}{\f2 \par -}{\f2 \tab}{\f2\uldb groebnert operator} -{\v\f2 groebnert}{\f2 \par -}{\f2 \tab}{\f2\uldb preducet operator} -{\v\f2 preducet}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Module} - -${\footnote \pard\plain \sl240 \fs20 $ Module} - -+{\footnote \pard\plain \sl240 \fs20 + g19:1025} - - K{\footnote \pard\plain \sl240 \fs20 K Module concept;concept} - -}{\b\f2 MODULE}{\f2 \par -\par - -Given a polynomial ring, e.g. R=Z[x,y,...] and an integer n>1. -The vectors with n elements of R form a free MODULE under -elementwise addition and multiplication with elements of R. -\par -\par -For a submodule given by a finite basis a Groebner basis -can be computed, and the facilities of the GROEBNER package -are available except the operators } -{\f2\uldb groebnerf}{\v\f2 groebnerf} -{\f2 -and }{\f3 groesolve} {\f2 . The vectors are encoded using auxiliary -variables which represent the unit vectors in the module. -These are declared in the share variable } -{\f2\uldb gmodule}{\v\f2 gmodule} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gmodule} - -${\footnote \pard\plain \sl240 \fs20 $ gmodule} - -+{\footnote \pard\plain \sl240 \fs20 + g19:1026} - - K{\footnote \pard\plain \sl240 \fs20 K gmodule variable;variable} - -}{\b\f2 GMODULE}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - -The vectors of a free } -{\f2\uldb module}{\v\f2 Module} -{\f2 over a polynomial ring R -are encoded as linear combinations with unit vectors of -M which are represented by auxiliary variables. These -must be collected in the variable }{\f3 gmodule} {\f2 before -any call to an operator of the Groebner package. -\par -\par -\pard \tx3420 }{\f4 \par - torder(\{x,y,v1,v2,v3\})$ \par - gmodule := \{v1,v2,v3\}$ \par - g:=groebner(\{x^2*v1 + y*v2,x*y*v1 - v3,2y*v1 + y*v3\}); \par -\pard \sl240 }{\f2 compute the Groebner basis of the submodule -\par -\par -\pard \tx3420 }{\f4 \par - ([x^2,y,0],[xy,0,-1],[0,2y,y]) \par -\pard \sl240 }{\f2 The members of the list }{\f3 gmodule} {\f2 are automatically -appended to the end of the variable list, if they are not -yet members there. They take part in the actual term ordering. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g19} - -${\footnote \pard\plain \sl240 \fs20 $ Groebner Bases for Modules} - -+{\footnote \pard\plain \sl240 \fs20 + index:0019} -}{\b\f2 Groebner Bases for Modules}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Module concept} -{\v\f2 Module}{\f2 \par -}{\f2 \tab}{\f2\uldb gmodule variable} -{\v\f2 gmodule}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gsort} - -${\footnote \pard\plain \sl240 \fs20 $ gsort} - -+{\footnote \pard\plain \sl240 \fs20 + g20:1027} - - K{\footnote \pard\plain \sl240 \fs20 K distributive polynomials;gsort operator;operator} - -}{\b\f2 GSORT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 gsort} {\f4 (

) -\par -\par -}{\f2 \par -where

is a polynomial or a list of polynomials. -\par -\par -The polynomials are reordered and sorted corresponding to -the current } -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - torder lex; \par - \par - gsort(x**2+2x*y+y**2,\{y,x\}); \par - \par - y**2+2y*x+x**2 \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gsplit} - -${\footnote \pard\plain \sl240 \fs20 $ gsplit} - -+{\footnote \pard\plain \sl240 \fs20 + g20:1028} - - K{\footnote \pard\plain \sl240 \fs20 K distributive polynomials;gsplit operator;operator} - -}{\b\f2 GSPLIT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 gsplit} {\f4 (

[,]); -\par -\par -}{\f2 \par -where

is a polynomial or a list of polynomials. -\par -\par -The polynomial is reordered corresponding to the -the current } -{\f2\uldb term order}{\v\f2 Term_order} -{\f2 and then -separated into leading term and reductum. Result is -a list with the leading term as first and the reductum -as second element. - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - torder lex; \par - \par - gsplit(x**2+2x*y+y**2,\{y,x\}); \par - \par - \{y**2,2y*x+x**2\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gspoly} - -${\footnote \pard\plain \sl240 \fs20 $ gspoly} - -+{\footnote \pard\plain \sl240 \fs20 + g20:1029} - - K{\footnote \pard\plain \sl240 \fs20 K distributive polynomials;gspoly operator;operator} - -}{\b\f2 GSPOLY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par - \par -syntax: \par -}{\f4 }{\f3 gspoly} {\f4 (,); -\par -\par -\par -\par -}{\f2 where and are polynomials. -\par -\par -The }{\f3 subtraction} {\f2 polynomial of p1 and p2 is computed -corresponding to the method of the Buchberger algorithm for -computing }{\f3 groebner bases} {\f2 : p1 and p2 are multiplied -with terms such that when subtracting them the leading terms -cancel each other. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g20} - -${\footnote \pard\plain \sl240 \fs20 $ Computing with distributive polynomials} - -+{\footnote \pard\plain \sl240 \fs20 + index:0020} -}{\b\f2 Computing with distributive polynomials}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb gsort operator} -{\v\f2 gsort}{\f2 \par -}{\f2 \tab}{\f2\uldb gsplit operator} -{\v\f2 gsplit}{\f2 \par -}{\f2 \tab}{\f2\uldb gspoly operator} -{\v\f2 gspoly}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g14} - -${\footnote \pard\plain \sl240 \fs20 $ Groebner package} - -+{\footnote \pard\plain \sl240 \fs20 + index:0014} -}{\b\f2 Groebner package}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Groebner bases introduction} -{\v\f2 Groebner_bases}{\f2 \par -}{\f2 \tab}{\f2\uldb Ideal Parameters concept} -{\v\f2 Ideal_Parameters}{\f2 \par -}{\f2 \tab}{\f2\uldb Term order} -{\v\f2 g15}{\f2 \par -}{\f2 \tab}{\f2\uldb Basic Groebner operators} -{\v\f2 g16}{\f2 \par -}{\f2 \tab}{\f2\uldb Factorizing Groebner bases} -{\v\f2 g17}{\f2 \par -}{\f2 \tab}{\f2\uldb Tracing Groebner bases} -{\v\f2 g18}{\f2 \par -}{\f2 \tab}{\f2\uldb Groebner Bases for Modules} -{\v\f2 g19}{\f2 \par -}{\f2 \tab}{\f2\uldb Computing with distributive polynomials} -{\v\f2 g20}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HEPHYS} - -${\footnote \pard\plain \sl240 \fs20 $ HEPHYS} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1030} - - K{\footnote \pard\plain \sl240 \fs20 K HEPHYS introduction;introduction} - -}{\b\f2 HEPHYS}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -The High-energy Physics package is historic for REDUCE, since REDUCE -originated as a program to aid in computations with Dirac expressions. -The commutation algebra of the gamma matrices is independent of their -representation, and is a natural subject for symbolic mathematics. Dirac -theory is applied to beta decay and the computation of -cross-sections and scattering. The high-energy physics operators are -available in the REDUCE main program, rather than as a module which must -be loaded. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HE_dot} - -${\footnote \pard\plain \sl240 \fs20 $ HE_dot} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1031} - - K{\footnote \pard\plain \sl240 \fs20 K HE-dot operator;operator} - -}{\b\f2 .}{\f2 \tab }{\b\f2 HE-DOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The . operator is used to denote the scalar product of two Lorentz -four-vectors. - \par -syntax: \par -}{\f4 \par -\par - }{\f3 .} {\f4 -\par -\par -}{\f2 \par - must be an identifier declared to be of type }{\f3 vector} {\f2 to have -the scalar product definition. When applied to arguments that are not -vectors, the } -{\f2\uldb cons}{\v\f2 CONS} -{\f2 operator is used, -whose symbol is also ``dot.'' -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector aa,bb,cc; \par - \par -let aa.bb = 0; \par - \par -aa.bb; \par - \par - 0 \par - \par - \par -aa.cc; \par - \par - AA.CC \par - \par - \par -q := aa.cc; \par - \par - Q := AA.CC \par - \par - \par -q; \par - \par - AA.CC \par - \par -\pard \sl240 }{\f2 Since vectors are special high-energy physics entities that do not contain -values, the . product will not return a true scalar product. You can -assign a scalar identifier to the result of a . operation, or assign a . -operation to have the value of the scalar you supply, as shown above. Note -that the result of a . operation is a scalar, not a vector. -\par -\par -The metric tensor g(u,v) can be represented by }{\f3 u.v} {\f2 . If contraction -over the indices is required, }{\f3 u} {\f2 and }{\f3 v} {\f2 should be declared to -be of type } -{\f2\uldb index}{\v\f2 INDEX} -{\f2 . -\par -\par -The dot operator has the highest precedence of the infix operators, so -expressions involving . and other operators have the scalar product -evaluated first before other operations are done. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EPS} - -${\footnote \pard\plain \sl240 \fs20 $ EPS} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1032} - - K{\footnote \pard\plain \sl240 \fs20 K EPS operator;operator} - -}{\b\f2 EPS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 eps} {\f2 operator denotes the completely antisymmetric tensor of -order 4 and its contraction with Lorentz four-vectors, as used in -high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 eps} {\f4 (,,, -) -\par -\par -}{\f2 \par - must be a valid vector expression, and may be an index. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector g0,g1,g2,g3; \par - \par -eps(g1,g0,g2,g3); \par - \par - - EPS(G0,G1,G2,G3); \par - \par - \par -eps(g1,g2,g0,g3); \par - \par - EPS(G0,G1,G2,G3); \par - \par - \par -eps(g1,g2,g3,g1); \par - \par - 0 \par - \par -\pard \sl240 }{\f2 Vector identifiers are ordered alphabetically by REDUCE. When an odd number -of transpositions is required to restore the canonical order to the four -arguments of }{\f3 eps} {\f2 , the term is ordered and carries a minus sign. When an -even number of transpositions is required, the term is returned ordered and -positive. When one of the arguments is repeated, the value 0 is returned. -A contraction of the form -eps(_i j mu nu p_mu q_nu) -is represented by }{\f3 eps(i,j,p,q)} {\f2 when }{\f3 i} {\f2 and }{\f3 j} {\f2 have been -declared to be of type } -{\f2\uldb index}{\v\f2 INDEX} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # G} - -${\footnote \pard\plain \sl240 \fs20 $ G} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1033} - - K{\footnote \pard\plain \sl240 \fs20 K G operator;operator} - -}{\b\f2 G}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 g} {\f2 is an n-ary operator used to denote a product of gamma matrices -contracted with Lorentz four-vectors, in high-energy physics. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 g} {\f4 (, -\{,\}*) -\par -\par -}{\f2 \par - is a scalar identifier representing a fermion line -identifier, can be any valid vector expression, -representing a vector or a gamma matrix. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector aa,bb,cc; \par - \par -vector a; \par - \par -g(line1,aa,bb); \par - \par - AA.BB \par - \par - \par -g(line2,aa,a); \par - \par - 0 \par - \par - \par -g(id,aa,bb,cc); \par - \par - 0 \par - \par - \par -g(li1,aa,bb) + k; \par - \par - AA.BB + K \par - \par - \par -let aa.bb = m*k; \par - \par -g(ln1,aa)*g(ln1,bb); \par - \par - K*M \par - \par - \par -g(ln1,aa)*g(ln2,bb); \par - \par - 0 \par - \par -\pard \sl240 }{\f2 The vector }{\f3 A} {\f2 is reserved in arguments of }{\f3 g} {\f2 to denote the -special gamma matrix gamma_5. It must be declared to -be a vector before you use it. -\par -\par -Gamma matrix expressions are associated with fermion lines in a Feynman -diagram. If more than one line occurs in an expression, the gamma -matrices involved are separate (operating in independent spin space), as -shown in the last two example lines above. A product of gamma matrices -associated with a single line can be entered either as a single }{\f3 g} {\f2 -command with several vector arguments, or as products of separate }{\f3 g} {\f2 -commands each with a single argument. -\par -\par -While the product of vectors is not defined, the product, sum and -difference of several gamma expressions are defined, as is the product of -a gamma expression with a scalar. If an expression involving gamma -matrices includes a scalar, the scalar is treated as if it were the -product of itself with a unit 4 x 4 matrix. -\par -\par -Dirac expressions are evaluated by computing the trace of the expression -using the commutation algebra of gamma matrices. The algorithms used are -described in articles by J. S. R. Chisholm in Vol. -30, p. 426, 1963, and J. Kahane, , -Vol. 9, p. 1732, 1968. The trace is then divided by 4 to distinguish -between the trace of a scalar and the trace of an expression that is the -product of a scalar with a unit 4 x 4 matrix. -\par -\par -Trace calculations may be prevented over any line identifier by declaring it -to be } -{\f2\uldb nospur}{\v\f2 NOSPUR} -{\f2 . If it is later desired to evaluate these traces, -the declaration can be undone with the } -{\f2\uldb spur}{\v\f2 SPUR} -{\f2 declaration. -\par -\par -The notation of Bjorken and Drell, -1964, is assumed in all operations involving gamma matrices. For an -example of the use of }{\f3 g} {\f2 in a calculation, see the . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INDEX} - -${\footnote \pard\plain \sl240 \fs20 $ INDEX} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1034} - - K{\footnote \pard\plain \sl240 \fs20 K INDEX declaration;declaration} - -}{\b\f2 INDEX}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The declaration }{\f3 index} {\f2 flags a four-vector as an index for subsequent -high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 index} {\f4 \{,\}* -\par -\par -}{\f2 \par - must have been declared of type }{\f3 vector} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector aa,bb,cc; \par - \par -index uu; \par - \par -let aa.bb = 0; \par - \par -(aa.uu)*(bb.uu); \par - \par - 0 \par - \par - \par -(aa.uu)*(cc.uu); \par - \par - AA.CC \par - \par -\pard \sl240 }{\f2 Index variables are used to represent contraction over components of -vectors when scalar products are taken by the . operator, as well as -indicating contraction for the } -{\f2\uldb eps}{\v\f2 EPS} -{\f2 operator or metric tensor. -\par -\par -The special status of a vector as an index can be revoked with the -declaration } -{\f2\uldb remind}{\v\f2 REMIND} -{\f2 . The object remains a vector, however. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MASS} - -${\footnote \pard\plain \sl240 \fs20 $ MASS} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1035} - - K{\footnote \pard\plain \sl240 \fs20 K MASS command;command} - -}{\b\f2 MASS}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 mass} {\f2 command associates a scalar variable as a mass with -the corresponding vector variable, in high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mass} {\f4 }{\f3 =} {\f4 -\{,}{\f3 =} {\f4 \}* -\par -\par -}{\f2 \par - can be a declared vector variable; }{\f3 mass} {\f2 will declare -it to be of type }{\f3 vector} {\f2 if it is not. This may override an existing -matrix variable by that name. must be a scalar variable. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector bb,cc; \par - \par -mass cc=m; \par - \par -mshell cc; \par - \par -cc.cc; \par - \par - 2 \par - M \par - \par -\pard \sl240 }{\f2 Once a mass has been attached to a vector with a }{\f3 mass} {\f2 declaration, -the } -{\f2\uldb mshell}{\v\f2 MSHELL} -{\f2 declaration puts the associated particle ``on the mass -shell.'' Subsequent scalar (.) products of the vector with itself will be -replaced by the square of the mass expression. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MSHELL} - -${\footnote \pard\plain \sl240 \fs20 $ MSHELL} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1036} - - K{\footnote \pard\plain \sl240 \fs20 K MSHELL command;command} - -}{\b\f2 MSHELL}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 mshell} {\f2 command puts particles on the mass shell in high-energy -physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mshell} {\f4 \{,\}* -\par -\par -}{\f2 \par - must have had a mass attached to it by a } -{\f2\uldb mass}{\v\f2 MASS} -{\f2 -declaration. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector v1,v2; \par - \par -mass v1=m,v2=q; \par - \par -mshell v1; \par - \par -v1.v1; \par - \par - 2 \par - M \par - \par - \par -v2.v2; \par - \par - V2.V2 \par - \par - \par -mshell v2; \par - \par -v1.v1*v2.v2; \par - \par - 2 2 \par - M *Q \par - \par -\pard \sl240 }{\f2 Even though a mass is attached to a vector variable representing a -particle, the replacement does not take place until the }{\f3 mshell} {\f2 -declaration is given for that vector variable. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NOSPUR} - -${\footnote \pard\plain \sl240 \fs20 $ NOSPUR} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1037} - - K{\footnote \pard\plain \sl240 \fs20 K NOSPUR declaration;declaration} - -}{\b\f2 NOSPUR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 nospur} {\f2 declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 nospur} {\f4 \{,\}* -\par -\par -}{\f2 \par - is a scalar identifier that will be used as a line identifier. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vector a1,b1,c1; \par - \par -g(line1,a1,b1)*g(line2,b1,c1); \par - \par - A1.B1*B1.C1 \par - \par - \par -nospur line2; \par - \par -g(line1,a1,b1)*g(line2,b1,c1); \par - \par - A1.B1*G(LINE2,B1,C1) \par - \par -\pard \sl240 }{\f2 Nospur declarations can be removed by making the declaration } -{\f2\uldb spur}{\v\f2 SPUR} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REMIND} - -${\footnote \pard\plain \sl240 \fs20 $ REMIND} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1038} - - K{\footnote \pard\plain \sl240 \fs20 K REMIND declaration;declaration} - -}{\b\f2 REMIND}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 remind} {\f2 declaration removes the special status of its arguments -as indices, which was set in the } -{\f2\uldb index}{\v\f2 INDEX} -{\f2 declaration, in -high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 remind} {\f4 \{,\}* -\par -\par -}{\f2 \par - must have been declared to be of type } -{\f2\uldb index}{\v\f2 INDEX} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SPUR} - -${\footnote \pard\plain \sl240 \fs20 $ SPUR} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1039} - - K{\footnote \pard\plain \sl240 \fs20 K SPUR declaration;declaration} - -}{\b\f2 SPUR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 spur} {\f2 declaration removes the special exemption from trace -calculations that was declared by } -{\f2\uldb nospur}{\v\f2 NOSPUR} -{\f2 , in high-energy physics -calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 spur} {\f4 \{,\}* -\par -\par -}{\f2 \par - must be a line-identifier that has previously been declared -}{\f3 nospur} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # VECDIM} - -${\footnote \pard\plain \sl240 \fs20 $ VECDIM} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1040} - - K{\footnote \pard\plain \sl240 \fs20 K VECDIM command;command} - -}{\b\f2 VECDIM}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The command }{\f3 vecdim} {\f2 changes the vector dimension from 4 to an arbitrary -integer or symbol. Used in high-energy physics calculations. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 vecdim} {\f4 -\par -\par -}{\f2 \par - must be either an integer or a valid scalar identifier that -does not have a floating-point value. -\par -\par -The } -{\f2\uldb eps}{\v\f2 EPS} -{\f2 operator and the gamma_5 -symbol (}{\f3 A} {\f2 ) are not properly defined in anything except four -dimensions and will print an error message if you use them that way. The -other high-energy physics operators should work without problem. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # VECTOR} - -${\footnote \pard\plain \sl240 \fs20 $ VECTOR} - -+{\footnote \pard\plain \sl240 \fs20 + g21:1041} - - K{\footnote \pard\plain \sl240 \fs20 K VECTOR declaration;declaration} - -}{\b\f2 VECTOR}{\f2 \tab \tab \tab \tab }{\b\f2 declaration}{\f2 \par -\par - -The }{\f3 vector} {\f2 declaration declares that its arguments are of type }{\f3 vector} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 vector} {\f4 \{,\}* -\par -\par -}{\f2 \par - must be a valid REDUCE identifier. It may have already been -used for a matrix, array, operator or scalar variable. After an identifier -has been declared to be a vector, it may not be used as a scalar variable. -\par -\par -Vectors are special entities for high-energy physics calculations. You -cannot put values into their coordinates; they do not have coordinates. -They are legal arguments for the high-energy physics operators -} -{\f2\uldb eps}{\v\f2 EPS} -{\f2 , } -{\f2\uldb g}{\v\f2 G} -{\f2 and }{\f3 .} {\f2 (dot). Vector variables are -used to represent gamma matrices and gamma matrices contracted with Lorentz -4-vectors, since there are no Dirac variables per se in the system. -Vectors do follow the usual vector rules for arithmetic operations: -}{\f3 +} {\f2 and }{\f3 -} {\f2 operate upon two or more vectors, producing a -vector; }{\f3 *} {\f2 and }{\f3 /} {\f2 cannot be used between vectors; the -scalar product is represented by the . operator; and the product of a -scalar and vector expression is well defined, and is a vector. -\par -\par -You can represent components of vectors by including representations of unit -vectors in your system. For instance, letting }{\f3 E0} {\f2 represent the unit -vector (1,0,0,0), the command -\par -\par -}{\f3 V1.E0 := 0;} {\f2 would set up the substitution of zero for the first component of the vector -}{\f3 V1} {\f2 . -\par -\par -Identifiers that are declared by the }{\f3 index} {\f2 and }{\f3 mass} {\f2 declarations are -automatically declared to be vectors. -\par -\par -The following errors can occur in calculations using the high energy -physics package: -\par -\par -}{\f3 A represents only gamma5 in vector expressions} {\f2 You have tried to use A in some way other than gamma5 in a -high-energy physics expression. -\par -\par -\par -}{\f3 Gamma5 not allowed unless vecdim is 4} {\f2 You have used gamma_5 in a high-energy physics -computation involving a vector dimension other than 4. -\par -\par -\par - }{\f3 has no mass} {\f2 -\par -\par -One of the arguments to } -{\f2\uldb mshell}{\v\f2 MSHELL} -{\f2 has had no mass assigned to it, in -high-energy physics calculations. -\par -\par -\par -}{\f3 Missing arguments for G operator} {\f2 A line symbol is missing in a gamma matrix expression in high-energy physics -calculations. -\par -\par -\par -}{\f3 Unmatched index} {\f2 -\par -\par -The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. -\par -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g21} - -${\footnote \pard\plain \sl240 \fs20 $ High Energy Physics} - -+{\footnote \pard\plain \sl240 \fs20 + index:0021} -}{\b\f2 High Energy Physics}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb HEPHYS introduction} -{\v\f2 HEPHYS}{\f2 \par -}{\f2 \tab}{\f2\uldb HE-dot operator} -{\v\f2 HE_dot}{\f2 \par -}{\f2 \tab}{\f2\uldb EPS operator} -{\v\f2 EPS}{\f2 \par -}{\f2 \tab}{\f2\uldb G operator} -{\v\f2 G}{\f2 \par -}{\f2 \tab}{\f2\uldb INDEX declaration} -{\v\f2 INDEX}{\f2 \par -}{\f2 \tab}{\f2\uldb MASS command} -{\v\f2 MASS}{\f2 \par -}{\f2 \tab}{\f2\uldb MSHELL command} -{\v\f2 MSHELL}{\f2 \par -}{\f2 \tab}{\f2\uldb NOSPUR declaration} -{\v\f2 NOSPUR}{\f2 \par -}{\f2 \tab}{\f2\uldb REMIND declaration} -{\v\f2 REMIND}{\f2 \par -}{\f2 \tab}{\f2\uldb SPUR declaration} -{\v\f2 SPUR}{\f2 \par -}{\f2 \tab}{\f2\uldb VECDIM command} -{\v\f2 VECDIM}{\f2 \par -}{\f2 \tab}{\f2\uldb VECTOR declaration} -{\v\f2 VECTOR}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Numeric_Package} - -${\footnote \pard\plain \sl240 \fs20 $ Numeric_Package} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1042} - - K{\footnote \pard\plain \sl240 \fs20 K Numeric Package introduction;introduction} - -}{\b\f2 NUMERIC PACKAGE}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use -the } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 mode arithmetic of REDUCE, including -the variable precision feature which is exploited in some -algorithms in an adaptive manner in order to reach the -desired accuracy. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Interval} - -${\footnote \pard\plain \sl240 \fs20 $ Interval} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1043} - - K{\footnote \pard\plain \sl240 \fs20 K Interval type;type} - -}{\b\f2 INTERVAL}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -Intervals are generally coded as lower bound and -upper bound connected by the operator }{\f3 ..} {\f2 , usually -associated to a variable in an -equation. -\par -\par - \par -syntax: \par -}{\f4 = ( .. ) -\par -\par -}{\f2 \par -where is a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 and , are -numbers or expression which evaluate to numbers with <=. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 means that the variable x is taken in the range from 2.5 up to -3.5. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # numeric_accuracy} - -${\footnote \pard\plain \sl240 \fs20 $ numeric_accuracy} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1044} - - K{\footnote \pard\plain \sl240 \fs20 K numeric accuracy concept;concept} - -}{\b\f2 NUMERIC ACCURACY}{\f2 \par -\par - -The keyword parameters }{\f3 accuracy=a} {\f2 and }{\f3 iterations=i} {\f2 , -where }{\f3 a} {\f2 and }{\f3 i} {\f2 must be positive integer numbers, control the -iterative algorithms: the iteration is continued until -the local error is below 10**-a; if that is impossible -within }{\f3 i} {\f2 steps, the iteration is terminated with an -error message. The values reached so far are then returned -as the result. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRNUMERIC} - -${\footnote \pard\plain \sl240 \fs20 $ TRNUMERIC} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1045} - - K{\footnote \pard\plain \sl240 \fs20 K TRNUMERIC switch;switch} - -}{\b\f2 TRNUMERIC}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - -Normally the algorithms produce only a minimum of printed -output during their operation. In cases of an unsuccessful -or unexpected long operation a }{\f3 trace of the iteration} {\f2 can be -printed by setting }{\f3 trnumeric} {\f2 }{\f3 on} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # num_min} - -${\footnote \pard\plain \sl240 \fs20 $ num_min} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1046} - - K{\footnote \pard\plain \sl240 \fs20 K Fletcher Reeves;steepest descent;minimum;num_min operator;operator} - -}{\b\f2 NUM_MIN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The Fletcher Reeves version of the }{\f3 steepest descent} {\f2 -algorithms is used to find the }{\f3 minimum} {\f2 of a -function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be -specified; if not, random values are taken instead. -The steepest descent algorithms in general find only local -minima. - \par -\par - \par -syntax: \par -}{\f4 }{\f3 num_min} {\f4 (, - [=] [,[=] ... - [,accuracy=] [,iterations=]) -\par -\par -or -\par -\par -}{\f3 num_min} {\f4 (exp, \{ - [=] [,[=] ...] \} - [,accuracy=] [,iterations=]) -\par -\par -}{\f2 \par -where is a function expression, - are the variables in and - are the (optional) start values. -For and see } -{\f2\uldb numeric accuracy}{\v\f2 numeric_accuracy} -{\f2 . -\par -\par -}{\f3 Num_min} {\f2 tries to find the next local minimum along the descending -path starting at the given point. The result is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -with the minimum function value as first element followed by a list -of } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f3 s} {\f2 , where the variables are equated to the coordinates -of the result point. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -num_min(sin(x)+x/5, x) \par - \par - \{4.9489585606,\{X=29.643767785\}\} \par - \par - \par -num_min(sin(x)+x/5, x=0) \par - \par - \{ - 1.3342267466,\{X= - 1.7721582671\}\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # num_solve} - -${\footnote \pard\plain \sl240 \fs20 $ num_solve} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1047} - - K{\footnote \pard\plain \sl240 \fs20 K Jacobian matrix;root;Newton iteration;equation system;equation solving;num_solve operator;operator} - -}{\b\f2 NUM_SOLVE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -An adaptively damped Newton iteration is used to find -an approximative root of a function (function vector) or the -solution of an } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 (equation system). The expressions -must have continuous derivatives for all variables. -A starting point for the iteration can be given. If not given -random values are taken instead. When the number of -forms is not equal to the number of variables, the -Newton method cannot be applied. Then the minimum -of the sum of absolute squares is located instead. -\par -\par -With } -{\f2\uldb complex}{\v\f2 COMPLEX} -{\f2 on, solutions with imaginary parts can be -found, if either the expression(s) or the starting point -contain a nonzero imaginary part. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 num_solve} {\f4 (, [=][,accuracy=][,iterations=]) -\par -\par -or -\par -\par -}{\f3 num_solve} {\f4 (\{,...,\}, [=],...,[=] - [,accuracy=][,iterations=]) -\par -\par -or -\par -\par -}{\f3 num_solve} {\f4 (\{,...,\}, \{[=],...,[=]\} - [,accuracy=][,iterations=]) - \par -\par -\par -\par -}{\f2 where are function expressions, - are the variables, - are optional start values. -For and see } -{\f2\uldb numeric accuracy}{\v\f2 numeric_accuracy} -{\f2 . - \par -\par -}{\f3 num_solve} {\f2 tries to find a zero/solution of the expression(s). -Result is a list of equations, where the variables are -equated to the coordinates of the result point. - \par -\par -The }{\f3 Jacobian matrix} {\f2 is stored as side effect the shared -variable }{\f3 jacobian} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -num_solve(\{sin x=cos y, x + y = 1\},\{x=1,y=2\}); \par - \par - \par - \{X= - 1.8561957251,Y=2.856195584\} \par - \par - \par -jacobian; \par - \par - [COS(X) SIN(Y)] \par - [ ] \par - [ 1 1 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # num_int} - -${\footnote \pard\plain \sl240 \fs20 $ num_int} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1048} - - K{\footnote \pard\plain \sl240 \fs20 K integration;num_int operator;operator} - -}{\b\f2 NUM_INT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -For the numerical evaluation of univariate integrals -over a finite interval the following strategy is used: -If } -{\f2\uldb int}{\v\f2 INT} -{\f2 finds a formal antiderivative - which is bounded in the integration interval, this - is evaluated and the end points and the difference - is returned. -Otherwise a } -{\f2\uldb Chebyshev fit}{\v\f2 Chebyshev_fit} -{\f2 is computed, - starting with order 20, eventually up to order 80. - If that is recognized as sufficiently convergent - it is used for computing the integral by directly - integrating the coefficient sequence. -If none of these methods is successful, an - adaptive multilevel quadrature algorithm is used. -\par -\par -For multivariate integrals only the adaptive quadrature is used. -This algorithm tolerates isolated singularities. -The value }{\f3 iterations} {\f2 here limits the number of -local interval intersection levels. - is a measure for the relative total discretization -error (comparison of order 1 and order 2 approximations). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 num_int} {\f4 (,=( .. ) - [,=( .. ),...] - [,accuracy=][,iterations=]) -\par -\par -}{\f2 \par -where is the function to be integrated, - are the integration variables, - are the lower bounds, - are the upper bounds. - \par -\par -Result is the value of the integral. - \par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -num_int(sin x,x=(0 .. 3.1415926)); \par - \par - 2.0000010334 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # num_odesolve} - -${\footnote \pard\plain \sl240 \fs20 $ num_odesolve} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1049} - - K{\footnote \pard\plain \sl240 \fs20 K ODE;initial value problem;Runge-Kutta;num_odesolve operator;operator} - -}{\b\f2 NUM_ODESOLVE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Runge-Kutta} {\f2 method of order 3 finds an approximate graph for -the solution of real }{\f3 ODE initial value problem} {\f2 . - \par -\par - \par -syntax: \par -}{\f4 }{\f3 num_odesolve} {\f4 (,=, - =( .. ) - [,accuracy=][,iterations=]) -\par -\par -or -\par -\par -}{\f3 num_odesolve} {\f4 (\{,,...\}, - \{=,=,...\} - =( .. ) - [,accuracy=][,iterations=]) -\par -\par -\par -\par -}{\f2 where - and specify the dependent variable(s) -and the starting point value (vector), -, and specify the independent variable -and the integration interval (starting point and end point), - are equations or expressions which -contain the first derivative of the independent variable -with respect to the dependent variable. - \par -\par -The ODEs are converted to an explicit form, which then is -used for a Runge Kutta iteration over the given range. The -number of steps is controlled by the value of -(default: 20). If the steps are too coarse to reach the desired -accuracy in the neighborhood of the starting point, the number is -increased automatically. - \par -\par -Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -depend(y,x); \par - \par -num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5); \par - \par - \par - ,\{0.2,1.2214\},\{0.4,1.49181796\},\{0.6,1.8221064563\}, \par - \{0.8,2.2255208258\},\{1.0,2.7182511366\}\} \par - \par -\pard \sl240 }{\f2 In most cases you must declare the dependency relation -between the variables explicitly using } -{\f2\uldb depend}{\v\f2 DEPEND} -{\f2 ; -otherwise the formal derivative might be converted to zero. -\par -\par -The operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 is used to convert the form into -an explicit ODE. If that process fails or if it has no unique result, -the evaluation is stopped with an error message. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # bounds} - -${\footnote \pard\plain \sl240 \fs20 $ bounds} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1050} - - K{\footnote \pard\plain \sl240 \fs20 K bounds operator;operator} - -}{\b\f2 BOUNDS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -Upper and lower bounds of a real valued function over an -} -{\f2\uldb interval}{\v\f2 Interval} -{\f2 or a rectangular multivariate domain are computed -by the operator }{\f3 bounds} {\f2 . The algorithmic basis is the computation -with inequalities: starting from the interval(s) of the -variables, the bounds are propagated in the expression -using the rules for inequality computation. Some knowledge -about the behavior of special functions like ABS, SIN, COS, EXP, LOG, -fractional exponentials etc. is integrated and can be evaluated -if the operator }{\f3 bounds} {\f2 is called with rounded mode on -(otherwise only algebraic evaluation rules are available). - \par -\par -If }{\f3 bounds} {\f2 finds a singularity within an interval, the evaluation -is stopped with an error message indicating the problem part -of the expression. - \par -\par - \par -syntax: \par -}{\f4 }{\f3 bounds} {\f4 (,=( .. ) - [,=( .. ) ...]) -\par -\par -or -\par -\par -}{\f3 bounds} {\f4 (,\{=( .. ) - [,=( .. ) ...]\}) -\par -\par -\par -\par -}{\f2 where is the function to be investigated, - are the variables of , - and specify the area as set of } -{\f2\uldb interval}{\v\f2 Interval} -{\f3 s} {\f2 . -\par -\par -}{\f3 bounds} {\f2 computes upper and lower bounds for the expression in the -given area. An } -{\f2\uldb interval}{\v\f2 Interval} -{\f2 is returned. - \par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -bounds(sin x,x=(1 .. 2)); \par - \par - -1 .. 1 \par - \par - \par -on rounded; \par - \par -bounds(sin x,x=(1 .. 2)); \par - \par - 0.84147098481 .. 1 \par - \par - \par -bounds(x**2+x,x=(-0.5 .. 0.5)); \par - \par - - 0.25 .. 0.75 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Chebyshev_fit} - -${\footnote \pard\plain \sl240 \fs20 $ Chebyshev_fit} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1051} - - K{\footnote \pard\plain \sl240 \fs20 K approximation;Chebyshev fit concept;concept} - -}{\b\f2 CHEBYSHEV FIT}{\f2 \par -\par - - \par -\par -The operator family }{\f3 Chebyshev_...} {\f2 implements approximation -and evaluation of functions by the Chebyshev method. -Let }{\f3 T(n,a,b,x)} {\f2 be the Chebyshev polynomial of order }{\f3 n} {\f2 -transformed to the interval }{\f3 (a,b)} {\f2 . -Then a function }{\f3 f(x)} {\f2 can be -approximated in }{\f3 (a,b)} {\f2 by a series -\par -\par -\pard \tx3420 }{\f4 \par - for i := 0:n sum c(i)*T(i,a,b,x) \par -\pard \sl240 }{\f2 The operator }{\f3 chebyshev_fit} {\f2 computes this approximation and -returns a list, which has as first element the sum expressed -as a polynomial and as second element the sequence -of Chebyshev coefficients. -}{\f3 Chebyshev_df} {\f2 and }{\f3 Chebyshev_int} {\f2 transform a Chebyshev -coefficient list into the coefficients of the corresponding -derivative or integral respectively. For evaluating a Chebyshev -approximation at a given point in the basic interval the -operator }{\f3 Chebyshev_eval} {\f2 can be used. -}{\f3 Chebyshev_eval} {\f2 is based on a recurrence relation which is -in general more stable than a direct evaluation of the -complete polynomial. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 chebyshev_fit} {\f4 (,=( .. ),) -\par -\par -}{\f3 chebyshev_eval} {\f4 (,=( .. ), - =) -\par -\par -}{\f3 chebyshev_df} {\f4 (,=( .. )) -\par -\par -}{\f3 chebyshev_int} {\f4 (,=( .. )) -\par -\par -}{\f2 \par -where is an algebraic expression (the target function), - is the variable of , - and are -numerical real values which describe an } -{\f2\uldb interval}{\v\f2 Interval} -{\f2 < , -the integer is the approximation order (set to 20 if missing), - is a number in the interval and is -a series of Chebyshev coefficients. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on rounded; \par - \par - \par -w:=chebyshev_fit(sin x/x,x=(1 .. 3),5); \par - \par - \par - 3 2 \par - w := \{0.03824*x - 0.2398*x + 0.06514*x + 0.9778, \par - \{0.8991,-0.4066,-0.005198,0.009464,-0.00009511\}\} \par - \par - \par -chebyshev_eval(second w, x=(1 .. 3), x=2.1); \par - \par - \par - 0.4111 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # num_fit} - -${\footnote \pard\plain \sl240 \fs20 $ num_fit} - -+{\footnote \pard\plain \sl240 \fs20 + g22:1052} - - K{\footnote \pard\plain \sl240 \fs20 K least squares;approximation;num_fit operator;operator} - -}{\b\f2 NUM_FIT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 num_fit} {\f2 finds for a set of -points the linear combination of a given set of -functions (function basis) which approximates the -points best under the objective of the }{\f3 least squares} {\f2 -criterion (minimum of the sum of the squares of the deviation). -The solution is found as zero of the -gradient vector of the sum of squared errors. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 num_fit} {\f4 (,,=) -\par -\par -}{\f2 \par -where is a list of numeric values, - is a variable used for the approximation, - is a list of coordinate values which correspond to -, - is a set of functions varying in }{\f3 var} {\f2 which is used - for the approximation. - \par -\par -The result is a list containing as first element the -function which approximates the given values, and as -second element a list of coefficients which were used -to build this function from the basis. - \par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -pts:=for i:=1 step 1 until 5 collect i$ \par - \par -vals:=for i:=1 step 1 until 5 collect \par - \par - for j:=1:i product j$ \par - \par -num_fit(vals,\{1,x,x**2\},x=pts); \par - \par - 2 \par - \{14.571428571*X - 61.428571429*X + 54.6,\{54.6, \par - - 61.428571429,14.571428571\}\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g22} - -${\footnote \pard\plain \sl240 \fs20 $ Numeric Package} - -+{\footnote \pard\plain \sl240 \fs20 + index:0022} -}{\b\f2 Numeric Package}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Numeric Package introduction} -{\v\f2 Numeric_Package}{\f2 \par -}{\f2 \tab}{\f2\uldb Interval type} -{\v\f2 Interval}{\f2 \par -}{\f2 \tab}{\f2\uldb numeric accuracy concept} -{\v\f2 numeric_accuracy}{\f2 \par -}{\f2 \tab}{\f2\uldb TRNUMERIC switch} -{\v\f2 TRNUMERIC}{\f2 \par -}{\f2 \tab}{\f2\uldb num_min operator} -{\v\f2 num_min}{\f2 \par -}{\f2 \tab}{\f2\uldb num_solve operator} -{\v\f2 num_solve}{\f2 \par -}{\f2 \tab}{\f2\uldb num_int operator} -{\v\f2 num_int}{\f2 \par -}{\f2 \tab}{\f2\uldb num_odesolve operator} -{\v\f2 num_odesolve}{\f2 \par -}{\f2 \tab}{\f2\uldb bounds operator} -{\v\f2 bounds}{\f2 \par -}{\f2 \tab}{\f2\uldb Chebyshev fit concept} -{\v\f2 Chebyshev_fit}{\f2 \par -}{\f2 \tab}{\f2\uldb num_fit operator} -{\v\f2 num_fit}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Roots_Package} - -${\footnote \pard\plain \sl240 \fs20 $ Roots_Package} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1053} - - K{\footnote \pard\plain \sl240 \fs20 K getroot;firstroot;rootval;rootsat-prec;rlrootno;isolater;polynomial;roots;Roots Package introduction;introduction} - -}{\b\f2 ROOTS PACKAGE}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - - \par -\par -The root finding package is designed so that it can -be used to find some or all of the roots of univariate -polynomials with real or complex coefficients, to the accuracy -specified by the user. -\par -\par -Not all operators of }{\f3 roots package} {\f2 are described here. For using -the operators -\par -\par -}{\f3 isolater} {\f2 (intervals isolating real roots) -\par -\par -}{\f3 rlrootno} {\f2 (number of real roots in an interval) -\par -\par -}{\f3 rootsat-prec} {\f2 (roots at system precision) -\par -\par -}{\f3 rootval} {\f2 (result in equation form) -\par -\par -}{\f3 firstroot} {\f2 (computing only one root) -\par -\par -}{\f3 getroot} {\f2 (selecting roots from a collection) -\par -\par -please consult the full documentation of the package. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MKPOLY} - -${\footnote \pard\plain \sl240 \fs20 $ MKPOLY} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1054} - - K{\footnote \pard\plain \sl240 \fs20 K interpolation;roots;polynomial;MKPOLY operator;operator} - -}{\b\f2 MKPOLY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -Given a roots list as returned by } -{\f2\uldb roots}{\v\f2 ROOTS} -{\f2 , -the operator }{\f3 mkpoly} {\f2 constructs a -polynomial which has these numbers as roots. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 mkpoly} {\f4 -\par -\par -}{\f2 \par -where is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 with equations, which -all have the same } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 on their left-hand sides -and numbers as right-hand sides. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -mkpoly\{x=1,x=-2,x=i,x=-i\}; \par - \par - x**4 + x**3 - x**2 + x - 2 \par - \par -\pard \sl240 }{\f2 Note that this polynomial is unique only up to a numeric -factor. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NEARESTROOT} - -${\footnote \pard\plain \sl240 \fs20 $ NEARESTROOT} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1055} - - K{\footnote \pard\plain \sl240 \fs20 K solve;roots;NEARESTROOT operator;operator} - -}{\b\f2 NEARESTROOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 nearestroot} {\f2 finds one root of a polynomial -with an iteration using a given starting point. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 nearestroot} {\f4 (

,) -\par -\par -}{\f2 \par -where

is a univariate polynomial -and is a number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -nearestroot(x^2+2,2); \par - \par - \{x=1.41421*i\} \par - \par -\pard \sl240 }{\f2 The minimal accuracy of the result values is controlled by -} -{\f2\uldb rootacc}{\v\f2 ROOTACC} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REALROOTS} - -${\footnote \pard\plain \sl240 \fs20 $ REALROOTS} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1056} - - K{\footnote \pard\plain \sl240 \fs20 K solve;roots;REALROOTS operator;operator} - -}{\b\f2 REALROOTS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 realroots} {\f2 finds that real roots of a polynomial -to an accuracy that is sufficient to separate them and which is -a minimum of 6 decimal places. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 realroots} {\f4 (

) or -\par -\par -}{\f3 realroots} {\f4 (

,,) -\par -\par -}{\f2 \par -where

is a univariate polynomial. -The optional parameters and classify -an interval: if given, exactly the real roots in this -interval will be returned. and -can also take the values }{\f3 infinity} {\f2 or }{\f3 -infinity} {\f2 . -If omitted all real roots will be returned. -Result is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -of equations which represent the roots of the polynomial at the -given accuracy. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -realroots(x^5-2); \par - \par - \{x=1.1487\} \par - \par - \par -realroots(x^3-104*x^2+403*x-300,2,infinity); \par - \par - \par - \{x=3.0,x=100.0\} \par - \par - \par -realroots(x^3-104*x^2+403*x-300,-infinity,2); \par - \par - \par - \{x=1\} \par - \par -\pard \sl240 }{\f2 The minimal accuracy of the result values is controlled by -} -{\f2\uldb rootacc}{\v\f2 ROOTACC} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOTACC} - -${\footnote \pard\plain \sl240 \fs20 $ ROOTACC} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1057} - - K{\footnote \pard\plain \sl240 \fs20 K accuracy;roots;ROOTACC operator;operator} - -}{\b\f2 ROOTACC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 rootacc} {\f2 allows you to set the accuracy -up to which the roots package computes its results. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 rootacc} {\f4 () -\par -\par -}{\f2 \par -Here is an integer value. The internal accuracy of -the }{\f3 roots} {\f2 package is adjusted to a value of -}{\f3 max(6,n)} {\f2 . The default value is }{\f3 6} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOTS} - -${\footnote \pard\plain \sl240 \fs20 $ ROOTS} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1058} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;roots;ROOTS operator;operator} - -}{\b\f2 ROOTS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 roots} {\f2 -is the main top level function of the roots package. -It will find all roots, real and complex, of the polynomial p -to an accuracy that is sufficient to separate them and which is -a minimum of 6 decimal places. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 roots} {\f4 (

) -\par -\par -}{\f2 \par -where

is a univariate polynomial. Result is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -of equations which represent the roots of the polynomial at the -given accuracy. In addition, }{\f3 roots} {\f2 stores -separate lists of real roots and complex roots in the global -variables } -{\f2\uldb rootsreal}{\v\f2 ROOTSREAL} -{\f2 and } -{\f2\uldb rootscomplex}{\v\f2 ROOTSCOMPLEX} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -roots(x^5-2); \par - \par - \{x=-0.929316 + 0.675188*i, \par - x=-0.929316 - 0.675188*i, \par - x=0.354967 + 1.09248*i, \par - x=0.354967 - 1.09248*i, \par - x=1.1487\} \par - \par -\pard \sl240 }{\f2 The minimal accuracy of the result values is controlled by -} -{\f2\uldb rootacc}{\v\f2 ROOTACC} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOT\_VAL} - -${\footnote \pard\plain \sl240 \fs20 $ ROOT_VAL} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1059} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;roots;ROOT_VAL operator;operator} - -}{\b\f2 ROOT\_VAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The operator }{\f3 root_val} {\f2 computes the roots of a -univariate polynomial at system precision -(or greater if required for root separation) and presents -its result as a list of numbers. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 roots} {\f4 (

) -\par -\par -}{\f2 \par -where

is a univariate polynomial. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -root_val(x^5-2); \par - \par - \{-0.929316490603 + 0.6751879524*i, \par - -0.929316490603 - 0.6751879524*i, \par - 0.354967313105 + 1.09247705578*i, \par - 0.354967313105 - 1.09247705578*i, \par - 1.148698355\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOTSCOMPLEX} - -${\footnote \pard\plain \sl240 \fs20 $ ROOTSCOMPLEX} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1060} - - K{\footnote \pard\plain \sl240 \fs20 K complex;roots;ROOTSCOMPLEX variable;variable} - -}{\b\f2 ROOTSCOMPLEX}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -When the operator } -{\f2\uldb roots}{\v\f2 ROOTS} -{\f2 is called the complex -roots are collected in the global variable }{\f3 rootscomplex} {\f2 -as } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOTSREAL} - -${\footnote \pard\plain \sl240 \fs20 $ ROOTSREAL} - -+{\footnote \pard\plain \sl240 \fs20 + g23:1061} - - K{\footnote \pard\plain \sl240 \fs20 K complex;roots;ROOTSREAL variable;variable} - -}{\b\f2 ROOTSREAL}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -When the operator } -{\f2\uldb roots}{\v\f2 ROOTS} -{\f2 is called the real -roots are collected in the global variable }{\f3 rootreal} {\f2 -as } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g23} - -${\footnote \pard\plain \sl240 \fs20 $ Roots Package} - -+{\footnote \pard\plain \sl240 \fs20 + index:0023} -}{\b\f2 Roots Package}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Roots Package introduction} -{\v\f2 Roots_Package}{\f2 \par -}{\f2 \tab}{\f2\uldb MKPOLY operator} -{\v\f2 MKPOLY}{\f2 \par -}{\f2 \tab}{\f2\uldb NEARESTROOT operator} -{\v\f2 NEARESTROOT}{\f2 \par -}{\f2 \tab}{\f2\uldb REALROOTS operator} -{\v\f2 REALROOTS}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOTACC operator} -{\v\f2 ROOTACC}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOTS operator} -{\v\f2 ROOTS}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOT\_VAL operator} -{\v\f2 ROOT\_VAL}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOTSCOMPLEX variable} -{\v\f2 ROOTSCOMPLEX}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOTSREAL variable} -{\v\f2 ROOTSREAL}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Special_Function_Package} - -${\footnote \pard\plain \sl240 \fs20 $ Special_Function_Package} - -+{\footnote \pard\plain \sl240 \fs20 + g24:1062} - - K{\footnote \pard\plain \sl240 \fs20 K Special Function Package introduction;introduction} - -}{\b\f2 SPECIAL FUNCTION PACKAGE}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -The REDUCE }{\f3 Special Function Package} {\f2 supplies extended -algebraic and numeric support for a wide class of objects. -This package was released together with REDUCE 3.5 (October 1993) -for the first time, a major update is released with REDUCE 3.6. -\par -\par -The functions included in this package are in most cases (unless otherwise -stated) defined and named like in the book by Abramowitz and Stegun: -Handbook of Mathematical Functions, Dover Publications. -\par -\par -The aim is to collect as much information on the special functions -and simplification capabilities as possible, -i.e. algebraic simplifications and numeric (rounded mode) code, limits -of the functions together -with the definitions of the functions, which are in most cases a power -series, a (definite) integral and/or a differential equation. -\par -\par -What can be found: Some famous constants, a variety of Bessel functions, -special polynomials, -the Gamma function, the (Riemann) Zeta function, Elliptic Functions, Elliptic -Integrals, 3J symbols (Clebsch-Gordan coefficients) and integral functions. -\par -\par -What is missing: Mathieu functions, LerchPhi, etc.. -The information about the special functions which solve certain -differential equation is very limited. -In several cases numerical approximation is restricted to real -arguments or is missing completely. -\par -\par -The implementation of this package uses REDUCE rule sets to a large extent, -which guarantees a high 'readability' of the functions definitions in the -source file directory. It makes extensions to the special -functions code easy in most cases too. To look at these rules -it may be convenient to use the showrules operator e.g. -\par -\par -} -{\f2\uldb showrules}{\v\f2 SHOWRULES} -{\f2 Besseli; -\par -\par -. -\par -\par -Some evaluations are improved if the special function package is loaded, -e.g. some (infinite) sums and products leading to expressions including -special functions are known in this case. -\par -\par -Note: The special function package has to be loaded explicitly by calling -\pard \tx3420 }{\f4 \par - load_package specfn; \par -\pard \sl240 }{\f2 \par -\par -The functions } -{\f2\uldb MeijerG}{\v\f2 MeijerG} -{\f2 and } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 require -additionally -\pard \tx3420 }{\f4 \par - load_package specfn2; \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Constants} - -${\footnote \pard\plain \sl240 \fs20 $ Constants} - -+{\footnote \pard\plain \sl240 \fs20 + g24:1063} - - K{\footnote \pard\plain \sl240 \fs20 K Golden_Ratio;Khinchin's constant;Catalan's constant;Euler's constant;Constants concept;concept} - -}{\b\f2 CONSTANTS}{\f2 \par -\par - - \par -\par -There are a few constants known to the special function package, namely -\par -\par -}{\f3 Euler's constant} {\f2 (which can be computed as -} -{\f2\uldb Psi}{\v\f2 PSI} -{\f2 (1)) and -\par -\par -}{\f3 Khinchin's constant} {\f2 (which is defined in Khinchin's book -\par -\par - ``Continued Fractions'') and -\par -\par -}{\f3 Golden_Ratio} {\f2 (which can be computed as (1 + sqrt 5)/2) and -\par -\par -}{\f3 Catalan's constant} {\f2 (which is known as an infinite sum of reciprocal -powers) -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par -Euler_Gamma; \par - \par - 0.577215664902 \par - \par - \par -Khinchin; \par - \par - 2.68545200107 \par - \par - \par -Catalan \par - \par - 0.915965594177 \par - \par - \par -Golden_Ratio \par - \par - 1.61803398875 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BERNOULLI} - -${\footnote \pard\plain \sl240 \fs20 $ BERNOULLI} - -+{\footnote \pard\plain \sl240 \fs20 + g25:1064} - - K{\footnote \pard\plain \sl240 \fs20 K BERNOULLI operator;operator} - -}{\b\f2 BERNOULLI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 bernoulli} {\f2 operator returns the nth Bernoulli number. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Bernoulli} {\f4 () -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -bernoulli 20; \par - \par - - 174611 / 330 \par - \par - \par -bernoulli 17; \par - \par - 0 \par - \par -\pard \sl240 }{\f2 All Bernoulli numbers with odd indices except for 1 are zero. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BERNOULLIP} - -${\footnote \pard\plain \sl240 \fs20 $ BERNOULLIP} - -+{\footnote \pard\plain \sl240 \fs20 + g25:1065} - - K{\footnote \pard\plain \sl240 \fs20 K BERNOULLIP operator;operator} - -}{\b\f2 BERNOULLIP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 BernoulliP} {\f2 operator returns the nth Bernoulli Polynomial -evaluated at x. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 BernoulliP} {\f4 (,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -BernoulliP(3,z); \par - \par - 2 \par - z*(2*z - 3*z + 1)/2 \par - \par - \par - \par -BernoulliP(10,3); \par - \par - 338585 / 66 \par - \par -\pard \sl240 }{\f2 The value of the nth Bernoulli Polynomial at 0 is the nth Bernoulli number. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EULER} - -${\footnote \pard\plain \sl240 \fs20 $ EULER} - -+{\footnote \pard\plain \sl240 \fs20 + g25:1066} - - K{\footnote \pard\plain \sl240 \fs20 K EULER operator;operator} - -}{\b\f2 EULER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EULER} {\f2 operator returns the nth Euler number. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Euler} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Euler 20; \par - \par - 370371188237525 \par - \par - \par -Euler 0; \par - \par - 1 \par - \par -\pard \sl240 }{\f2 The }{\f3 Euler} {\f2 numbers are evaluated by a recursive algorithm which -makes it hard to compute Euler numbers above say 200. -\par -\par -Euler numbers appear in the coefficients of the power series -representation of 1/cos(z). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EULERP} - -${\footnote \pard\plain \sl240 \fs20 $ EULERP} - -+{\footnote \pard\plain \sl240 \fs20 + g25:1067} - - K{\footnote \pard\plain \sl240 \fs20 K EULERP operator;operator} - -}{\b\f2 EULERP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EulerP} {\f2 operator returns the nth Euler Polynomial. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 EulerP} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EulerP(2,xx); \par - \par - xx*(xx - 1) \par - \par - \par -EulerP(10,3); \par - \par - 2046 \par - \par -\pard \sl240 }{\f2 The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ZETA} - -${\footnote \pard\plain \sl240 \fs20 $ ZETA} - -+{\footnote \pard\plain \sl240 \fs20 + g25:1068} - - K{\footnote \pard\plain \sl240 \fs20 K ZETA operator;operator} - -}{\b\f2 ZETA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Zeta} {\f2 operator returns Riemann's Zeta function, -\par -\par -Zeta (z) := sum(1/(k**z),k,1,infinity) -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Zeta} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Zeta(2); \par - \par - 2 \par - pi / 6 \par - \par - \par -on rounded; \par - \par -Zeta 1.01; \par - \par - 100.577943338 \par - \par -\pard \sl240 }{\f2 Numerical computation for the Zeta function for arguments close to 1 are -tedious, because the series is converging very slowly. In this case a formula -(e.g. found in Bender/Orzag: Advanced Mathematical Methods for -Scientists and Engineers, McGraw-Hill) is used. -\par -\par -No numerical approximation for complex arguments is done. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g25} - -${\footnote \pard\plain \sl240 \fs20 $ Bernoulli Euler Zeta} - -+{\footnote \pard\plain \sl240 \fs20 + index:0025} -}{\b\f2 Bernoulli Euler Zeta}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb BERNOULLI operator} -{\v\f2 BERNOULLI}{\f2 \par -}{\f2 \tab}{\f2\uldb BERNOULLIP operator} -{\v\f2 BERNOULLIP}{\f2 \par -}{\f2 \tab}{\f2\uldb EULER operator} -{\v\f2 EULER}{\f2 \par -}{\f2 \tab}{\f2\uldb EULERP operator} -{\v\f2 EULERP}{\f2 \par -}{\f2 \tab}{\f2\uldb ZETA operator} -{\v\f2 ZETA}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BESSELJ} - -${\footnote \pard\plain \sl240 \fs20 $ BESSELJ} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1069} - - K{\footnote \pard\plain \sl240 \fs20 K BESSELJ operator;operator} - -}{\b\f2 BESSELJ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 BesselJ} {\f2 operator returns the Bessel function of the first kind. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 BesselJ} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -BesselJ(1/2,pi); \par - \par - 0 \par - \par - \par -on rounded; \par - \par -BesselJ(0,1); \par - \par - 0.765197686558 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BESSELY} - -${\footnote \pard\plain \sl240 \fs20 $ BESSELY} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1070} - - K{\footnote \pard\plain \sl240 \fs20 K Weber's function;BESSELY operator;operator} - -}{\b\f2 BESSELY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 BesselY} {\f2 operator returns the Bessel function of the second kind. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 BesselY} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -BesselY (1/2,pi); \par - \par - - sqrt(2) / pi \par - \par - \par -on rounded; \par - \par -BesselY (1,3); \par - \par - 0.324674424792 \par - \par -\pard \sl240 }{\f2 The operator }{\f3 BesselY} {\f2 is also called Weber's function. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HANKEL1} - -${\footnote \pard\plain \sl240 \fs20 $ HANKEL1} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1071} - - K{\footnote \pard\plain \sl240 \fs20 K HANKEL1 operator;operator} - -}{\b\f2 HANKEL1}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Hankel1} {\f2 operator returns the Hankel function of the first kind. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Hankel1} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on complex; \par - \par -Hankel1 (1/2,pi); \par - \par - - i * sqrt(2) / pi \par - \par - \par -Hankel1 (1,pi); \par - \par - besselj(1,pi) + i*bessely(1,pi) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Hankel1} {\f2 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HANKEL2} - -${\footnote \pard\plain \sl240 \fs20 $ HANKEL2} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1072} - - K{\footnote \pard\plain \sl240 \fs20 K HANKEL2 operator;operator} - -}{\b\f2 HANKEL2}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Hankel2} {\f2 operator returns the Hankel function of the second kind. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Hankel2} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on complex; \par - \par -Hankel2 (1/2,pi); \par - \par - - i * sqrt(2) / pi \par - \par - \par -Hankel2 (1,pi); \par - \par - besselj(1,pi) - i*bessely(1,pi) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Hankel2} {\f2 is also called Bessel function of the third kind. -There is currently no numeric evaluation of Hankel functions. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BESSELI} - -${\footnote \pard\plain \sl240 \fs20 $ BESSELI} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1073} - - K{\footnote \pard\plain \sl240 \fs20 K BESSELI operator;operator} - -}{\b\f2 BESSELI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 BesselI} {\f2 operator returns the modified Bessel function I. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 BesselI} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -Besseli (1,1); \par - \par - 0.565159103992 \par - \par -\pard \sl240 }{\f2 The knowledge about the operator }{\f3 BesselI} {\f2 is currently fairly limited. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BESSELK} - -${\footnote \pard\plain \sl240 \fs20 $ BESSELK} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1074} - - K{\footnote \pard\plain \sl240 \fs20 K BESSELK operator;operator} - -}{\b\f2 BESSELK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 BesselK} {\f2 operator returns the modified Bessel function K. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 BesselK} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -df(besselk(0,x),x); \par - \par - - besselk(1,x) \par - \par -\pard \sl240 }{\f2 There is currently no numeric support for the operator }{\f3 BesselK} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # StruveH} - -${\footnote \pard\plain \sl240 \fs20 $ StruveH} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1075} - - K{\footnote \pard\plain \sl240 \fs20 K StruveH operator;operator} - -}{\b\f2 STRUVEH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 StruveH} {\f2 operator returns Struve's H function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 StruveH} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -struveh(-3/2,x); \par - \par - - besselj(3/2,x) / i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # StruveL} - -${\footnote \pard\plain \sl240 \fs20 $ StruveL} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1076} - - K{\footnote \pard\plain \sl240 \fs20 K StruveL operator;operator} - -}{\b\f2 STRUVEL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 StruveL} {\f2 operator returns the modified Struve L function . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 StruveL} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -struvel(-3/2,x); \par - \par - besseli(3/2,x) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # KummerM} - -${\footnote \pard\plain \sl240 \fs20 $ KummerM} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1077} - - K{\footnote \pard\plain \sl240 \fs20 K Confluent Hypergeometric function;KummerM operator;operator} - -}{\b\f2 KUMMERM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 KummerM} {\f2 operator returns Kummer's M function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 KummerM} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -kummerm(1,1,x); \par - \par - x \par - e \par - \par - \par -on rounded; \par - \par -kummerm(1,3,1.3); \par - \par - 1.62046942914 \par - \par -\pard \sl240 }{\f2 Kummer's M function is one of the Confluent Hypergeometric functions. -For reference see the } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # KummerU} - -${\footnote \pard\plain \sl240 \fs20 $ KummerU} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1078} - - K{\footnote \pard\plain \sl240 \fs20 K Confluent Hypergeometric function;KummerU operator;operator} - -}{\b\f2 KUMMERU}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 KummerU} {\f2 operator returns Kummer's U function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 KummerU} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -df(kummeru(1,1,x),x) \par - \par - - kummeru(2,2,x) \par - \par -\pard \sl240 }{\f2 Kummer's U function is one of the Confluent Hypergeometric functions. -For reference see the } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WhittakerW} - -${\footnote \pard\plain \sl240 \fs20 $ WhittakerW} - -+{\footnote \pard\plain \sl240 \fs20 + g26:1079} - - K{\footnote \pard\plain \sl240 \fs20 K Confluent Hypergeometric function;WhittakerW operator;operator} - -}{\b\f2 WHITTAKERW}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 WhittakerW} {\f2 operator returns Whittaker's W function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 WhittakerW} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -WhittakerW(2,2,2); \par - \par - 1 \par - 4*sqrt(2)*kummeru(-,5,2) \par - 2 \par - ------------------------- \par - e \par - \par -\pard \sl240 }{\f2 Whittaker's W function is one of the Confluent Hypergeometric functions. -For reference see the } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g26} - -${\footnote \pard\plain \sl240 \fs20 $ Bessel Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0026} -}{\b\f2 Bessel Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb BESSELJ operator} -{\v\f2 BESSELJ}{\f2 \par -}{\f2 \tab}{\f2\uldb BESSELY operator} -{\v\f2 BESSELY}{\f2 \par -}{\f2 \tab}{\f2\uldb HANKEL1 operator} -{\v\f2 HANKEL1}{\f2 \par -}{\f2 \tab}{\f2\uldb HANKEL2 operator} -{\v\f2 HANKEL2}{\f2 \par -}{\f2 \tab}{\f2\uldb BESSELI operator} -{\v\f2 BESSELI}{\f2 \par -}{\f2 \tab}{\f2\uldb BESSELK operator} -{\v\f2 BESSELK}{\f2 \par -}{\f2 \tab}{\f2\uldb StruveH operator} -{\v\f2 StruveH}{\f2 \par -}{\f2 \tab}{\f2\uldb StruveL operator} -{\v\f2 StruveL}{\f2 \par -}{\f2 \tab}{\f2\uldb KummerM operator} -{\v\f2 KummerM}{\f2 \par -}{\f2 \tab}{\f2\uldb KummerU operator} -{\v\f2 KummerU}{\f2 \par -}{\f2 \tab}{\f2\uldb WhittakerW operator} -{\v\f2 WhittakerW}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Airy_Ai} - -${\footnote \pard\plain \sl240 \fs20 $ Airy_Ai} - -+{\footnote \pard\plain \sl240 \fs20 + g27:1080} - - K{\footnote \pard\plain \sl240 \fs20 K Airy_Ai operator;operator} - -}{\b\f2 AIRY_AI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Airy_Ai} {\f2 operator returns the Airy Ai function for a given argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Airy_Ai} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on complex; \par -on rounded; \par -Airy_Ai(0); \par - \par - \par - 0.355028053888 \par - \par - \par -Airy_Ai(3.45 + 17.97i); \par - \par - - 5.5561528511e+9 - 8.80397899932e+9*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Airy_Bi} - -${\footnote \pard\plain \sl240 \fs20 $ Airy_Bi} - -+{\footnote \pard\plain \sl240 \fs20 + g27:1081} - - K{\footnote \pard\plain \sl240 \fs20 K Airy_Bi operator;operator} - -}{\b\f2 AIRY_BI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Airy_Bi} {\f2 operator returns the Airy Bi function for a given -argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Airy_Bi} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Airy_Bi(0); \par - \par - 0.614926627446 \par - \par - \par -Airy_Bi(3.45 + 17.97i); \par - \par - 8.80397899932e+9 - 5.5561528511e+9*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Airy_Aiprime} - -${\footnote \pard\plain \sl240 \fs20 $ Airy_Aiprime} - -+{\footnote \pard\plain \sl240 \fs20 + g27:1082} - - K{\footnote \pard\plain \sl240 \fs20 K Airy_Aiprime operator;operator} - -}{\b\f2 AIRY_AIPRIME}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Airy_Aiprime} {\f2 operator returns the Airy Aiprime function for a -given argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Airy_Aiprime} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Airy_Aiprime(0); \par - \par - - 0.258819403793 \par - \par - \par -Airy_Aiprime(3.45+17.97i); \par - \par - - 3.83386421824e+19 + 2.16608828136e+19*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Airy_Biprime} - -${\footnote \pard\plain \sl240 \fs20 $ Airy_Biprime} - -+{\footnote \pard\plain \sl240 \fs20 + g27:1083} - - K{\footnote \pard\plain \sl240 \fs20 K Airy_Biprime operator;operator} - -}{\b\f2 AIRY_BIPRIME}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Airy_Biprime} {\f2 operator returns the Airy Biprime function for a -given argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Airy_Biprime} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Airy_Biprime(0); \par - \par - \par -Airy_Biprime(3.45 + 17.97i); \par - \par - 3.84251916792e+19 - 2.18006297399e+19*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g27} - -${\footnote \pard\plain \sl240 \fs20 $ Airy Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0027} -}{\b\f2 Airy Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Airy_Ai operator} -{\v\f2 Airy_Ai}{\f2 \par -}{\f2 \tab}{\f2\uldb Airy_Bi operator} -{\v\f2 Airy_Bi}{\f2 \par -}{\f2 \tab}{\f2\uldb Airy_Aiprime operator} -{\v\f2 Airy_Aiprime}{\f2 \par -}{\f2 \tab}{\f2\uldb Airy_Biprime operator} -{\v\f2 Airy_Biprime}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiSN} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiSN} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1084} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiSN operator;operator} - -}{\b\f2 JACOBISN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobisn} {\f2 operator returns the Jacobi Elliptic function sn. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobisn} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobisn(0.672, 0.36) \par - \par - 0.609519691792 \par - \par - \par -Jacobisn(1,0.9) \par - \par - 0.770085724907881 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiCN} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiCN} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1085} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiCN operator;operator} - -}{\b\f2 JACOBICN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobicn} {\f2 operator returns the Jacobi Elliptic function cn. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobicn} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobicn(7.2, 0.6) \par - \par - 0.837288298482018 \par - \par - \par -Jacobicn(0.11, 19) \par - \par - 0.994403862690043 - 1.6219006985556e-16*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiDN} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiDN} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1086} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiDN operator;operator} - -}{\b\f2 JACOBIDN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobidn} {\f2 operator returns the Jacobi Elliptic function dn. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobidn} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobidn(15, 0.683) \par - \par - 0.640574162024592 \par - \par - \par -Jacobidn(0,0) \par - \par - 1 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiCD} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiCD} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1087} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiCD operator;operator} - -}{\b\f2 JACOBICD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobicd} {\f2 operator returns the Jacobi Elliptic function cd. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobicd} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobicd(1, 0.34) \par - \par - 0.657683337805273 \par - \par - \par -Jacobicd(0.8,0.8) \par - \par - 0.925587311582301 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiSD} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiSD} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1088} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiSD operator;operator} - -}{\b\f2 JACOBISD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobisd} {\f2 operator returns the Jacobi Elliptic function sd. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobisd} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobisd(12, 0.4) \par - \par - 0.357189729437272 \par - \par - \par -Jacobisd(0.35,1) \par - \par - - 1.17713873203043 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiND} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiND} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1089} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiND operator;operator} - -}{\b\f2 JACOBIND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobind} {\f2 operator returns the Jacobi Elliptic function nd. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobind} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobind(0.2, 17) \par - \par - 1.46553203037507 + 0.0000000000334032759313703*i \par - \par - \par -Jacobind(30, 0.001) \par - \par - 1.00048958438 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiDC} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiDC} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1090} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiDC operator;operator} - -}{\b\f2 JACOBIDC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobidc} {\f2 operator returns the Jacobi Elliptic function dc. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobidc} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobidc(0.003,1) \par - \par - 1 \par - \par - \par -Jacobidc(2, 0.75) \par - \par - 6.43472885111 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiNC} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiNC} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1091} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiNC operator;operator} - -}{\b\f2 JACOBINC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobinc} {\f2 operator returns the Jacobi Elliptic function nc. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobinc} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobinc(1,0) \par - \par - 1.85081571768093 \par - \par - \par -Jacobinc(56, 0.4387) \par - \par - 39.304842663512 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiSC} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiSC} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1092} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiSC operator;operator} - -}{\b\f2 JACOBISC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobisc} {\f2 operator returns the Jacobi Elliptic function sc. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobisc} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobisc(9, 0.88) \par - \par - - 1.16417697982095 \par - \par - \par -Jacobisc(0.34, 7) \par - \par - 0.305851938390775 - 9.8768100944891e-12*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiNS} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiNS} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1093} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiNS operator;operator} - -}{\b\f2 JACOBINS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobins} {\f2 operator returns the Jacobi Elliptic function ns. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobins} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobins(3, 0.9) \par - \par - 1.00945801599785 \par - \par - \par -Jacobins(0.887, 15) \par - \par - 0.683578280513975 - 0.85023411082469*i \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiDS} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiDS} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1094} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiDS operator;operator} - -}{\b\f2 JACOBIDS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobisn} {\f2 operator returns the Jacobi Elliptic function ds. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobids} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobids(98,0.223) \par - \par - - 1.061253961477 \par - \par - \par -Jacobids(0.36,0.6) \par - \par - 2.76693172243692 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiCS} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiCS} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1095} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiCS operator;operator} - -}{\b\f2 JACOBICS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Jacobics} {\f2 operator returns the Jacobi Elliptic function cs. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Jacobics} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Jacobics(0, 0.767) \par - \par - infinity \par - \par - \par -Jacobics(1.43, 0) \par - \par - 0.141734127352112 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiAMPLITUDE} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiAMPLITUDE} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1096} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiAMPLITUDE operator;operator} - -}{\b\f2 JACOBIAMPLITUDE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 JacobiAmplitude} {\f2 operator returns the amplitude of u. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 JacobiAmplitude} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -JacobiAmplitude(7.239, 0.427) \par - \par - 0.0520978301448978 \par - \par - \par -JacobiAmplitude(0,0.1) \par - \par - 0 \par - \par -\pard \sl240 }{\f2 Amplitude u = asin(}{\f3 Jacobisn(u,m)} {\f2 ) -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # AGM_FUNCTION} - -${\footnote \pard\plain \sl240 \fs20 $ AGM_FUNCTION} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1097} - - K{\footnote \pard\plain \sl240 \fs20 K AGM_FUNCTION operator;operator} - -}{\b\f2 AGM_FUNCTION}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 AGM_function} {\f2 operator returns a list of (N, AGM, - list of aNtoa0, list of bNtob0, list of cNtoc0) where a0, b0 and c0 -are the initial values; N is the index number of the last term -used to generate the AGM. AGM is the Arithmetic Geometric Mean. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 AGM_function} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -AGM_function(1,1,1) \par - \par - 1,1,1,1,1,1,0,1 \par - \par - \par -AGM_function(1, 0.1, 1.3) \par - \par - \{6, \par - 2.27985615996629, \par - \{2.27985615996629, 2.27985615996629, \par - 2.2798561599706, 2.2798624278857, \par - 2.28742283656583, 2.55, 1\}, \par - \{2.27985615996629, 2.27985615996629, \par - 2.27985615996198, 2.2798498920555, \par - 2.27230201920557, 2.02484567313166, 4.1\}, \par - \{0, 4.30803136219904e-12, 0.0000062679151007581, \par - 0.00756040868012758, 0.262577163434171, - 1.55, 5.9\}\} \par - \par -\pard \sl240 }{\f2 The other Jacobi functions use this function with initial values -a0=1, b0=sqrt(1-m), c0=sqrt(m). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LANDENTRANS} - -${\footnote \pard\plain \sl240 \fs20 $ LANDENTRANS} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1098} - - K{\footnote \pard\plain \sl240 \fs20 K LANDENTRANS operator;operator} - -}{\b\f2 LANDENTRANS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 landentrans} {\f2 operator generates the descending landen -transformation of the given imput values, returning a list of these -values; initial to final in each case. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 landentrans} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -landentrans(0,0.1) \par - \par - \{\{0,0,0,0,0\},\{0.1,0.0025041751943776, \par - \par - \par - \par - \par - 0.00000156772498954046,6.1444078 9914461e-13,0\}\} \par - \par -\pard \sl240 }{\f2 The first list ascends in value, and the second descends in value. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EllipticF} - -${\footnote \pard\plain \sl240 \fs20 $ EllipticF} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1099} - - K{\footnote \pard\plain \sl240 \fs20 K EllipticF operator;operator} - -}{\b\f2 ELLIPTICF}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EllipticF} {\f2 operator returns the Elliptic Integral of the -First Kind. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 EllitpicF} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticF(0.3, 8.222) \par - \par - 0.3 \par - \par - \par -EllipticF(7.396, 0.1) \par - \par - 7.58123216114307 \par - \par -\pard \sl240 }{\f2 The Complete Elliptic Integral of the First Kind can be found by -putting the first argument to pi/2 or by using }{\f3 EllipticK} {\f2 -and the second argument. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EllipticK} - -${\footnote \pard\plain \sl240 \fs20 $ EllipticK} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1100} - - K{\footnote \pard\plain \sl240 \fs20 K EllipticK operator;operator} - -}{\b\f2 ELLIPTICK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EllipticK} {\f2 operator returns the Elliptic value K. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 EllipticK} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticK(0.2) \par - \par - 1.65962359861053 \par - \par - \par -EllipticK(4.3) \par - \par - 0.808442364282734 - 1.05562492399206*i \par - \par - \par -EllipticK(0.000481) \par - \par - 1.57098526617635 \par - \par -\pard \sl240 }{\f2 The }{\f3 EllipticK} {\f2 function is the Complete Elliptic Integral of -the First Kind. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EllipticKprime} - -${\footnote \pard\plain \sl240 \fs20 $ EllipticKprime} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1101} - - K{\footnote \pard\plain \sl240 \fs20 K EllipticKprime operator;operator} - -}{\b\f2 ELLIPTICKPRIME}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EllipticK'} {\f2 operator returns the Elliptic value K(m). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 EllipticKprime} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticKprime(0.2) \par - \par - 2.25720532682085 \par - \par - \par -EllipticKprime(4.3) \par - \par - 1.05562492399206 \par - \par - \par -EllipticKprime(0.000481) \par - \par - 5.206621921966 \par - \par -\pard \sl240 }{\f2 The }{\f3 EllipticKprime} {\f2 function is the Complete Elliptic Integral of -the First Kind of (1-m). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EllipticE} - -${\footnote \pard\plain \sl240 \fs20 $ EllipticE} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1102} - - K{\footnote \pard\plain \sl240 \fs20 K EllipticE operator;operator} - -}{\b\f2 ELLIPTICE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EllipticE} {\f2 operator used with two arguments -returns the Elliptic Integral of the Second Kind. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 EllipticE} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticE(1.2,0.22) \par - \par - 1.15094019180949 \par - \par - \par -EllipticE(0,4.35) \par - \par - 0 \par - \par - \par -EllipticE(9,0.00719) \par - \par - 8.98312465929145 \par - \par -\pard \sl240 }{\f2 The Complete Elliptic Integral of the Second Kind can be obtained by -using just the second argument, or by using pi/2 as the first argument. -\par -\par -\par -The }{\f3 EllipticE} {\f2 operator used with one argument -returns the Elliptic value E. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 EllipticE} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticE(0.22) \par - \par - 1.48046637439519 \par - \par - \par -EllipticE(pi/2, 0.22) \par - \par - 1.48046637439519 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EllipticTHETA} - -${\footnote \pard\plain \sl240 \fs20 $ EllipticTHETA} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1103} - - K{\footnote \pard\plain \sl240 \fs20 K EllipticTHETA operator;operator} - -}{\b\f2 ELLIPTICTHETA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 EllipticTheta} {\f2 operator returns one of the four Theta -functions. It cannot except any number other than 1,2,3 or 4 as -its first argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 EllipticTheta} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EllipticTheta(1, 1.4, 0.72) \par - \par - 0.91634775373 \par - \par - \par -EllipticTheta(2, 3.9, 6.1 ) \par - \par - -48.0202736969 + 20.9881034377 i \par - \par - \par -EllipticTheta(3, 0.67, 0.2) \par - \par - 1.0083077448 \par - \par - \par -EllipticTheta(4, 8, 0.75) \par - \par - 0.894963369304 \par - \par - \par -EllipticTheta(5, 1, 0.1) \par - \par - ***** In EllipticTheta(a,u,m); a = 1,2,3 or 4. \par - \par -\pard \sl240 }{\f2 Theta functions are important because every one of the Jacobian -Elliptic functions can be expressed as the ratio of two theta functions. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiZETA} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiZETA} - -+{\footnote \pard\plain \sl240 \fs20 + g28:1104} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiZETA operator;operator} - -}{\b\f2 JACOBIZETA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 JacobiZeta} {\f2 operator returns the Jacobian function Zeta. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 JacobiZeta} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -JacobiZeta(3.2, 0.8) \par - \par - - 0.254536403439 \par - \par - \par -JacobiZeta(0.2, 1.6) \par - \par - 0.171766095970451 - 0.0717028569800147*i \par - \par -\pard \sl240 }{\f2 The Jacobian function Zeta is related to the Jacobian function Theta. -But it is significantly different from Riemann's Zeta Function } -{\f2\uldb Zeta}{\v\f2 ZETA} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g28} - -${\footnote \pard\plain \sl240 \fs20 $ Jacobi's Elliptic Functions and Elliptic Integrals} - -+{\footnote \pard\plain \sl240 \fs20 + index:0028} -}{\b\f2 Jacobi's Elliptic Functions and Elliptic Integrals}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb JacobiSN operator} -{\v\f2 JacobiSN}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiCN operator} -{\v\f2 JacobiCN}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiDN operator} -{\v\f2 JacobiDN}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiCD operator} -{\v\f2 JacobiCD}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiSD operator} -{\v\f2 JacobiSD}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiND operator} -{\v\f2 JacobiND}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiDC operator} -{\v\f2 JacobiDC}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiNC operator} -{\v\f2 JacobiNC}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiSC operator} -{\v\f2 JacobiSC}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiNS operator} -{\v\f2 JacobiNS}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiDS operator} -{\v\f2 JacobiDS}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiCS operator} -{\v\f2 JacobiCS}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiAMPLITUDE operator} -{\v\f2 JacobiAMPLITUDE}{\f2 \par -}{\f2 \tab}{\f2\uldb AGM_FUNCTION operator} -{\v\f2 AGM_FUNCTION}{\f2 \par -}{\f2 \tab}{\f2\uldb LANDENTRANS operator} -{\v\f2 LANDENTRANS}{\f2 \par -}{\f2 \tab}{\f2\uldb EllipticF operator} -{\v\f2 EllipticF}{\f2 \par -}{\f2 \tab}{\f2\uldb EllipticK operator} -{\v\f2 EllipticK}{\f2 \par -}{\f2 \tab}{\f2\uldb EllipticKprime operator} -{\v\f2 EllipticKprime}{\f2 \par -}{\f2 \tab}{\f2\uldb EllipticE operator} -{\v\f2 EllipticE}{\f2 \par -}{\f2 \tab}{\f2\uldb EllipticTHETA operator} -{\v\f2 EllipticTHETA}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiZETA operator} -{\v\f2 JacobiZETA}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # POCHHAMMER} - -${\footnote \pard\plain \sl240 \fs20 $ POCHHAMMER} - -+{\footnote \pard\plain \sl240 \fs20 + g29:1105} - - K{\footnote \pard\plain \sl240 \fs20 K POCHHAMMER operator;operator} - -}{\b\f2 POCHHAMMER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -The }{\f3 Pochhammer} {\f2 operator implements the Pochhammer notation -(shifted factorial). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Pochhammer} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -pochhammer(17,4); \par - \par - 116280 \par - \par - \par - \par -pochhammer(1/2,z); \par - \par - factorial(2*z) \par - -------------------- \par - 2*z \par - (2 *factorial(z)) \par - \par -\pard \sl240 }{\f2 A number of complex rules for }{\f3 Pochhammer} {\f2 are inactive, because they -cause a huge system load in algebraic mode. If one wants to use more rules -for the simplification of Pochhammer's notation, one can do: -\par -\par -let special!*pochhammer!*rules; -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GAMMA} - -${\footnote \pard\plain \sl240 \fs20 $ GAMMA} - -+{\footnote \pard\plain \sl240 \fs20 + g29:1106} - - K{\footnote \pard\plain \sl240 \fs20 K GAMMA operator;operator} - -}{\b\f2 GAMMA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Gamma} {\f2 operator returns the Gamma function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Gamma} {\f4 () -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -gamma(10); \par - \par - 362880 \par - \par - \par -gamma(1/2); \par - \par - sqrt(pi) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BETA} - -${\footnote \pard\plain \sl240 \fs20 $ BETA} - -+{\footnote \pard\plain \sl240 \fs20 + g29:1107} - - K{\footnote \pard\plain \sl240 \fs20 K BETA operator;operator} - -}{\b\f2 BETA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Beta} {\f2 operator returns the Beta function defined by -\par -\par -Beta (z,w) := defint(t**(z-1)* (1 - t)**(w-1),t,0,1) . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Beta} {\f4 (,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -Beta(2,2); \par - \par - 1 / 6 \par - \par - \par -Beta(x,y); \par - \par - gamma(x)*gamma(y) / gamma(x + y) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Beta} {\f2 is simplified towards the } -{\f2\uldb GAMMA}{\v\f2 GAMMA} -{\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PSI} - -${\footnote \pard\plain \sl240 \fs20 $ PSI} - -+{\footnote \pard\plain \sl240 \fs20 + g29:1108} - - K{\footnote \pard\plain \sl240 \fs20 K Euler's constant;PSI operator;operator} - -}{\b\f2 PSI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Psi} {\f2 operator returns the Psi (or DiGamma) function. -\par -\par -Psi(x) := df(Gamma(z),z)/ Gamma (z) -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Gamma} {\f4 () -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -Psi(3); \par - \par - (2*log(2) + psi(1/2) + psi(1) + 3)/2 \par - \par - \par -on rounded; \par - \par -- Psi(1); \par - \par - 0.577215664902 \par - \par -\pard \sl240 }{\f2 Euler's constant can be found as - Psi(1). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # POLYGAMMA} - -${\footnote \pard\plain \sl240 \fs20 $ POLYGAMMA} - -+{\footnote \pard\plain \sl240 \fs20 + g29:1109} - - K{\footnote \pard\plain \sl240 \fs20 K POLYGAMMA operator;operator} - -}{\b\f2 POLYGAMMA}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Polygamma} {\f2 operator returns the Polygamma function. -\par -\par -Polygamma(n,x) := df(Psi(z),z,n); -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Polygamma} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - Polygamma(1,2); \par - \par - 2 \par - (pi - 6) / 6 \par - \par - \par -on rounded; \par - \par -Polygamma(1,2.35); \par - \par - 0.52849689109 \par - \par -\pard \sl240 }{\f2 The Polygamma function is used for simplification of the } -{\f2\uldb ZETA}{\v\f2 ZETA} -{\f2 -function for some arguments. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g29} - -${\footnote \pard\plain \sl240 \fs20 $ Gamma and Related Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0029} -}{\b\f2 Gamma and Related Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb POCHHAMMER operator} -{\v\f2 POCHHAMMER}{\f2 \par -}{\f2 \tab}{\f2\uldb GAMMA operator} -{\v\f2 GAMMA}{\f2 \par -}{\f2 \tab}{\f2\uldb BETA operator} -{\v\f2 BETA}{\f2 \par -}{\f2 \tab}{\f2\uldb PSI operator} -{\v\f2 PSI}{\f2 \par -}{\f2 \tab}{\f2\uldb POLYGAMMA operator} -{\v\f2 POLYGAMMA}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DILOG_extended} - -${\footnote \pard\plain \sl240 \fs20 $ DILOG_extended} - -+{\footnote \pard\plain \sl240 \fs20 + g30:1110} - - K{\footnote \pard\plain \sl240 \fs20 K dilogarithm function;Spence's Integral;DILOG extended operator;operator} - -}{\b\f2 DILOG EXTENDED}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The package }{\f3 specfn} {\f2 supplies an extended support for the -} -{\f2\uldb dilog}{\v\f2 DILOG} -{\f2 operator which implements the }{\f3 dilogarithm function} {\f2 . -\par -\par -dilog(x) := - defint(log(t)/(t - 1),t,1,x); -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Dilog} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -defint(log(t)/(t - 1),t,1,x); \par - \par - - dilog (x) \par - \par - \par -dilog 2; \par - \par - 2 \par - - pi /12 \par - \par - \par - \par -on rounded; \par - \par -Dilog 20; \par - \par - - 5.92783972438 \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Dilog} {\f2 is sometimes called Spence's Integral for n = 2. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Lambert_W_function} - -${\footnote \pard\plain \sl240 \fs20 $ Lambert_W_function} - -+{\footnote \pard\plain \sl240 \fs20 + g30:1111} - - K{\footnote \pard\plain \sl240 \fs20 K Lambert_W function operator;operator} - -}{\b\f2 LAMBERT_W FUNCTION}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Lambert's W function is the inverse of the function w * e^w. -It is used in the } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 package for equations containing -exponentials and logarithms. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Lambert_W} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Lambert_W(-1/e); \par - \par - -1 \par - \par - \par -solve(w + log(w),w); \par - \par - w=lambert_w(1) \par - \par - \par -on rounded; \par - \par -Lambert_W(-0.05); \par - \par - - 0.0527059835515 \par - \par -\pard \sl240 }{\f2 The current implementation will compute the principal branch in -rounded mode only. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g30} - -${\footnote \pard\plain \sl240 \fs20 $ Miscellaneous Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0030} -}{\b\f2 Miscellaneous Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb DILOG extended operator} -{\v\f2 DILOG_extended}{\f2 \par -}{\f2 \tab}{\f2\uldb Lambert_W function operator} -{\v\f2 Lambert_W_function}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ChebyshevT} - -${\footnote \pard\plain \sl240 \fs20 $ ChebyshevT} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1112} - - K{\footnote \pard\plain \sl240 \fs20 K ChebyshevT operator;operator} - -}{\b\f2 CHEBYSHEVT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ChebyshevT} {\f2 operator computes the nth Chebyshev T Polynomial (of the -first kind). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ChebyshevT} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -ChebyshevT(3,xx); \par - \par - 2 \par - xx*(4*xx - 3) \par - \par - \par - \par -ChebyshevT(3,4); \par - \par - 244 \par - \par -\pard \sl240 }{\f2 Chebyshev's T polynomials are computed using the recurrence relation: -\par -\par -ChebyshevT(n,x) := 2x*ChebyshevT(n-1,x) - ChebyshevT(n-2,x) with -\par -\par -ChebyshevT(0,x) := 0 and ChebyshevT(1,x) := x -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ChebyshevU} - -${\footnote \pard\plain \sl240 \fs20 $ ChebyshevU} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1113} - - K{\footnote \pard\plain \sl240 \fs20 K ChebyshevU operator;operator} - -}{\b\f2 CHEBYSHEVU}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ChebyshevU} {\f2 operator returns the nth Chebyshev U Polynomial (of the -second kind). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ChebyshevU} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -ChebyshevU(3,xx); \par - \par - 2 \par - 4*x*(2*x - 1) \par - \par - \par - \par -ChebyshevU(3,4); \par - \par - 496 \par - \par -\pard \sl240 }{\f2 Chebyshev's U polynomials are computed using the recurrence relation: -\par -\par -ChebyshevU(n,x) := 2x*ChebyshevU(n-1,x) - ChebyshevU(n-2,x) with -\par -\par -ChebyshevU(0,x) := 0 and ChebyshevU(1,x) := 2x -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HermiteP} - -${\footnote \pard\plain \sl240 \fs20 $ HermiteP} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1114} - - K{\footnote \pard\plain \sl240 \fs20 K HermiteP operator;operator} - -}{\b\f2 HERMITEP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 HermiteP} {\f2 operator returns the nth Hermite Polynomial. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 HermiteP} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -HermiteP(3,xx); \par - \par - 2 \par - 4*xx*(2*xx - 3) \par - \par - \par -HermiteP(3,4); \par - \par - 464 \par - \par -\pard \sl240 }{\f2 Hermite polynomials are computed using the recurrence relation: - \par -\par -HermiteP(n,x) := 2x*HermiteP(n-1,x) - 2*(n-1)*HermiteP(n-2,x) with -\par -\par -HermiteP(0,x) := 1 and HermiteP(1,x) := 2x -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LaguerreP} - -${\footnote \pard\plain \sl240 \fs20 $ LaguerreP} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1115} - - K{\footnote \pard\plain \sl240 \fs20 K LaguerreP operator;operator} - -}{\b\f2 LAGUERREP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 LaguerreP} {\f2 operator computes the nth Laguerre Polynomial. -The two argument call of LaguerreP is a (common) abbreviation of -LaguerreP(n,0,x). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 LaguerreP} {\f4 (,) or -\par -\par -}{\f3 LaguerreP} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -LaguerreP(3,xx); \par - \par - 3 2 \par - (- xx + 9*xx - 18*xx + 6)/6 \par - \par - \par - \par -LaguerreP(2,3,4); \par - \par - -2 \par - \par -\pard \sl240 }{\f2 Laguerre polynomials are computed using the recurrence relation: -\par -\par -LaguerreP(n,a,x) := (2n+a-1-x)/n*LaguerreP(n-1,a,x) - - (n+a-1) * LaguerreP(n-2,a,x) with -\par -\par -LaguerreP(0,a,x) := 1 and LaguerreP(2,a,x) := -x+1+a -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LegendreP} - -${\footnote \pard\plain \sl240 \fs20 $ LegendreP} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1116} - - K{\footnote \pard\plain \sl240 \fs20 K LegendreP operator;operator} - -}{\b\f2 LEGENDREP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The binary }{\f3 LegendreP} {\f2 operator computes the nth Legendre -Polynomial which is -a special case of the nth Jacobi Polynomial with -\par -\par -LegendreP(n,x) := JacobiP(n,0,0,x) -\par -\par -The ternary form returns the associated Legendre Polynomial (see below). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 LegendreP} {\f4 (,) or -\par -\par -}{\f3 LegendreP} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -LegendreP(3,xx); \par - \par - 2 \par - xx*(5*xx - 3) \par - ---------------- \par - 2 \par - \par - \par - \par -LegendreP(3,2,xx); \par - \par - 2 \par - 15*xx*( - xx + 1) \par - \par -\pard \sl240 }{\f2 The ternary form of the operator }{\f3 LegendreP} {\f2 is the associated -Legendre Polynomial defined as - \par -\par -P(n,m,x) = (-1)**m * (1-x**2)**(m/2) * df(LegendreP(n,x),x,m) -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # JacobiP} - -${\footnote \pard\plain \sl240 \fs20 $ JacobiP} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1117} - - K{\footnote \pard\plain \sl240 \fs20 K JacobiP operator;operator} - -}{\b\f2 JACOBIP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 JacobiP} {\f2 operator computes the nth Jacobi Polynomial. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 JacobiP} {\f4 (,,, - ) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -JacobiP(3,4,5,xx); \par - \par - 3 2 \par - 7*(65*xx - 13*xx - 13*xx + 1) \par - ---------------------------------- \par - 8 \par - \par - \par - \par -JacobiP(3,4,5,6); \par - \par - 94465/8 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GegenbauerP} - -${\footnote \pard\plain \sl240 \fs20 $ GegenbauerP} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1118} - - K{\footnote \pard\plain \sl240 \fs20 K ultraspherical polynomials;GegenbauerP operator;operator} - -}{\b\f2 GEGENBAUERP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 GegenbauerP} {\f2 operator computes Gegenbauer's (ultraspherical) -polynomials. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 GegenbauerP} {\f4 (,,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -GegenbauerP(3,2,xx); \par - \par - 2 \par - 4*xx*(8*xx - 3) \par - \par - \par - \par -GegenbauerP(3,2,4); \par - \par - 2000 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SolidHarmonicY} - -${\footnote \pard\plain \sl240 \fs20 $ SolidHarmonicY} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1119} - - K{\footnote \pard\plain \sl240 \fs20 K Solid harmonic polynomials;SolidHarmonicY operator;operator} - -}{\b\f2 SOLIDHARMONICY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 SolidHarmonicY} {\f2 operator computes Solid harmonic (Laplace) -polynomials. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 SolidHarmonicY} {\f4 (,, -,,,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -SolidHarmonicY(3,-2,x,y,z,r2); \par - \par - 2 2 \par - sqrt(105)*z*(-2*i*x*y + x - y ) \par - --------------------------------- \par - 4*sqrt(pi)*sqrt(2) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SphericalHarmonicY} - -${\footnote \pard\plain \sl240 \fs20 $ SphericalHarmonicY} - -+{\footnote \pard\plain \sl240 \fs20 + g31:1120} - - K{\footnote \pard\plain \sl240 \fs20 K Spherical harmonic polynomials;SphericalHarmonicY operator;operator} - -}{\b\f2 SPHERICALHARMONICY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 SphericalHarmonicY} {\f2 operator computes Spherical harmonic (Laplace) -polynomials. These are special cases of the -solid harmonic polynomials, } -{\f2\uldb SolidHarmonicY}{\v\f2 SolidHarmonicY} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 SphericalHarmonicY} {\f4 (,, -,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -SphericalHarmonicY(3,2,theta,phi); \par - \par - \par - 2 2 2 \par - sqrt(105)*cos(theta)*sin(theta) *(cos(phi) +2*cos(phi)*sin(phi)*i-sin(phi) ) \par - ----------------------------------------------------------------------------- \par - 4*sqrt(pi)*sqrt(2) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g31} - -${\footnote \pard\plain \sl240 \fs20 $ Orthogonal Polynomials} - -+{\footnote \pard\plain \sl240 \fs20 + index:0031} -}{\b\f2 Orthogonal Polynomials}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ChebyshevT operator} -{\v\f2 ChebyshevT}{\f2 \par -}{\f2 \tab}{\f2\uldb ChebyshevU operator} -{\v\f2 ChebyshevU}{\f2 \par -}{\f2 \tab}{\f2\uldb HermiteP operator} -{\v\f2 HermiteP}{\f2 \par -}{\f2 \tab}{\f2\uldb LaguerreP operator} -{\v\f2 LaguerreP}{\f2 \par -}{\f2 \tab}{\f2\uldb LegendreP operator} -{\v\f2 LegendreP}{\f2 \par -}{\f2 \tab}{\f2\uldb JacobiP operator} -{\v\f2 JacobiP}{\f2 \par -}{\f2 \tab}{\f2\uldb GegenbauerP operator} -{\v\f2 GegenbauerP}{\f2 \par -}{\f2 \tab}{\f2\uldb SolidHarmonicY operator} -{\v\f2 SolidHarmonicY}{\f2 \par -}{\f2 \tab}{\f2\uldb SphericalHarmonicY operator} -{\v\f2 SphericalHarmonicY}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Si} - -${\footnote \pard\plain \sl240 \fs20 $ Si} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1121} - - K{\footnote \pard\plain \sl240 \fs20 K integral function;Sine integral function;Si operator;operator} - -}{\b\f2 SI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Si} {\f2 operator returns the Sine Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Si} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -limit(Si(x),x,infinity); \par - \par - pi / 2 \par - \par - \par -on rounded; \par - \par -Si(0.35); \par - \par - 0.347626790989 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 Si} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Shi} - -${\footnote \pard\plain \sl240 \fs20 $ Shi} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1122} - - K{\footnote \pard\plain \sl240 \fs20 K integral function;hyperbolic sine integral function;Shi operator;operator} - -}{\b\f2 SHI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Shi} {\f2 operator returns the hyperbolic Sine Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Shi} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -df(shi(x),x); \par - \par - sinh(x) / x \par - \par - \par -on rounded; \par - \par -Shi(0.35); \par - \par - 0.352390716351 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 Shi} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # s_i} - -${\footnote \pard\plain \sl240 \fs20 $ s_i} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1123} - - K{\footnote \pard\plain \sl240 \fs20 K integral function;sine integral function;s_i operator;operator} - -}{\b\f2 S_I}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 s_i} {\f2 operator returns the Sine Integral function si. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 s_i} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -s_i(xx); \par - \par - (2*Si(xx) - pi) / 2 \par - \par - \par -df(s_i(x),x); \par - \par - sin(x) / x \par - \par -\pard \sl240 }{\f2 The operator name }{\f3 s_i} {\f2 is simplified towards } -{\f2\uldb SI}{\v\f2 Si} -{\f2 . -Since REDUCE is not case sensitive by default the name ``si'' can't be -used. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Ci} - -${\footnote \pard\plain \sl240 \fs20 $ Ci} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1124} - - K{\footnote \pard\plain \sl240 \fs20 K cosine integral function;Ci operator;operator} - -}{\b\f2 CI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Ci} {\f2 operator returns the Cosine Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Ci} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -defint(cos(t)/t,t,x,infinity); \par - \par - - ci (x) \par - \par - \par -on rounded; \par - \par -Ci(0.35); \par - \par - - 0.50307556932 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 Ci} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Chi} - -${\footnote \pard\plain \sl240 \fs20 $ Chi} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1125} - - K{\footnote \pard\plain \sl240 \fs20 K integral function;hyperbolic cosine integral function;Chi operator;operator} - -}{\b\f2 CHI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Chi} {\f2 operator returns the Hyperbolic Cosine Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Chi} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -defint((cosh(t)-1)/t,t,0,x); \par - \par - - log(x) + psi(1) + chi(x) \par - \par - \par -on rounded; \par - \par -Chi(0.35); \par - \par - - 0.44182471827 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 Chi} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ERF_extended} - -${\footnote \pard\plain \sl240 \fs20 $ ERF_extended} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1126} - - K{\footnote \pard\plain \sl240 \fs20 K error function;ERF extended operator;operator} - -}{\b\f2 ERF EXTENDED}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The special function package supplies an extended support for the -} -{\f2\uldb erf}{\v\f2 ERF} -{\f2 operator which implements the }{\f3 error function} {\f2 -\par -\par -defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) -\par -\par -. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 erf} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -erf(-x); \par - \par - - erf(x) \par - \par - \par -on rounded; \par - \par -erf(0.35); \par - \par - 0.379382053562 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 erf} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # erfc} - -${\footnote \pard\plain \sl240 \fs20 $ erfc} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1127} - - K{\footnote \pard\plain \sl240 \fs20 K complementary error function;error function;erfc operator;operator} - -}{\b\f2 ERFC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 erfc} {\f2 operator returns the complementary Error function -\par -\par -1 - defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) -\par -\par -. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 erfc} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -erfc(xx); \par - \par - - erf(xx) + 1 \par - \par -\pard \sl240 }{\f2 The operator }{\f3 erfc} {\f2 is simplified towards the } -{\f2\uldb erf}{\v\f2 ERF} -{\f2 operator. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Ei} - -${\footnote \pard\plain \sl240 \fs20 $ Ei} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1128} - - K{\footnote \pard\plain \sl240 \fs20 K exponential integral function;Ei operator;operator} - -}{\b\f2 EI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Ei} {\f2 operator returns the Exponential Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Ei} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -df(ei(x),x); \par - \par - x \par - e \par - --- \par - x \par - \par - \par -on rounded; \par - \par -Ei(0.35); \par - \par - - 0.0894340019184 \par - \par -\pard \sl240 }{\f2 The numeric values for the operator }{\f3 Ei} {\f2 are computed via the -power series representation, which limits the argument range. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Fresnel_C} - -${\footnote \pard\plain \sl240 \fs20 $ Fresnel_C} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1129} - - K{\footnote \pard\plain \sl240 \fs20 K Fresnel_C operator;operator} - -}{\b\f2 FRESNEL_C}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Fresnel_C} {\f2 operator represents Fresnel's Cosine function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Fresnel_C} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -int(cos(t^2*pi/2),t,0,x); \par - \par - fresnel_c(x) \par - \par - \par -on rounded; \par - \par -fresnel_c(2.1); \par - \par - 0.581564135061 \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Fresnel_C} {\f2 has a limited numeric evaluation of -large values of its argument. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Fresnel_S} - -${\footnote \pard\plain \sl240 \fs20 $ Fresnel_S} - -+{\footnote \pard\plain \sl240 \fs20 + g32:1130} - - K{\footnote \pard\plain \sl240 \fs20 K Fresnel_S operator;operator} - -}{\b\f2 FRESNEL_S}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Fresnel_S} {\f2 operator represents Fresnel's Sine Integral function. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Fresnel_S} {\f4 () -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -int(sin(t^2*pi/2),t,0,x); \par - \par - fresnel_s(x) \par - \par - \par -on rounded; \par - \par -fresnel_s(2.1); \par - \par - 0.374273359378 \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Fresnel_S} {\f2 has a limited numeric evaluation of -large values of its argument. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g32} - -${\footnote \pard\plain \sl240 \fs20 $ Integral Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0032} -}{\b\f2 Integral Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Si operator} -{\v\f2 Si}{\f2 \par -}{\f2 \tab}{\f2\uldb Shi operator} -{\v\f2 Shi}{\f2 \par -}{\f2 \tab}{\f2\uldb s_i operator} -{\v\f2 s_i}{\f2 \par -}{\f2 \tab}{\f2\uldb Ci operator} -{\v\f2 Ci}{\f2 \par -}{\f2 \tab}{\f2\uldb Chi operator} -{\v\f2 Chi}{\f2 \par -}{\f2 \tab}{\f2\uldb ERF extended operator} -{\v\f2 ERF_extended}{\f2 \par -}{\f2 \tab}{\f2\uldb erfc operator} -{\v\f2 erfc}{\f2 \par -}{\f2 \tab}{\f2\uldb Ei operator} -{\v\f2 Ei}{\f2 \par -}{\f2 \tab}{\f2\uldb Fresnel_C operator} -{\v\f2 Fresnel_C}{\f2 \par -}{\f2 \tab}{\f2\uldb Fresnel_S operator} -{\v\f2 Fresnel_S}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BINOMIAL} - -${\footnote \pard\plain \sl240 \fs20 $ BINOMIAL} - -+{\footnote \pard\plain \sl240 \fs20 + g33:1131} - - K{\footnote \pard\plain \sl240 \fs20 K BINOMIAL operator;operator} - -}{\b\f2 BINOMIAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Binomial} {\f2 operator returns the Binomial coefficient if both -parameter are integer and expressions involving the Gamma function otherwise. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Binomial} {\f4 (,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par -Binomial(49,6); \par - \par - 13983816 \par - \par - \par - \par -Binomial(n,3); \par - \par - gamma(n + 1) \par - --------------- \par - 6*gamma(n - 2) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Binomial} {\f2 evaluates the Binomial coefficients from -the explicit form and therefore it is not the best algorithm if you -want to compute many binomial coefficients with big indices in which -case a recursive algorithm is preferable. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # STIRLING1} - -${\footnote \pard\plain \sl240 \fs20 $ STIRLING1} - -+{\footnote \pard\plain \sl240 \fs20 + g33:1132} - - K{\footnote \pard\plain \sl240 \fs20 K STIRLING1 operator;operator} - -}{\b\f2 STIRLING1}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Stirling1} {\f2 operator returns the Stirling Numbers S(n,m) of the first -kind, i.e. the number of permutations of n symbols which have exactly m cycles -(divided by (-1)**(n-m)). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Stirling1} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Stirling1 (17,4); \par - \par - -87077748875904 \par - \par - \par -Stirling1 (n,n-1); \par - \par - -gamma(n+1) \par - ------------- \par - 2*gamma(n-1) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Stirling1} {\f2 evaluates the Stirling numbers of the -first kind by rulesets for special cases or by a computing the closed -form, which is a series involving the operators } -{\f2\uldb BINOMIAL}{\v\f2 BINOMIAL} -{\f2 -and } -{\f2\uldb STIRLING2}{\v\f2 STIRLING2} -{\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # STIRLING2} - -${\footnote \pard\plain \sl240 \fs20 $ STIRLING2} - -+{\footnote \pard\plain \sl240 \fs20 + g33:1133} - - K{\footnote \pard\plain \sl240 \fs20 K STIRLING2 operator;operator} - -}{\b\f2 STIRLING2}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Stirling1} {\f2 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Stirling2} {\f4 (,) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -Stirling2 (17,4); \par - \par - 694337290 \par - \par - \par -Stirling2 (n,n-1); \par - \par - gamma(n+1) \par - ------------- \par - 2*gamma(n-1) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 Stirling2} {\f2 evaluates the Stirling numbers of the -second kind by rulesets for special cases or by a computing the closed -form. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g33} - -${\footnote \pard\plain \sl240 \fs20 $ Combinatorial Operators} - -+{\footnote \pard\plain \sl240 \fs20 + index:0033} -}{\b\f2 Combinatorial Operators}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb BINOMIAL operator} -{\v\f2 BINOMIAL}{\f2 \par -}{\f2 \tab}{\f2\uldb STIRLING1 operator} -{\v\f2 STIRLING1}{\f2 \par -}{\f2 \tab}{\f2\uldb STIRLING2 operator} -{\v\f2 STIRLING2}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ThreejSymbol} - -${\footnote \pard\plain \sl240 \fs20 $ ThreejSymbol} - -+{\footnote \pard\plain \sl240 \fs20 + g34:1134} - - K{\footnote \pard\plain \sl240 \fs20 K ThreejSymbol operator;operator} - -}{\b\f2 THREEJSYMBOL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ThreejSymbol} {\f2 operator implements the 3j symbol. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ThreejSymbol} {\f4 (,, -) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -ThreejSymbol(\{j+1,m\},\{j+1,-m\},\{1,0\}); \par - \par - \par - j \par - ( - 1) *(abs(j - m + 1) - abs(j + m + 1)) \par - ------------------------------------------- \par - 3 2 m \par - 2*sqrt(2*j + 9*j + 13*j + 6)*( - 1) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Clebsch_Gordan} - -${\footnote \pard\plain \sl240 \fs20 $ Clebsch_Gordan} - -+{\footnote \pard\plain \sl240 \fs20 + g34:1135} - - K{\footnote \pard\plain \sl240 \fs20 K Clebsch_Gordan operator;operator} - -}{\b\f2 CLEBSCH_GORDAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 Clebsch_Gordan} {\f2 operator implements the Clebsch_Gordan -coefficients. This is closely related to the } -{\f2\uldb Threejsymbol}{\v\f2 ThreejSymbol} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Clebsch_Gordan} {\f4 (,, -) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par - Clebsch_Gordan(\{2,0\},\{2,0\},\{2,0\}); \par - \par - \par - -2 \par - --------- \par - sqrt(14) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SixjSymbol} - -${\footnote \pard\plain \sl240 \fs20 $ SixjSymbol} - -+{\footnote \pard\plain \sl240 \fs20 + g34:1136} - - K{\footnote \pard\plain \sl240 \fs20 K SixjSymbol operator;operator} - -}{\b\f2 SIXJSYMBOL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 SixjSymbol} {\f2 operator implements the 6j symbol. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 SixjSymbol} {\f4 (,) -\par -\par -\par -\par -}{\f2 \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -SixjSymbol(\{7,6,3\},\{2,4,6\}); \par - \par - 1 \par - ------------- \par - 14*sqrt(858) \par - \par -\pard \sl240 }{\f2 The operator }{\f3 SixjSymbol} {\f2 uses the } -{\f2\uldb ineq}{\v\f2 INEQ} -{\f2 package in order -to find minima and maxima for the summation index. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g34} - -${\footnote \pard\plain \sl240 \fs20 $ 3j and 6j symbols} - -+{\footnote \pard\plain \sl240 \fs20 + index:0034} -}{\b\f2 3j and 6j symbols}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ThreejSymbol operator} -{\v\f2 ThreejSymbol}{\f2 \par -}{\f2 \tab}{\f2\uldb Clebsch_Gordan operator} -{\v\f2 Clebsch_Gordan}{\f2 \par -}{\f2 \tab}{\f2\uldb SixjSymbol operator} -{\v\f2 SixjSymbol}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HYPERGEOMETRIC} - -${\footnote \pard\plain \sl240 \fs20 $ HYPERGEOMETRIC} - -+{\footnote \pard\plain \sl240 \fs20 + g35:1137} - - K{\footnote \pard\plain \sl240 \fs20 K generalized hypergeometric function;hypergeometric function;HYPERGEOMETRIC operator;operator} - -}{\b\f2 HYPERGEOMETRIC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 Hypergeometric} {\f2 operator provides simplifications for the -generalized hypergeometric functions. -The }{\f3 Hypergeometric} {\f2 operator is included in the package specfn2. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 hypergeometric} {\f4 (,, - ) -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -load specfn2; \par - \par -hypergeometric (\{1/2,1\},\{3/2\},-x^2); \par - \par - \par - atan(x) \par - -------- \par - x \par - \par - \par -hypergeometric (\{\},\{\},z); \par - \par - z \par - e \par - \par -\pard \sl240 }{\f2 The special case where the length of the first list is equal to 2 and -the length of the second list is equal to 1 is often called -``the hypergeometric function'' (notated as 2F1(a1,a2,b;x)). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MeijerG} - -${\footnote \pard\plain \sl240 \fs20 $ MeijerG} - -+{\footnote \pard\plain \sl240 \fs20 + g35:1138} - - K{\footnote \pard\plain \sl240 \fs20 K MeijerG operator;operator} - -}{\b\f2 MEIJERG}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 MeijerG} {\f2 operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or -special functions or (generalized) } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 functions. -\par -\par -The }{\f3 MeijerG} {\f2 operator is included in the package specfn2. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 MeijerG} {\f4 (,, - ) -\par -\par -}{\f2 \par -The first element of the lists has to be the list containing the -first group (mostly called ``m'' and ``n'') of parameters. This passes -the four parameters of a Meijer's G function implicitly via the -length of the lists. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -load specfn2; \par - \par -MeijerG(\{\{\},1\},\{\{0\}\},x); \par - \par - heaviside(-x+1) \par - \par - \par -MeijerG(\{\{\}\},\{\{1+1/4\},1-1/4\},(x^2)/4) * sqrt pi; \par - \par - \par - \par - 2 \par - sqrt(2)*sin(x)*x \par - ------------------ \par - 4*sqrt(x) \par - \par -\pard \sl240 }{\f2 Many well-known functions can be written as G functions, -e.g. exponentials, logarithms, trigonometric functions, Bessel functions -and hypergeometric functions. -The formulae can be found e.g. in -\par -\par -A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: -Integrals and Series, Volume 3: More special functions, -Gordon and Breach Science Publishers (1990). -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Heaviside} - -${\footnote \pard\plain \sl240 \fs20 $ Heaviside} - -+{\footnote \pard\plain \sl240 \fs20 + g35:1139} - - K{\footnote \pard\plain \sl240 \fs20 K Heaviside operator;operator} - -}{\b\f2 HEAVISIDE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -The }{\f3 Heaviside} {\f2 operator returns the Heaviside function. -\par -\par -Heaviside(~w) => if (w < 0) then 0 else 1 -\par -\par -when numberp w; -\par -\par - \par -syntax: \par -}{\f4 }{\f3 Heaviside} {\f4 () -\par -\par -}{\f2 \par -This operator is often included in the result of the simplification -of a generalized } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 function or a -} -{\f2\uldb MeijerG}{\v\f2 MeijerG} -{\f2 function. -\par -\par -No simplification is done for this function. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # erfi} - -${\footnote \pard\plain \sl240 \fs20 $ erfi} - -+{\footnote \pard\plain \sl240 \fs20 + g35:1140} - - K{\footnote \pard\plain \sl240 \fs20 K erfi operator;operator} - -}{\b\f2 ERFI}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -The }{\f3 erfi} {\f2 operator returns the error function of an imaginary argument. -\par -\par -erfi(~x) => 2/sqrt(pi) * defint(e**(t**2),t,0,x); -\par -\par - \par -syntax: \par -}{\f4 }{\f3 erfi} {\f4 () -\par -\par -}{\f2 \par -This operator is sometimes included in the result of the simplification -of a generalized } -{\f2\uldb hypergeometric}{\v\f2 HYPERGEOMETRIC} -{\f2 function or a -} -{\f2\uldb MeijerG}{\v\f2 MeijerG} -{\f2 function. -\par -\par -No simplification is done for this function. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g35} - -${\footnote \pard\plain \sl240 \fs20 $ Miscellaneous} - -+{\footnote \pard\plain \sl240 \fs20 + index:0035} -}{\b\f2 Miscellaneous}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb HYPERGEOMETRIC operator} -{\v\f2 HYPERGEOMETRIC}{\f2 \par -}{\f2 \tab}{\f2\uldb MeijerG operator} -{\v\f2 MeijerG}{\f2 \par -}{\f2 \tab}{\f2\uldb Heaviside operator} -{\v\f2 Heaviside}{\f2 \par -}{\f2 \tab}{\f2\uldb erfi operator} -{\v\f2 erfi}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g24} - -${\footnote \pard\plain \sl240 \fs20 $ Special Functions} - -+{\footnote \pard\plain \sl240 \fs20 + index:0024} -}{\b\f2 Special Functions}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Special Function Package introduction} -{\v\f2 Special_Function_Package}{\f2 \par -}{\f2 \tab}{\f2\uldb Constants concept} -{\v\f2 Constants}{\f2 \par -}{\f2 \tab}{\f2\uldb Bernoulli Euler Zeta} -{\v\f2 g25}{\f2 \par -}{\f2 \tab}{\f2\uldb Bessel Functions} -{\v\f2 g26}{\f2 \par -}{\f2 \tab}{\f2\uldb Airy Functions} -{\v\f2 g27}{\f2 \par -}{\f2 \tab}{\f2\uldb Jacobi's Elliptic Functions and Elliptic Integrals} -{\v\f2 g28}{\f2 \par -}{\f2 \tab}{\f2\uldb Gamma and Related Functions} -{\v\f2 g29}{\f2 \par -}{\f2 \tab}{\f2\uldb Miscellaneous Functions} -{\v\f2 g30}{\f2 \par -}{\f2 \tab}{\f2\uldb Orthogonal Polynomials} -{\v\f2 g31}{\f2 \par -}{\f2 \tab}{\f2\uldb Integral Functions} -{\v\f2 g32}{\f2 \par -}{\f2 \tab}{\f2\uldb Combinatorial Operators} -{\v\f2 g33}{\f2 \par -}{\f2 \tab}{\f2\uldb 3j and 6j symbols} -{\v\f2 g34}{\f2 \par -}{\f2 \tab}{\f2\uldb Miscellaneous} -{\v\f2 g35}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TAYLOR_introduction} - -${\footnote \pard\plain \sl240 \fs20 $ TAYLOR_introduction} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1141} - - K{\footnote \pard\plain \sl240 \fs20 K TAYLOR introduction;introduction} - -}{\b\f2 TAYLOR}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -This short note describes a package of REDUCE procedures that allow -Taylor expansion in one or more variables and efficient manipulation -of the resulting Taylor series. Capabilities include basic operations -(addition, subtraction, multiplication and division) and also -application of certain algebraic and transcendental functions. To a -certain extent, Laurent expansion can be performed as well. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylor} - -${\footnote \pard\plain \sl240 \fs20 $ taylor} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1142} - - K{\footnote \pard\plain \sl240 \fs20 K taylor operator;operator} - -}{\b\f2 TAYLOR}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - The }{\f3 taylor} {\f2 operator is used for expanding an expression into a - Taylor series. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylor} {\f4 ( - }{\f3 ,} {\f4 }{\f3 ,} {\f4 - }{\f3 ,} {\f4 -\par -\par -\{}{\f3 ,} {\f4 }{\f3 ,} {\f4 - }{\f3 ,} {\f4 \}*) - \par -\par -}{\f2 \par - can be any valid REDUCE algebraic expression. - must be a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , and is the expansion - variable. The following it denotes the point - about which the expansion is to take place. must be a - non-negative integer and denotes the maximum expansion order. If - more than one triple is specified }{\f3 taylor} {\f2 will expand its - first argument independently with respect to all the variables. - Note that once the expansion has been done it is not possible to - calculate higher orders. -\par -\par -Instead of a } -{\f2\uldb kernel}{\v\f2 KERNEL} -{\f2 , may also be a list of - kernels. In this case expansion will take place in a way so that - the sum/ of the degrees of the kernels does not exceed the - maximum expansion order. If the expansion point evaluates to the - special identifier }{\f3 infinity} {\f2 , }{\f3 taylor} {\f2 tries to expand in - a series in 1/. -\par -\par -The expansion is performed variable per variable, i.e. in the - example above by first expanding - exp(x^2+y^2) - with respect to - }{\f3 x} {\f2 and then expanding every coefficient with respect to }{\f3 y} {\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - taylor(e^(x^2+y^2),x,0,2,y,0,2); \par - \par - \par - 2 2 2 2 2 2 \par - 1 + Y + X + Y *X + O(X ,Y ) \par - \par - \par - taylor(e^(x^2+y^2),\{x,y\},0,2); \par - \par - \par - 2 2 2 2 \par - 1 + Y + X + O(\{X ,Y \}) \par - \par -\pard \sl240 }{\f2 The following example shows the case of a non-analytical function.}{\f4 \pard \tx3420 \par - \par - taylor(x*y/(x+y),x,0,2,y,0,2); \par - \par - \par - ***** Not a unit in argument to QUOTTAYLOR \par - \par -\pard \sl240 }{\f2 -\par -\par -Note that it is not generally possible to apply the standard - reduce operators to a Taylor kernel. For example, } -{\f2\uldb part}{\v\f2 PART} -{\f2 , - } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 , or } -{\f2\uldb coeffn}{\v\f2 COEFFN} -{\f2 cannot be used. Instead, the - expression at hand has to be converted to standard form first - using the } -{\f2\uldb taylortostandard}{\v\f2 taylortostandard} -{\f2 operator. -\par -\par -Differentiation of a Taylor expression is possible. If you - differentiate with respect to one of the Taylor variables the - order will decrease by one. -\par -\par -Substitution is a bit restricted: Taylor variables can only be - replaced by other kernels. There is one exception to this rule: - you can always substitute a Taylor variable by an expression that - evaluates to a constant. Note that REDUCE will not always be able - to determine that an expression is constant: an example is - sin(acos(4)). -\par -\par -Only simple taylor kernels can be integrated. More complicated - expressions that contain Taylor kernels as parts of themselves are - automatically converted into a standard representation by means of - the } -{\f2\uldb taylortostandard}{\v\f2 taylortostandard} -{\f2 operator. In this case a suitable - warning is printed. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorautocombine} - -${\footnote \pard\plain \sl240 \fs20 $ taylorautocombine} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1143} - - K{\footnote \pard\plain \sl240 \fs20 K taylorautocombine switch;switch} - -}{\b\f2 TAYLORAUTOCOMBINE}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - If you set }{\f3 taylorautocombine} {\f2 to }{\f3 on} {\f2 , REDUCE - automatically combines Taylor expressions during the simplification - process. This is equivalent to applying } -{\f2\uldb taylorcombine}{\v\f2 taylorcombine} -{\f2 to - every expression that contains Taylor kernels. Default is - }{\f3 on} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorautoexpand} - -${\footnote \pard\plain \sl240 \fs20 $ taylorautoexpand} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1144} - - K{\footnote \pard\plain \sl240 \fs20 K taylorautoexpand switch;switch} - -}{\b\f2 TAYLORAUTOEXPAND}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - }{\f3 taylorautoexpand} {\f2 makes Taylor expressions ``contagious'' in - the sense that } -{\f2\uldb taylorcombine}{\v\f2 taylorcombine} -{\f2 tries to Taylor expand all - non-Taylor subexpressions and to combine the result with the rest. - Default is }{\f3 off} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorcombine} - -${\footnote \pard\plain \sl240 \fs20 $ taylorcombine} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1145} - - K{\footnote \pard\plain \sl240 \fs20 K taylorcombine operator;operator} - -}{\b\f2 TAYLORCOMBINE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - This operator tries to combine all Taylor kernels found in its - argument into one. Operations currently possible are: - \par -\par -\tab Addition, subtraction, multiplication, and division. - \par -\tab Roots, exponentials, and logarithms. - \par -\tab Trigonometric and hyperbolic functions and their inverses. - \par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - taylorcombine log hugo; \par - \par - 3 \par - X + O(X ) \par - \par - \par - taylorcombine(hugo + x); \par - \par - 1 2 3 \par - (1 + X + -*X + O(X )) + X \par - 2 \par - \par - \par - on taylorautoexpand; \par - \par - taylorcombine(hugo + x); \par - \par - 1 2 3 \par - 1 + 2*X + -*X + O(X ) \par - 2 \par - \par -\pard \sl240 }{\f2 Application of unary operators like }{\f3 log} {\f2 and }{\f3 atan} {\f2 - will nearly always succeed. For binary operations their arguments - have to be Taylor kernels with the same template. This means that - the expansion variable and the expansion point must match. - Expansion order is not so important, different order usually means - that one of them is truncated before doing the operation. -\par -\par -If } -{\f2\uldb taylorkeeporiginal}{\v\f2 taylorkeeporiginal} -{\f2 is set to }{\f3 on} {\f2 and if all - Taylor kernels in its argument have their original expressions - kept }{\f3 taylorcombine} {\f2 will also combine these and store the - result as the original expression of the resulting Taylor kernel. - There is also the switch } -{\f2\uldb taylorautoexpand}{\v\f2 taylorautoexpand} -{\f2 . -\par -\par -There are a few restrictions to avoid mathematically undefined - expressions: it is not possible to take the logarithm of a Taylor - kernel which has no terms (i.e. is zero), or to divide by such a - beast. There are some provisions made to detect singularities - during expansion: poles that arise because the denominator has - zeros at the expansion point are detected and properly treated, - i.e. the Taylor kernel will start with a negative power. (This - is accomplished by expanding numerator and denominator separately - and combining the results.) Essential singularities of the known - functions (see above) are handled correctly. - \par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorkeeporiginal} - -${\footnote \pard\plain \sl240 \fs20 $ taylorkeeporiginal} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1146} - - K{\footnote \pard\plain \sl240 \fs20 K taylorkeeporiginal switch;switch} - -}{\b\f2 TAYLORKEEPORIGINAL}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - }{\f3 taylorkeeporiginal} {\f2 , if set to }{\f3 on} {\f2 , forces the - } -{\f2\uldb taylor}{\v\f2 taylor} -{\f2 and all Taylor kernel manipulation operators to - keep the original expression, i.e. the expression that was Taylor - expanded. All operations performed on the Taylor kernels are also - applied to this expression which can be recovered using the operator - } -{\f2\uldb taylororiginal}{\v\f2 taylororiginal} -{\f2 . Default is }{\f3 off} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylororiginal} - -${\footnote \pard\plain \sl240 \fs20 $ taylororiginal} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1147} - - K{\footnote \pard\plain \sl240 \fs20 K taylororiginal operator;operator} - -}{\b\f2 TAYLORORIGINAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - Recovers the original expression (the one that was expanded) from - the Taylor kernel that is given as its argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylororiginal} {\f4 () or - }{\f3 taylororiginal} {\f4 - \par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - taylororiginal hugo; \par - \par - ***** Taylor kernel doesn't have an original part in TAYLORORIGINAL \par - \par - \par - on taylorkeeporiginal; \par - \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - taylororiginal hugo; \par - \par - X \par - E \par - \par -\pard \sl240 }{\f2 An error is signalled if the argument is not a Taylor kernel or if - the original expression was not kept, i.e. if - } -{\f2\uldb taylorkeeporiginal}{\v\f2 taylorkeeporiginal} -{\f2 was set }{\f3 off} {\f2 during expansion. - \par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorprintorder} - -${\footnote \pard\plain \sl240 \fs20 $ taylorprintorder} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1148} - - K{\footnote \pard\plain \sl240 \fs20 K taylorprintorder switch;switch} - -}{\b\f2 TAYLORPRINTORDER}{\f2 \tab \tab \tab \tab }{\b\f2 switch}{\f2 \par -\par - - }{\f3 taylorprintorder} {\f2 , if set to }{\f3 on} {\f2 , causes the remainder - to be printed in big-O notation. Otherwise, three dots are printed. - Default is }{\f3 on} {\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorprintterms} - -${\footnote \pard\plain \sl240 \fs20 $ taylorprintterms} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1149} - - K{\footnote \pard\plain \sl240 \fs20 K taylorprintterms variable;variable} - -}{\b\f2 TAYLORPRINTTERMS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - Only a certain number of (non-zero) coefficients are printed. If - there are more, an expression of the form }{\f3 n terms} {\f2 is printed - to indicate how many non-zero terms have been suppressed. The - number of terms printed is given by the value of the shared - algebraic variable }{\f3 taylorprintterms} {\f2 . Allowed values are - integers and the special identifier }{\f3 all} {\f2 . The latter setting - specifies that all terms are to be printed. The default setting is - 5. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - taylor(e^(x^2+y^2),x,0,4,y,0,4); \par - \par - \par - 2 1 4 2 2 2 5 5 \par - 1 + Y + -*Y + X + Y *X + (4 terms) + O(X ,Y ) \par - 2 \par - \par - \par - taylorprintterms := all; \par - \par - TAYLORPRINTTERMS := ALL \par - \par - \par - taylor(e^(x^2+y^2),x,0,4,y,0,4); \par - \par - \par - 2 1 4 2 2 2 1 4 2 1 4 1 2 4 \par - 1 + Y + -*Y + X + Y *X + -*Y *X + -*X + -*Y *X \par - 2 2 2 2 \par - 1 4 4 5 5 \par - + -*Y *X + O(X ,Y ) \par - 4 \par - \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorrevert} - -${\footnote \pard\plain \sl240 \fs20 $ taylorrevert} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1150} - - K{\footnote \pard\plain \sl240 \fs20 K taylorrevert operator;operator} - -}{\b\f2 TAYLORREVERT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - }{\f3 taylorrevert} {\f2 allows reversion of a Taylor series of a - function f, i.e., to compute the first terms of the expansion of the - inverse of }{\f4 f}{\f2 from the expansion of }{\f4 f}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylorrevert} {\f4 (}{\f3 ,} {\f4 - }{\f3 ,} {\f4 ) - \par -\par -}{\f2 \par -The first argument must evaluate to a Taylor kernel with the second - argument being one of its expansion variables. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - taylor(u - u**2,u,0,5); \par - \par - 2 6 \par - U - U + O(U ) \par - \par - \par - taylorrevert (ws,u,x); \par - \par - 2 3 4 5 6 \par - X + X + 2*X + 5*X + 14*X + O(X ) \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylorseriesp} - -${\footnote \pard\plain \sl240 \fs20 $ taylorseriesp} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1151} - - K{\footnote \pard\plain \sl240 \fs20 K taylorseriesp operator;operator} - -}{\b\f2 TAYLORSERIESP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - This operator may be used to determine if its argument is a Taylor - kernel. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylorseriesp} {\f4 () or }{\f3 taylorseriesp} {\f4 - - \par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - if taylorseriesp hugo then OK; \par - \par - OK \par - \par - \par - if taylorseriesp(hugo + y) then OK else NO; \par - \par - \par - NO \par - \par -\pard \sl240 }{\f2 Note that this operator is subject to the same restrictions as, - e.g., }{\f3 ordp} {\f2 or }{\f3 numberp} {\f2 , i.e. it may only be used in - boolean expressions in }{\f3 if} {\f2 or }{\f3 let} {\f2 statements. - \par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylortemplate} - -${\footnote \pard\plain \sl240 \fs20 $ taylortemplate} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1152} - - K{\footnote \pard\plain \sl240 \fs20 K taylortemplate operator;operator} - -}{\b\f2 TAYLORTEMPLATE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - The template of a Taylor kernel, i.e. the list of all variables - with respect to which expansion took place together with expansion - point and order can be extracted using -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylortemplate} {\f4 () or - }{\f3 taylortemplate} {\f4 - \par -\par -}{\f2 \par -This returns a list of lists with the three elements - (VAR,VAR0,ORDER). An error is signalled if the argument is not a - Taylor kernel. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - taylortemplate hugo; \par - \par - \{\{X,0,2\}\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # taylortostandard} - -${\footnote \pard\plain \sl240 \fs20 $ taylortostandard} - -+{\footnote \pard\plain \sl240 \fs20 + g36:1153} - - K{\footnote \pard\plain \sl240 \fs20 K taylortostandard operator;operator} - -}{\b\f2 TAYLORTOSTANDARD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - This operator converts all Taylor kernels in its argument into - standard form and resimplifies the result. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 taylortostandard} {\f4 () or - }{\f3 taylortostandard} {\f4 -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - hugo := taylor(exp(x),x,0,2); \par - \par - 1 2 3 \par - HUGO := 1 + X + -*X + O(X ) \par - 2 \par - \par - \par - taylortostandard hugo; \par - \par - 2 \par - X + 2*X + 2 \par - ------------ \par - 2 \par - \par -\pard \sl240 }{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g36} - -${\footnote \pard\plain \sl240 \fs20 $ Taylor series} - -+{\footnote \pard\plain \sl240 \fs20 + index:0036} -}{\b\f2 Taylor series}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb TAYLOR introduction} -{\v\f2 TAYLOR_introduction}{\f2 \par -}{\f2 \tab}{\f2\uldb taylor operator} -{\v\f2 taylor}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorautocombine switch} -{\v\f2 taylorautocombine}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorautoexpand switch} -{\v\f2 taylorautoexpand}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorcombine operator} -{\v\f2 taylorcombine}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorkeeporiginal switch} -{\v\f2 taylorkeeporiginal}{\f2 \par -}{\f2 \tab}{\f2\uldb taylororiginal operator} -{\v\f2 taylororiginal}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorprintorder switch} -{\v\f2 taylorprintorder}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorprintterms variable} -{\v\f2 taylorprintterms}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorrevert operator} -{\v\f2 taylorrevert}{\f2 \par -}{\f2 \tab}{\f2\uldb taylorseriesp operator} -{\v\f2 taylorseriesp}{\f2 \par -}{\f2 \tab}{\f2\uldb taylortemplate operator} -{\v\f2 taylortemplate}{\f2 \par -}{\f2 \tab}{\f2\uldb taylortostandard operator} -{\v\f2 taylortostandard}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GNUPLOT_and_REDUCE} - -${\footnote \pard\plain \sl240 \fs20 $ GNUPLOT_and_REDUCE} - -+{\footnote \pard\plain \sl240 \fs20 + g37:1154} - - K{\footnote \pard\plain \sl240 \fs20 K GNUPLOT and REDUCE introduction;introduction} - -}{\b\f2 GNUPLOT AND REDUCE}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -\par -\par -The GNUPLOT system provides easy to use graphics output -for curves or surfaces which are defined by -formulas and/or data sets. GNUPLOT supports -a great variety of output devices -such as X-windows, VGA screen, postscript, picTeX. -The REDUCE GNUPLOT package lets one use the GNUPLOT -graphical output directly from inside REDUCE, either for -the interactive display of curves/surfaces or for the production -of pictures on paper. -\par -\par -Note that this package may not be supported on all system -platforms. -\par -\par -For a detailed description you should read the GNUPLOT -system documentation, available together with the GNUPLOT -installation material from several servers by anonymous FTP. -\par -\par -The REDUCE developers thank the GNUPLOT people for their permission -to distribute GNUPLOT together with REDUCE. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Axes_names} - -${\footnote \pard\plain \sl240 \fs20 $ Axes_names} - -+{\footnote \pard\plain \sl240 \fs20 + g37:1155} - - K{\footnote \pard\plain \sl240 \fs20 K Axes names concept;concept} - -}{\b\f2 AXES NAMES}{\f2 \par -\par - -Inside REDUCE the choice of variable names for a graph is completely -free. For referring to the GNUPLOT axes the names -X and Y for 2 dimensions, X,Y and Z for 3 dimensions are used -in the usual schoolbook sense independent from the variables of -the REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Pointset} - -${\footnote \pard\plain \sl240 \fs20 $ Pointset} - -+{\footnote \pard\plain \sl240 \fs20 + g37:1156} - - K{\footnote \pard\plain \sl240 \fs20 K plot;Pointset type;type} - -}{\b\f2 POINTSET}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - - \par -\par -A curve can be give as set of precomputed points (a polygon) -in 2 or 3 dimensions. Such a point set is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -of points, where each point is a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 2 (or 3) -numbers. These numbers are interpreted as }{\f3 (x,y)} {\f2 -(or }{\f3 x,y,z} {\f2 ) coordinates. All points of one set must have -the same dimension. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 Also a surface in 3d can be given by precomputed points, -but only on a logically orthogonal mesh: the surface is defined -by a list of curves (in 3d) which must have a uniform length. -GNUPLOT then will draw an orthogonal mesh by first drawing the -given lines, and second connecting the 1st point of the 1st curve -with the 1st point of the 2nd curve, that one with the 1st point -of the 3rd curve and so on for all curves and for all indexes. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PLOT} - -${\footnote \pard\plain \sl240 \fs20 $ PLOT} - -+{\footnote \pard\plain \sl240 \fs20 + g37:1157} - - K{\footnote \pard\plain \sl240 \fs20 K plot;graphics;PLOT command;command} - -}{\b\f2 PLOT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The command }{\f3 plot} {\f2 is the main entry for drawing a -picture from inside REDUCE. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 plot} {\f4 (,,...) -\par -\par -}{\f2 \par -where is a , a or an ,,,) -\par -\par -}{\f2 \par -, :- matrices. -\par -\par -, :- positive integers. -\par -\par -}{\f3 copy_into} {\f2 copies matrix into with -(1,1) at (,). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -G := mat((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)); \par - \par - \par - [0 0 0 0 0] \par - [ ] \par - [0 0 0 0 0] \par - [ ] \par - g := [0 0 0 0 0] \par - [ ] \par - [0 0 0 0 0] \par - [ ] \par - [0 0 0 0 0] \par - \par - \par - \par -copy_into(A,G,1,2); \par - \par - [0 1 2 3 0] \par - [ ] \par - [0 4 5 6 0] \par - [ ] \par - [0 7 8 9 0] \par - [ ] \par - [0 0 0 0 0] \par - [ ] \par - [0 0 0 0 0] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb augment_columns}{\v\f2 augment_columns} -{\f2 , } -{\f2\uldb extend}{\v\f2 extend} -{\f2 , } -{\f2\uldb matrix_augment}{\v\f2 matrix_augment} -{\f2 , -} -{\f2\uldb matrix_stack}{\v\f2 matrix_stack} -{\f2 , } -{\f2\uldb stack_rows}{\v\f2 stack_rows} -{\f2 , } -{\f2\uldb sub_matrix}{\v\f2 sub_matrix} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # diagonal} - -${\footnote \pard\plain \sl240 \fs20 $ diagonal} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1191} - - K{\footnote \pard\plain \sl240 \fs20 K diagonal operator;operator} - -}{\b\f2 DIAGONAL}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 diagonal} {\f4 (\{\}) -\par -\par -}{\f2 \par -(If you are feeling lazy then the braces can be omitted.) -\par -\par - :- each can be either a scalar expression or a -square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -}{\f3 diagonal} {\f2 creates a matrix that contains the input on the -diagonal. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -H := mat((66,77),(88,99)); \par - \par - [66 77] \par - h := [ ] \par - [88 99] \par - \par - \par - \par -diagonal(\{A,x,H\}); \par - \par - [1 2 3 0 0 0 ] \par - [ ] \par - [4 5 6 0 0 0 ] \par - [ ] \par - [7 8 9 0 0 0 ] \par - [ ] \par - [0 0 0 x 0 0 ] \par - [ ] \par - [0 0 0 0 66 77] \par - [ ] \par - [0 0 0 0 88 99] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb jordan_block}{\v\f2 jordan_block} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # extend} - -${\footnote \pard\plain \sl240 \fs20 $ extend} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1192} - - K{\footnote \pard\plain \sl240 \fs20 K extend operator;operator} - -}{\b\f2 EXTEND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 extend} {\f4 (,,,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -, :- positive integers. -\par -\par - :- algebraic expression or symbol. -\par -\par -}{\f3 extend} {\f2 returns a copy of that has been extended by - rows and columns. The new entries are made equal to -. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -extend(A,1,2,x); \par - \par - [1 2 3 x x] \par - [ ] \par - [4 5 6 x x] \par - [ ] \par - [7 8 9 x x] \par - [ ] \par - [x x x x x] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb copy_into}{\v\f2 copy_into} -{\f2 , } -{\f2\uldb matrix_augment}{\v\f2 matrix_augment} -{\f2 , } -{\f2\uldb matrix_stack}{\v\f2 matrix_stack} -{\f2 , -} -{\f2\uldb remove_columns}{\v\f2 remove_columns} -{\f2 , } -{\f2\uldb remove_rows}{\v\f2 remove_rows} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # find_companion} - -${\footnote \pard\plain \sl240 \fs20 $ find_companion} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1193} - - K{\footnote \pard\plain \sl240 \fs20 K find_companion operator;operator} - -}{\b\f2 FIND_COMPANION}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 find_companion} {\f4 (,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par - :- the variable. -\par -\par -Given a companion matrix, }{\f3 find_companion} {\f2 finds the polynomial -from which it was made. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -C := companion(x^4+17*x^3-9*x^2+11,x); \par - \par - \par - [0 0 0 -11] \par - [ ] \par - [1 0 0 0 ] \par - c := [ ] \par - [0 1 0 9 ] \par - [ ] \par - [0 0 1 -17] \par - \par - \par - \par -find_companion(C,x); \par - \par - 4 3 2 \par - x +17*x -9*x +11 \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb companion}{\v\f2 companion} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # get_columns} - -${\footnote \pard\plain \sl240 \fs20 $ get_columns} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1194} - - K{\footnote \pard\plain \sl240 \fs20 K get_columns operator;operator} - -}{\b\f2 GET_COLUMNS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Get columns, get rows: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 get_columns} {\f4 (,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par - :- either a positive integer or a list of positive - integers. -\par -\par -}{\f3 get_columns} {\f2 removes the columns of specified in - and returns them as a list of column matrices. -\par -\par -}{\f3 get_rows} {\f2 performs the same task on the rows of . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -get_columns(A,\{1,3\}); \par - \par - \{ \par - [1] \par - [ ] \par - [4] \par - [ ] \par - [7] \par - , \par - [3] \par - [ ] \par - [6] \par - [ ] \par - [9] \par - \} \par - \par - \par - \par -get_rows(A,2); \par - \par - \{ \par - [4 5 6] \par - \} \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb augment_columns}{\v\f2 augment_columns} -{\f2 , } -{\f2\uldb stack_rows}{\v\f2 stack_rows} -{\f2 , } -{\f2\uldb sub_matrix}{\v\f2 sub_matrix} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # get_rows} - -${\footnote \pard\plain \sl240 \fs20 $ get_rows} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1195} - - K{\footnote \pard\plain \sl240 \fs20 K get_rows operator;operator} - -}{\b\f2 GET_ROWS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb get_columns}{\v\f2 get_columns} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # gram_schmidt} - -${\footnote \pard\plain \sl240 \fs20 $ gram_schmidt} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1196} - - K{\footnote \pard\plain \sl240 \fs20 K gram_schmidt operator;operator} - -}{\b\f2 GRAM_SCHMIDT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 gram_schmidt} {\f4 (\{\}) -\par -\par -}{\f2 \par -(If you are feeling lazy then the braces can be omitted.) -\par -\par - :- linearly independent vectors. Each vector must be -written as a list, eg:\{1,0,0\}. -\par -\par -}{\f3 gram_schmidt} {\f2 performs the gram_schmidt orthonormalization on -the input vectors. -\par -\par -It returns a list of orthogonal normalized vectors. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -gram_schmidt(\{\{1,0,0\},\{1,1,0\},\{1,1,1\}\}); \par - \par - \par - \{\{1,0,0\},\{0,1,0\},\{0,0,1\}\} \par - \par - \par - \par -gram_schmidt(\{\{1,2\},\{3,4\}\}); \par - \par - \par - 1 2 2*sqrt(5) -sqrt(5) \par - \{\{ ------- , ------- \},\{ --------- , -------- \}\} \par - sqrt(5) sqrt(5) 5 5 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # hermitian_tp} - -${\footnote \pard\plain \sl240 \fs20 $ hermitian_tp} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1197} - - K{\footnote \pard\plain \sl240 \fs20 K hermitian_tp operator;operator} - -}{\b\f2 HERMITIAN_TP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 hermitian_tp} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -}{\f3 hermitian_tp} {\f2 computes the hermitian transpose of . -\par -\par -This is a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 in which the (i,j)'th entry is the conjugate -of the (j,i)'th entry of . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -J := mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); \par - \par - \par - [i + 1 i + 2 i + 3] \par - [ ] \par - j := [ 4 5 2 ] \par - [ ] \par - [ 1 i 0 ] \par - \par - \par - \par -hermitian_tp(j); \par - \par - [ - i + 1 4 1 ] \par - [ ] \par - [ - i + 2 5 - i] \par - [ ] \par - [ - i + 3 2 0 ] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb tp}{\v\f2 TP} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # hessian} - -${\footnote \pard\plain \sl240 \fs20 $ hessian} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1198} - - K{\footnote \pard\plain \sl240 \fs20 K hessian operator;operator} - -}{\b\f2 HESSIAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 hessian} {\f4 (,) -\par -\par -}{\f2 \par - :- a scalar expression. -\par -\par - :- either a single variable or a list of - variables. -\par -\par -}{\f3 hessian} {\f2 computes the hessian matrix of w.r.t. the -variables in . -\par -\par -This is an n by n matrix where n is the number of variables and the -(i,j)'th entry is } -{\f2\uldb df}{\v\f2 DF} -{\f2 (,(i), -(j)). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -hessian(x*y*z+x^2,\{w,x,y,z\}); \par - \par - [0 0 0 0] \par - [ ] \par - [0 2 z y] \par - [ ] \par - [0 z 0 x] \par - [ ] \par - [0 y x 0] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb df}{\v\f2 DF} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # hilbert} - -${\footnote \pard\plain \sl240 \fs20 $ hilbert} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1199} - - K{\footnote \pard\plain \sl240 \fs20 K hilbert operator;operator} - -}{\b\f2 HILBERT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 hilbert} {\f4 (,) -\par -\par -}{\f2 \par - :- a positive integer. -\par -\par - :- an algebraic expression. -\par -\par -}{\f3 hilbert} {\f2 computes the square hilbert matrix of dimension -. -\par -\par -This is the symmetric matrix in which the (i,j)'th entry is -1/(i+j-). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -hilbert(3,y+x); \par - \par - [ - 1 - 1 - 1 ] \par - [----------- ----------- -----------] \par - [ x + y - 2 x + y - 3 x + y - 4 ] \par - [ ] \par - [ - 1 - 1 - 1 ] \par - [----------- ----------- -----------] \par - [ x + y - 3 x + y - 4 x + y - 5 ] \par - [ ] \par - [ - 1 - 1 - 1 ] \par - [----------- ----------- -----------] \par - [ x + y - 4 x + y - 5 x + y - 6 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # jacobian} - -${\footnote \pard\plain \sl240 \fs20 $ jacobian} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1200} - - K{\footnote \pard\plain \sl240 \fs20 K jacobian operator;operator} - -}{\b\f2 JACOBIAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 jacobian} {\f4 (,) -\par -\par -}{\f2 \par - :- either a single algebraic expression or a list - of algebraic expressions. -\par -\par - :- either a single variable or a list of - variables. -\par -\par -}{\f3 jacobian} {\f2 computes the jacobian matrix of -w.r.t. . -\par -\par -This is a matrix whose (i,j)'th entry is } -{\f2\uldb df}{\v\f2 DF} -{\f2 ( -(i),(j)). -\par -\par -The matrix is n by m where n is the number of variables and m the number -of expressions. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -jacobian(\{x^4,x*y^2,x*y*z^3\},\{w,x,y,z\}); \par - \par - \par - [ 3 ] \par - [0 4*x 0 0 ] \par - [ ] \par - [ 2 ] \par - [0 y 2*x*y 0 ] \par - [ ] \par - [ 3 3 2] \par - [0 y*z x*z 3*x*y*z ] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb hessian}{\v\f2 hessian} -{\f2 , } -{\f2\uldb df}{\v\f2 DF} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # jordan_block} - -${\footnote \pard\plain \sl240 \fs20 $ jordan_block} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1201} - - K{\footnote \pard\plain \sl240 \fs20 K jordan_block operator;operator} - -}{\b\f2 JORDAN_BLOCK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 jordan_block} {\f4 (,) -\par -\par -}{\f2 \par - :- an algebraic expression or symbol. -\par -\par - :- a positive integer. -\par -\par -}{\f3 jordan_block} {\f2 computes the square jordan block matrix J of -dimension . -\par -\par -The entries of J are: -\par -\par -J(i,i) = for i=1 - ... n, J(i,i+1) = 1 for i=1 - ... n-1, and all other entries are 0. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -jordan\_block(x,5); \par - \par - [x 1 0 0 0] \par - [ ] \par - [0 x 1 0 0] \par - [ ] \par - [0 0 x 1 0] \par - [ ] \par - [0 0 0 x 1] \par - [ ] \par - [0 0 0 0 x] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb diagonal}{\v\f2 diagonal} -{\f2 , } -{\f2\uldb companion}{\v\f2 companion} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # lu_decom} - -${\footnote \pard\plain \sl240 \fs20 $ lu_decom} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1202} - - K{\footnote \pard\plain \sl240 \fs20 K lu_decom operator;operator} - -}{\b\f2 LU_DECOM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 lu_decom} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 containing either numeric entries - or imaginary entries with numeric coefficients. -\par -\par -}{\f3 lu_decom} {\f2 performs LU decomposition on , ie: it -returns \{L,U\} where L is a lower diagonal } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 , U an -upper diagonal } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 and A = LU. -\par -\par -Caution: -\par -\par -The algorithm used can swap the rows of during the -calculation. This means that LU does not equal but a row -equivalent of it. Due to this, }{\f3 lu_decom} {\f2 returns \{L,U,vec\}. -The call }{\f3 convert(meta\{matrix} {\f2 ,vec)\} will return the matrix that has -been decomposed, i.e: LU = convert(,vec). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -K := mat((1,3,5),(-4,3,7),(8,6,4)); \par - \par - \par - [1 3 5] \par - [ ] \par - k := [-4 3 7] \par - [ ] \par - [8 6 4] \par - \par - \par - \par -on rounded; \par - \par -lu := lu_decom(K); \par - \par - lu := \{ \par - [8 0 0 ] \par - [ ] \par - [-4 6.0 0 ] \par - [ ] \par - [1 2.25 1.125] \par - , \par - [1 0.75 0.5] \par - [ ] \par - [0 1 1.5] \par - [ ] \par - [0 0 1 ] \par - , \par - [3 2 3]\} \par - \par - \par - \par -first lu * second lu; \par - \par - [8 6.0 4.0] \par - [ ] \par - [-4 3.0 7.0] \par - [ ] \par - [1 3.0 5.0] \par - \par - \par - \par -convert(K,third lu); \par - \par - P := mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); \tab \par - [i + 1 i + 2 i + 3] \par - [ ] \par - p := [ 4 5 2 ] \par - [ ] \par - [ 1 i 0 ] \par - \par - \par -lu := lu_decom(P); \par - \par - lu := \{ \par - [ 1 0 0 ] \par - [ ] \par - [ 4 - 4*i + 5 0 ] \par - [ ] \par - [i + 1 3 0.414634146341*i + 2.26829268293] \par - , \par - [1 i 0 ] \par - [ ] \par - [0 1 0.19512195122*i + 0.243902439024] \par - [ ] \par - [0 0 1 ] \par - , \par - [3 2 3]\} \par - \par - \par - \par -first lu * second lu; \par - \par - [ 1 i 0 ] \par - [ ] \par - [ 4 5 2.0 ] \par - [ ] \par - [i + 1 i + 2 i + 3.0] \par - \par - \par - \par -convert(P,third lu); \par - \par - [ 1 i 0 ] \par - [ ] \par - [ 4 5 2 ] \par - [ ] \par - [i + 1 i + 2 i + 3] \par - \par -\pard \sl240 }{\f2 -\par -\par -Related functions: } -{\f2\uldb cholesky}{\v\f2 cholesky} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # make_identity} - -${\footnote \pard\plain \sl240 \fs20 $ make_identity} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1203} - - K{\footnote \pard\plain \sl240 \fs20 K make_identity operator;operator} - -}{\b\f2 MAKE_IDENTITY}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 make_identity} {\f4 () -\par -\par -}{\f2 \par - :- a positive integer. -\par -\par -}{\f3 make_identity} {\f2 creates the identity matrix of dimension -. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -make_identity(4); \par - \par - [1 0 0 0] \par - [ ] \par - [0 1 0 0] \par - [ ] \par - [0 0 1 0] \par - [ ] \par - [0 0 0 1] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb diagonal}{\v\f2 diagonal} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # matrix_augment} - -${\footnote \pard\plain \sl240 \fs20 $ matrix_augment} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1204} - - K{\footnote \pard\plain \sl240 \fs20 K matrix_augment operator;operator} - -}{\b\f2 MATRIX_AUGMENT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Matrix augment, matrix stack: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 matrix_augment} {\f4 \{\} -\par -\par -}{\f2 \par -(If you are feeling lazy then the braces can be omitted.) -\par -\par - :- matrices. -\par -\par -}{\f3 matrix_augment} {\f2 sticks the matrices in -together horizontally. -\par -\par -}{\f3 matrix_stack} {\f2 sticks the matrices in -together vertically. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -matrix_augment(\{A,A\}); \par - \par - [1 2 3 1 2 3] \par - [ ] \par - [4 5 6 4 5 6] \par - [ ] \par - [7 8 9 7 8 9] \par - \par - \par - \par -matrix_stack(A,A); \par - \par - [1 2 3] \par - [ ] \par - [4 5 6] \par - [ ] \par - [7 8 9] \par - [ ] \par - [1 2 3] \par - [ ] \par - [4 5 6] \par - [ ] \par - [7 8 9] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb augment_columns}{\v\f2 augment_columns} -{\f2 , } -{\f2\uldb stack_rows}{\v\f2 stack_rows} -{\f2 , } -{\f2\uldb sub_matrix}{\v\f2 sub_matrix} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # matrixp} - -${\footnote \pard\plain \sl240 \fs20 $ matrixp} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1205} - - K{\footnote \pard\plain \sl240 \fs20 K matrixp operator;operator} - -}{\b\f2 MATRIXP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 matrixp} {\f4 () -\par -\par -}{\f2 \par - :- anything you like. -\par -\par -}{\f3 matrixp} {\f2 is a boolean function that returns t if the input is a -matrix and nil otherwise. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -matrixp A; \par - \par - t \par - \par - \par -matrixp(doodlesackbanana); \par - \par - nil \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb squarep}{\v\f2 squarep} -{\f2 , } -{\f2\uldb symmetricp}{\v\f2 symmetricp} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # matrix_stack} - -${\footnote \pard\plain \sl240 \fs20 $ matrix_stack} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1206} - - K{\footnote \pard\plain \sl240 \fs20 K matrix_stack operator;operator} - -}{\b\f2 MATRIX_STACK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb matrix_augment}{\v\f2 matrix_augment} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # minor} - -${\footnote \pard\plain \sl240 \fs20 $ minor} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1207} - - K{\footnote \pard\plain \sl240 \fs20 K minor operator;operator} - -}{\b\f2 MINOR}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 minor} {\f4 (,,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -, :- positive integers. -\par -\par -}{\f3 minor} {\f2 computes the (,)'th minor of . -This is created by removing the 'th row and the 'th -column from . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -minor(A,1,3); \par - \par - [4 5] \par - [ ] \par - [7 8] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb remove_columns}{\v\f2 remove_columns} -{\f2 , } -{\f2\uldb remove_rows}{\v\f2 remove_rows} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # mult_columns} - -${\footnote \pard\plain \sl240 \fs20 $ mult_columns} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1208} - - K{\footnote \pard\plain \sl240 \fs20 K mult_columns operator;operator} - -}{\b\f2 MULT_COLUMNS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Mult columns, mult rows: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 mult_columns} {\f4 (,,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par - :- a positive integer or a list of positive - integers. -\par -\par - :- an algebraic expression. -\par -\par -}{\f3 mult_columns} {\f2 returns a copy of in which the -columns specified in have been multiplied by -. -\par -\par -}{\f3 mult_rows} {\f2 performs the same task on the rows of . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -mult_columns(A,\{1,3\},x); \par - \par - [ x 2 3*x] \par - [ ] \par - [4*x 5 6*x] \par - [ ] \par - [7*x 8 9*x] \par - \par - \par - \par -mult_rows(A,2,10); \par - \par - [1 2 3 ] \par - [ ] \par - [40 50 60] \par - [ ] \par - [7 8 9 ] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb add_to_columns}{\v\f2 add_to_columns} -{\f2 , } -{\f2\uldb add_to_rows}{\v\f2 add_to_rows} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # mult_rows} - -${\footnote \pard\plain \sl240 \fs20 $ mult_rows} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1209} - - K{\footnote \pard\plain \sl240 \fs20 K mult_rows operator;operator} - -}{\b\f2 MULT_ROWS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb mult_columns}{\v\f2 mult_columns} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # pivot} - -${\footnote \pard\plain \sl240 \fs20 $ pivot} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1210} - - K{\footnote \pard\plain \sl240 \fs20 K pivot operator;operator} - -}{\b\f2 PIVOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 pivot} {\f4 (,,) -\par -\par -}{\f2 \par - :- a matrix. -\par -\par -, :- positive integers such that (, - ) neq 0. -\par -\par -}{\f3 pivot} {\f2 pivots about it's (,)'th -entry. - \par -\par -To do this, multiples of the 'th row are added to every other -row in the matrix. -\par -\par -This means that the 'th column will be 0 except for the -(,)'th entry. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -pivot(A,2,3); \par - \par - [ - 1 ] \par - [-1 ------ 0] \par - [ 2 ] \par - [ ] \par - [4 5 6] \par - [ ] \par - [ 1 ] \par - [1 --- 0] \par - [ 2 ] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb rows_pivot}{\v\f2 rows_pivot} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # pseudo_inverse} - -${\footnote \pard\plain \sl240 \fs20 $ pseudo_inverse} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1211} - - K{\footnote \pard\plain \sl240 \fs20 K pseudo_inverse operator;operator} - -}{\b\f2 PSEUDO_INVERSE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 pseudo_inverse} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -}{\f3 pseudo_inverse} {\f2 , also known as the Moore-Penrose inverse, -computes the pseudo inverse of . -\par -\par -Given the singular value decomposition of , i.e: -A = }{\f4 U*P*V^T}{\f2 , then the pseudo inverse }{\f4 A^-1}{\f2 is defined by -}{\f4 A^-1 = V^T*P^-1*U}{\f2 . -\par -\par -Thus * pseudo_inverse(A) = Id. -(Id is the identity matrix). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -R := mat((1,2,3,4),(9,8,7,6)); \par - \par - [1 2 3 4] \par - r := [ ] \par - [9 8 7 6] \par - \par - \par - \par -on rounded; \par - \par -pseudo_inverse(R); \par - \par - [ - 0.199999999996 0.100000000013 ] \par - [ ] \par - [ - 0.0499999999988 0.0500000000037 ] \par - [ ] \par - [ 0.0999999999982 - 5.57825497203e-12] \par - [ ] \par - [ 0.249999999995 - 0.0500000000148 ] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb svd}{\v\f2 svd} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # random_matrix} - -${\footnote \pard\plain \sl240 \fs20 $ random_matrix} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1212} - - K{\footnote \pard\plain \sl240 \fs20 K random_matrix operator;operator} - -}{\b\f2 RANDOM_MATRIX}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 random_matrix} {\f4 (,,) -\par -\par -}{\f2 \par -,, :- positive integers. -\par -\par -}{\f3 random_matrix} {\f2 creates an by matrix with random -entries in the range -limit < entry < limit. -\par -\par -Switches: -\par -\par -}{\f3 imaginary} {\f2 :- if on then matrix entries are x+i*y where -limit < x,y - < . -\par -\par -}{\f3 not_negative} {\f2 :- if on then 0 < entry < . In the imaginary - case we have 0 < x,y < . -\par -\par -}{\f3 only_integer} {\f2 :- if on then each entry is an integer. In the imaginary - case x and y are integers. -\par -\par -}{\f3 symmetric} {\f2 :- if on then the matrix is symmetric. -\par -\par -}{\f3 upper_matrix} {\f2 :- if on then the matrix is upper triangular. -\par -\par -}{\f3 lower_matrix} {\f2 :- if on then the matrix is lower triangular. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -on rounded; \par - \par -random_matrix(3,3,10); \par - \par - [ - 8.11911717343 - 5.71677292768 0.620580830035 ] \par - [ ] \par - [ - 0.032596262422 7.1655452861 5.86742633837 ] \par - [ ] \par - [ - 9.37155438255 - 7.55636708637 - 8.88618627557] \par - \par - \par - \par -on only_integer, not_negative, upper_matrix, imaginary; \par - \par -random_matrix(4,4,10); \par - \par - [70*i + 15 28*i + 8 2*i + 79 27*i + 44] \par - [ ] \par - [ 0 46*i + 95 9*i + 63 95*i + 50] \par - [ ] \par - [ 0 0 31*i + 75 14*i + 65] \par - [ ] \par - [ 0 0 0 5*i + 52 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # remove_columns} - -${\footnote \pard\plain \sl240 \fs20 $ remove_columns} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1213} - - K{\footnote \pard\plain \sl240 \fs20 K remove_columns operator;operator} - -}{\b\f2 REMOVE_COLUMNS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Remove columns, remove rows: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 remove_columns} {\f4 (,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . - :- either a positive integer or a list of positive - integers. -\par -\par -}{\f3 remove_columns} {\f2 removes the columns specified in - from . -\par -\par -}{\f3 remove_rows} {\f2 performs the same task on the rows of . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -remove_columns(A,2); \par - \par - [1 3] \par - [ ] \par - [4 6] \par - [ ] \par - [7 9] \par - \par - \par - \par -remove_rows(A,\{1,3\}); \par - \par - [4 5 6] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb minor}{\v\f2 minor} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # remove_rows} - -${\footnote \pard\plain \sl240 \fs20 $ remove_rows} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1214} - - K{\footnote \pard\plain \sl240 \fs20 K remove_rows operator;operator} - -}{\b\f2 REMOVE_ROWS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb remove_columns}{\v\f2 remove_columns} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # row_dim} - -${\footnote \pard\plain \sl240 \fs20 $ row_dim} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1215} - - K{\footnote \pard\plain \sl240 \fs20 K row_dim operator;operator} - -}{\b\f2 ROW_DIM}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb column_dim}{\v\f2 column_dim} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # rows_pivot} - -${\footnote \pard\plain \sl240 \fs20 $ rows_pivot} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1216} - - K{\footnote \pard\plain \sl240 \fs20 K rows_pivot operator;operator} - -}{\b\f2 ROWS_PIVOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 rows_pivot} {\f4 (,,,\{\}) -\par -\par -}{\f2 \par - :- a namerefmatrix. -\par -\par -, :- positive integers such that (, - ) neq 0. -\par -\par - :- positive integer or a list of positive integers. -\par -\par -}{\f3 rows_pivot} {\f2 performs the same task as }{\f3 pivot} {\f2 but applies -the pivot only to the rows specified in . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -N := mat((1,2,3),(4,5,6),(7,8,9),(1,2,3),(4,5,6)); \par - \par - \par - [1 2 3] \par - [ ] \par - [4 5 6] \par - [ ] \par - n := [7 8 9] \par - [ ] \par - [1 2 3] \par - [ ] \par - [4 5 6] \par - \par - \par - \par -rows_pivot(N,2,3,\{4,5\}); \par - \par - [1 2 3] \par - [ ] \par - [4 5 6] \par - [ ] \par - [7 8 9] \par - [ ] \par - [ - 1 ] \par - [-1 ------ 0] \par - [ 2 ] \par - [ ] \par - [0 0 0] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb pivot}{\v\f2 pivot} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # simplex} - -${\footnote \pard\plain \sl240 \fs20 $ simplex} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1217} - - K{\footnote \pard\plain \sl240 \fs20 K simplex operator;operator} - -}{\b\f2 SIMPLEX}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 simplex} {\f4 (,, -\{\}) -\par -\par -}{\f2 \par - :- either max or min (signifying maximize and - minimize). -\par -\par - :- the function you are maximizing or - minimizing. -\par -\par - :- the constraint inequalities. Each one must - be of the form sum of variables ( - <=,=,>=) number. -\par -\par -}{\f3 simplex} {\f2 applies the revised simplex algorithm to find the -optimal(either maximum or minimum) value of the - under the linear inequality constraints. -\par -\par -It returns \{optimal value,\{ values of variables at this optimal\}\}. -\par -\par -The algorithm implies that all the variables are non-negative. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - simplex(max,x+y,\{x>=10,y>=20,x+y<=25\}); \par - \par - \par - ***** Error in simplex: Problem has no feasible solution \par - \par - \par - \par -simplex(max,10x+5y+5.5z,\{5x+3z<=200,x+0.1y+0.5z<=12, \par -0.1x+0.2y+0.3z<=9, 30x+10y+50z<=1500\}); \par - \par - \par - \{525.0,\{x=40.0,y=25.0,z=0\}\} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # squarep} - -${\footnote \pard\plain \sl240 \fs20 $ squarep} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1218} - - K{\footnote \pard\plain \sl240 \fs20 K squarep operator;operator} - -}{\b\f2 SQUAREP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 squarep} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -}{\f3 squarep} {\f2 is a predicate that returns t if the is -square and nil otherwise. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -squarep(mat((1,3,5))); \par - \par - nil \par - \par - \par -squarep(A); \par -t \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb matrixp}{\v\f2 matrixp} -{\f2 , } -{\f2\uldb symmetricp}{\v\f2 symmetricp} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # stack_rows} - -${\footnote \pard\plain \sl240 \fs20 $ stack_rows} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1219} - - K{\footnote \pard\plain \sl240 \fs20 K stack_rows operator;operator} - -}{\b\f2 STACK_ROWS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb augment_columns}{\v\f2 augment_columns} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # sub_matrix} - -${\footnote \pard\plain \sl240 \fs20 $ sub_matrix} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1220} - - K{\footnote \pard\plain \sl240 \fs20 K sub_matrix operator;operator} - -}{\b\f2 SUB_MATRIX}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 sub_matrix} {\f4 (,,) -\par -\par -}{\f2 \par - :- a matrix. -, :- either a positive integer or a - list of positive integers. -\par -\par -namesub_matrix produces the matrix consisting of the intersection of -the rows specified in and the columns specified in -. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -sub_matrix(A,\{1,3\},\{2,3\}); \par - \par - [2 3] \par - [ ] \par - [8 9] \par - \par -\pard \sl240 }{\f2 Related functions: -} -{\f2\uldb augment_columns}{\v\f2 augment_columns} -{\f2 , } -{\f2\uldb stack_rows}{\v\f2 stack_rows} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # svd} - -${\footnote \pard\plain \sl240 \fs20 $ svd} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1221} - - K{\footnote \pard\plain \sl240 \fs20 K singular value decomposition;svd operator;operator} - -}{\b\f2 SVD}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -Singular value decomposition: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 svd} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 containing only numeric entries. -\par -\par -}{\f3 svd} {\f2 computes the singular value decomposition of . -\par -\par -It returns -\par -\par -\{U,P,V\} -\par -\par -where A = }{\f4 U*P*V^T}{\f2 -\par -\par -and P = diag(sigma(1) ... sigma(n)). -\par -\par -sigma(i) for i= 1 ... n are the singular values of -. -\par -\par -n is the column dimension of . -\par -\par -The singular values of are the non-negative square roots -of the eigenvalues of }{\f4 A^T*A}{\f2 . -\par -\par -U and V are such that }{\f4 U*U^T = V*V^T = V^T*V}{\f2 = Id. -Id is the identity matrix. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -Q := mat((1,3),(-4,3)); \par - \par - [1 3] \par - q := [ ] \par - [-4 3] \par - \par - \par - \par -on rounded; \par - \par -svd(Q); \par - \par - \{ \par - [ 0.289784137735 0.957092029805] \par - [ ] \par - [ - 0.957092029805 0.289784137735] \par - , \par - [5.1491628629 0 ] \par - [ ] \par - [ 0 2.9130948854] \par - , \par - [ - 0.687215403194 0.726453707825 ] \par - [ ] \par - [ - 0.726453707825 - 0.687215403194] \par - \} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # swap_columns} - -${\footnote \pard\plain \sl240 \fs20 $ swap_columns} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1222} - - K{\footnote \pard\plain \sl240 \fs20 K swap_columns operator;operator} - -}{\b\f2 SWAP_COLUMNS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -Swap columns, swap rows: -\par -\par - \par -syntax: \par -}{\f4 }{\f3 swap_columns} {\f4 (,,) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -, :- positive integers. - \par -\par -}{\f3 swap_columns} {\f2 swaps column of with -column . -\par -\par -}{\f3 swap_rows} {\f2 performs the same task on two rows of . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -swap_columns(A,2,3); \par - \par - [1 3 2] \par - [ ] \par - [4 6 5] \par - [ ] \par - [7 9 8] \par - \par - \par - \par -swap_rows(A,1,3); \par - \par - [7 8 9] \par - [ ] \par - [4 5 6] \par - [ ] \par - [1 2 3] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb swap_entries}{\v\f2 swap_entries} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # swap_entries} - -${\footnote \pard\plain \sl240 \fs20 $ swap_entries} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1223} - - K{\footnote \pard\plain \sl240 \fs20 K swap_entries operator;operator} - -}{\b\f2 SWAP_ENTRIES}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 swap_entries} {\f4 (,\{,\},\{, -\}) -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -,,, :- positive integers. -\par -\par -}{\f3 swap_entries} {\f2 swaps (,) with -(,). -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -swap_entries(A,\{1,1\},\{3,3\}); \par - \par - [9 2 3] \par - [ ] \par - [4 5 6] \par - [ ] \par - [7 8 1] \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb swap_columns}{\v\f2 swap_columns} -{\f2 , } -{\f2\uldb swap_rows}{\v\f2 swap_rows} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # swap_rows} - -${\footnote \pard\plain \sl240 \fs20 $ swap_rows} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1224} - - K{\footnote \pard\plain \sl240 \fs20 K swap_rows operator;operator} - -}{\b\f2 SWAP_ROWS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -see: } -{\f2\uldb swap_columns}{\v\f2 swap_columns} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # symmetricp} - -${\footnote \pard\plain \sl240 \fs20 $ symmetricp} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1225} - - K{\footnote \pard\plain \sl240 \fs20 K symmetricp operator;operator} - -}{\b\f2 SYMMETRICP}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 symmetricp} {\f4 () -\par -\par -}{\f2 \par - :- a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 . -\par -\par -}{\f3 symmetricp} {\f2 is a predicate that returns t if the matrix is symmetric -and nil otherwise. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -symmetricp(make_identity(11)); \par - \par - t \par - \par - \par -symmetricp(A); \par - \par - nil \par - \par -\pard \sl240 }{\f2 Related functions: } -{\f2\uldb matrixp}{\v\f2 matrixp} -{\f2 , } -{\f2\uldb squarep}{\v\f2 squarep} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # toeplitz} - -${\footnote \pard\plain \sl240 \fs20 $ toeplitz} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1226} - - K{\footnote \pard\plain \sl240 \fs20 K toeplitz operator;operator} - -}{\b\f2 TOEPLITZ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 toeplitz} {\f4 () -\par -\par -}{\f2 \par -(If you are feeling lazy then the braces can be omitted.) -\par -\par - :- list of algebraic expressions. -\par -\par -}{\f3 toeplitz} {\f2 creates the toeplitz matrix from the . -\par -\par -This is a square symmetric matrix in which the first expression is -placed on the diagonal and the i'th expression is placed on the (i-1)'th -sub and super diagonals. -\par -\par -It has dimension n where n is the number of expressions. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -toeplitz(\{w,x,y,z\}); \par - \par - [w x y z] \par - [ ] \par - [x w x y] \par - [ ] \par - [y x w x] \par - [ ] \par - [z y x w] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # vandermonde} - -${\footnote \pard\plain \sl240 \fs20 $ vandermonde} - -+{\footnote \pard\plain \sl240 \fs20 + g38:1227} - - K{\footnote \pard\plain \sl240 \fs20 K vandermonde operator;operator} - -}{\b\f2 VANDERMONDE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par - \par -syntax: \par -}{\f4 }{\f3 vandermonde} {\f4 (\{\}) -\par -\par -}{\f2 \par -(If you are feeling lazy then the braces can be omitted.) -\par -\par - :- list of algebraic expressions. -\par -\par -}{\f3 vandermonde} {\f2 creates the vandermonde matrix from the -. -\par -\par -This is the square matrix in which the (i,j)'th entry is -}{\f4 (i)^(j-1)}{\f2 . -\par -\par -It has dimension n where n is the number of expressions. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -vandermonde(\{x,2*y,3*z\}); \par - \par - \par - [ 2 ] \par - [1 x x ] \par - [ ] \par - [ 2] \par - [1 2*y 4*y ] \par - [ ] \par - [ 2] \par - [1 3*z 9*z ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g38} - -${\footnote \pard\plain \sl240 \fs20 $ Linear Algebra package} - -+{\footnote \pard\plain \sl240 \fs20 + index:0038} -}{\b\f2 Linear Algebra package}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Linear Algebra package introduction} -{\v\f2 Linear_Algebra_package}{\f2 \par -}{\f2 \tab}{\f2\uldb fast_la switch} -{\v\f2 fast_la}{\f2 \par -}{\f2 \tab}{\f2\uldb add_columns operator} -{\v\f2 add_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb add_rows operator} -{\v\f2 add_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb add_to_columns operator} -{\v\f2 add_to_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb add_to_rows operator} -{\v\f2 add_to_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb augment_columns operator} -{\v\f2 augment_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb band_matrix operator} -{\v\f2 band_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb block_matrix operator} -{\v\f2 block_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb char_matrix operator} -{\v\f2 char_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb char_poly operator} -{\v\f2 char_poly}{\f2 \par -}{\f2 \tab}{\f2\uldb cholesky operator} -{\v\f2 cholesky}{\f2 \par -}{\f2 \tab}{\f2\uldb coeff_matrix operator} -{\v\f2 coeff_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb column_dim operator} -{\v\f2 column_dim}{\f2 \par -}{\f2 \tab}{\f2\uldb companion operator} -{\v\f2 companion}{\f2 \par -}{\f2 \tab}{\f2\uldb copy_into operator} -{\v\f2 copy_into}{\f2 \par -}{\f2 \tab}{\f2\uldb diagonal operator} -{\v\f2 diagonal}{\f2 \par -}{\f2 \tab}{\f2\uldb extend operator} -{\v\f2 extend}{\f2 \par -}{\f2 \tab}{\f2\uldb find_companion operator} -{\v\f2 find_companion}{\f2 \par -}{\f2 \tab}{\f2\uldb get_columns operator} -{\v\f2 get_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb get_rows operator} -{\v\f2 get_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb gram_schmidt operator} -{\v\f2 gram_schmidt}{\f2 \par -}{\f2 \tab}{\f2\uldb hermitian_tp operator} -{\v\f2 hermitian_tp}{\f2 \par -}{\f2 \tab}{\f2\uldb hessian operator} -{\v\f2 hessian}{\f2 \par -}{\f2 \tab}{\f2\uldb hilbert operator} -{\v\f2 hilbert}{\f2 \par -}{\f2 \tab}{\f2\uldb jacobian operator} -{\v\f2 jacobian}{\f2 \par -}{\f2 \tab}{\f2\uldb jordan_block operator} -{\v\f2 jordan_block}{\f2 \par -}{\f2 \tab}{\f2\uldb lu_decom operator} -{\v\f2 lu_decom}{\f2 \par -}{\f2 \tab}{\f2\uldb make_identity operator} -{\v\f2 make_identity}{\f2 \par -}{\f2 \tab}{\f2\uldb matrix_augment operator} -{\v\f2 matrix_augment}{\f2 \par -}{\f2 \tab}{\f2\uldb matrixp operator} -{\v\f2 matrixp}{\f2 \par -}{\f2 \tab}{\f2\uldb matrix_stack operator} -{\v\f2 matrix_stack}{\f2 \par -}{\f2 \tab}{\f2\uldb minor operator} -{\v\f2 minor}{\f2 \par -}{\f2 \tab}{\f2\uldb mult_columns operator} -{\v\f2 mult_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb mult_rows operator} -{\v\f2 mult_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb pivot operator} -{\v\f2 pivot}{\f2 \par -}{\f2 \tab}{\f2\uldb pseudo_inverse operator} -{\v\f2 pseudo_inverse}{\f2 \par -}{\f2 \tab}{\f2\uldb random_matrix operator} -{\v\f2 random_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb remove_columns operator} -{\v\f2 remove_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb remove_rows operator} -{\v\f2 remove_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb row_dim operator} -{\v\f2 row_dim}{\f2 \par -}{\f2 \tab}{\f2\uldb rows_pivot operator} -{\v\f2 rows_pivot}{\f2 \par -}{\f2 \tab}{\f2\uldb simplex operator} -{\v\f2 simplex}{\f2 \par -}{\f2 \tab}{\f2\uldb squarep operator} -{\v\f2 squarep}{\f2 \par -}{\f2 \tab}{\f2\uldb stack_rows operator} -{\v\f2 stack_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb sub_matrix operator} -{\v\f2 sub_matrix}{\f2 \par -}{\f2 \tab}{\f2\uldb svd operator} -{\v\f2 svd}{\f2 \par -}{\f2 \tab}{\f2\uldb swap_columns operator} -{\v\f2 swap_columns}{\f2 \par -}{\f2 \tab}{\f2\uldb swap_entries operator} -{\v\f2 swap_entries}{\f2 \par -}{\f2 \tab}{\f2\uldb swap_rows operator} -{\v\f2 swap_rows}{\f2 \par -}{\f2 \tab}{\f2\uldb symmetricp operator} -{\v\f2 symmetricp}{\f2 \par -}{\f2 \tab}{\f2\uldb toeplitz operator} -{\v\f2 toeplitz}{\f2 \par -}{\f2 \tab}{\f2\uldb vandermonde operator} -{\v\f2 vandermonde}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Smithex} - -${\footnote \pard\plain \sl240 \fs20 $ Smithex} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1228} - - K{\footnote \pard\plain \sl240 \fs20 K Smithex operator;operator} - -}{\b\f2 SMITHEX}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 smithex} {\f2 computes the Smith normal form S of a -} -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 A (say). It returns \{S,P,}{\f4 P^-1}{\f2 \} where }{\f4 P*S*P^-1 = A}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 smithex} {\f4 (,) -\par -\par - :- a rectangular } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 of univariate polynomials in - . - :- the variable. -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - a := mat((x,x+1),(0,3*x^2)); \par - \par - [x x + 1] \par - [ ] \par - a := [ 2 ] \par - [0 3*x ] \par - \par - \par - \par - smithex(a,x); \par - \par - [1 0 ] [1 0] [x x + 1] \par - \{ [ ], [ ], [ ] \} \par - [ 3] [ 2 ] [ ] \par - [0 x ] [3*x 1] [-3 -3 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Smithex\_int} - -${\footnote \pard\plain \sl240 \fs20 $ Smithex_int} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1229} - - K{\footnote \pard\plain \sl240 \fs20 K Smithex_int operator;operator} - -}{\b\f2 SMITHEX\_INT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 smithex_int} {\f2 performs the same task as }{\f3 smithex} {\f2 -but on matrices containing only integer entries. Namely, -}{\f3 smithex_int} {\f2 returns \{S,P,}{\f4 P^-1}{\f2 \} where S is the smith normal -form of the input } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 (A say), and }{\f4 P*S*P^-1 = A}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 smithex_int} {\f4 () -\par -\par - :- a rectangular } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 of integer entries. -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par - a := mat((9,-36,30),(-36,192,-180),(30,-180,180)); \par - \par - \par - [ 9 -36 30 ] \par - [ ] \par - a := [-36 192 -180] \par - [ ] \par - [30 -180 180 ] \par - \par - \par - \par - smithex_int(a); \par - \par - [3 0 0 ] [-17 -5 -4 ] [1 -24 30 ] \par - [ ] [ ] [ ] \par - \{ [0 12 0 ], [64 19 15 ], [-1 25 -30] \} \par - [ ] [ ] [ ] \par - [0 0 60] [-50 -15 -12] [0 -1 1 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Frobenius} - -${\footnote \pard\plain \sl240 \fs20 $ Frobenius} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1230} - - K{\footnote \pard\plain \sl240 \fs20 K Frobenius operator;operator} - -}{\b\f2 FROBENIUS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 frobenius} {\f2 computes the }{\f3 frobenius} {\f2 normal form F of a -} -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 (A say). It returns \{F,P,}{\f4 P^-1}{\f2 \} where }{\f4 P*F*P^-1 = A}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 frobenius} {\f4 () -\par -\par - :- a square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 . -\par -\par -}{\f2 \par -Field Extensions: -\par -\par -By default, calculations are performed in the rational numbers. To -extend this field the } -{\f2\uldb arnum}{\v\f2 ARNUM} -{\f2 package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -\par -\par -Modular Arithmetic: -\par -\par -}{\f3 Frobenius} {\f2 can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See -} -{\f2\uldb ratjordan}{\v\f2 Ratjordan} -{\f2 for an example. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - a := mat((x,x^2),(3,5*x)); \par - \par - [ 2 ] \par - [x x ] \par - a := [ ] \par - [3 5*x] \par - \par - \par - frobenius(a); \par - \par - [ 2] [1 x] [ - x ] \par - \{ [0 - 2*x ], [ ], [1 -----] \} \par - [ ] [0 3] [ 3 ] \par - [1 6*x ] [ ] \par - [ 1 ] \par - [0 --- ] \par - [ 3 ] \par - \par - \par - load\_package arnum; \par - \par - defpoly sqrt2**2-2; \par - \par - a := mat((sqrt2,5),(7*sqrt2,sqrt2)); \par - \par - \par - [ sqrt2 5 ] \par - a := [ ] \par - [7*sqrt2 sqrt2] \par - \par - \par - \par - frobenius(a); \par - \par - [0 35*sqrt2 - 2] [1 sqrt2 ] [ 1 ] \par - \{ [ ], [ ], [1 - --- ] \} \par - [1 2*sqrt2 ] [1 7*sqrt2] [ 7 ] \par - [ ] \par - [ 1 ] \par - [0 ----*sqrt2] \par - [ 14 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Ratjordan} - -${\footnote \pard\plain \sl240 \fs20 $ Ratjordan} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1231} - - K{\footnote \pard\plain \sl240 \fs20 K Ratjordan operator;operator} - -}{\b\f2 RATJORDAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 ratjordan} {\f2 computes the rational Jordan normal form R -of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 (A say). It returns \{R,P,}{\f4 P^-1}{\f2 \} where }{\f4 P*R*P^-1 = A}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ratjordan} {\f4 () -\par -\par - :- a square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 . -\par -\par -}{\f2 \par -Field Extensions: -\par -\par -By default, calculations are performed in the rational numbers. To -extend this field the }{\f3 arnum} {\f2 package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See } -{\f2\uldb frobenius}{\v\f2 Frobenius} -{\f2 for an example. -\par -\par -Modular Arithmetic: -\par -\par -}{\f3 ratjordan} {\f2 can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - a := mat((5,4*x),(2,x^2)); \par - \par - [5 4*x] \par - [ ] \par - a := [ 2 ] \par - [2 x ] \par - \par - \par - \par - ratjordan(a); \par - \par - [0 x*( - 5*x + 8)] [1 5] [ -5 ] \par - \{ [ ], [ ], [1 -----] \} \par - [ 2 ] [0 2] [ 2 ] \par - [1 x + 5 ] [ ] \par - [ 1 ] \par - [0 -----] \par - [ 2 ] \par - \par - \par - on modular; \par - \par - setmod 23; \par - \par - a := mat((12,34),(56,78)); \par - \par - [12 11] \par - a := [ ] \par - [10 9 ] \par - \par - \par - \par - ratjordan(a); \par - \par - [15 0] [16 8] [1 21] \par - \{ [ ], [ ], [ ] \} \par - [0 6] [19 4] [1 4 ] \par - \par - \par - \par - on balanced\_mod; \par - \par - ratjordan(a); \par - \par - [- 8 0] [ - 7 8] [1 - 2] \par - \{ [ ], [ ], [ ] \} \par - [ 0 6] [ - 4 4] [1 4 ] \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Jordansymbolic} - -${\footnote \pard\plain \sl240 \fs20 $ Jordansymbolic} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1232} - - K{\footnote \pard\plain \sl240 \fs20 K Jordansymbolic operator;operator} - -}{\b\f2 JORDANSYMBOLIC}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 jordansymbolic} {\f2 computes the Jordan normal form J -of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 (A say). It returns \{J,L,P,}{\f4 P^-1}{\f2 \} where -}{\f4 P*J*P^-1 = A}{\f2 . L = \{ll,mm\} where mm is a name and ll is a list of -irreducible factors of p(mm). -\par -\par - \par -syntax: \par -}{\f4 }{\f3 jordansymbolic} {\f4 () -\par -\par - :- a square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 . -\par -\par -}{\f2 \par -Field Extensions: -\par -\par -By default, calculations are performed in the rational numbers. To -extend this field the } -{\f2\uldb arnum}{\v\f2 ARNUM} -{\f2 package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See } -{\f2\uldb frobenius}{\v\f2 Frobenius} -{\f2 for an example. -\par -\par -Modular Arithmetic: -\par -\par -}{\f3 jordansymbolic} {\f2 can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See -} -{\f2\uldb ratjordan}{\v\f2 Ratjordan} -{\f2 for an example. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - a := mat((1,y),(2,5*y)); \par - \par - [1 y ] \par - a := [ ] \par - [2 5*y] \par - \par - \par - \par - jordansymbolic(a); \par - \par - \{ \par - [lambda11 0 ] \par - [ ] \par - [ 0 lambda12] \par - , \par - 2 \par - lambda - 5*lambda*y - lambda + 3*y,lambda, \par - [lambda11 - 5*y lambda12 - 5*y] \par - [ ] \par - [ 2 2 ] \par - , \par - [ 2*lambda11 - 5*y - 1 5*lambda11*y - lambda11 - y + 1 ] \par - [---------------------- ---------------------------------] \par - [ 2 2 ] \par - [ 25*y - 2*y + 1 2*(25*y - 2*y + 1) ] \par - [ ] \par - [ 2*lambda12 - 5*y - 1 5*lambda12*y - lambda12 - y + 1 ] \par - [---------------------- ---------------------------------] \par - [ 2 2 ] \par - [ 25*y - 2*y + 1 2*(25*y - 2*y + 1) ] \par - \} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Jordan} - -${\footnote \pard\plain \sl240 \fs20 $ Jordan} - -+{\footnote \pard\plain \sl240 \fs20 + g39:1233} - - K{\footnote \pard\plain \sl240 \fs20 K Jordan operator;operator} - -}{\b\f2 JORDAN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The operator }{\f3 jordan} {\f2 computes the Jordan normal form J -of a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 (A say). It returns \{J,P,}{\f4 P^-1}{\f2 \} where }{\f4 P*J*P^-1 = A}{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 jordan} {\f4 () -\par -\par - :- a square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f4 . -\par -\par -}{\f2 \par -Field Extensions: -By default, calculations are performed in the rational numbers. To -extend this field the }{\f3 arnum} {\f2 package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See } -{\f2\uldb frobenius}{\v\f2 Frobenius} -{\f2 for an example. -\par -\par -Modular Arithmetic: -}{\f3 Jordan} {\f2 can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See -} -{\f2\uldb ratjordan}{\v\f2 Ratjordan} -{\f2 for an example. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par - a := mat((1,x),(0,x)); \par - \par - [1 x] \par - a := [ ] \par - [0 x] \par - \par - \par - \par - jordan(a); \par - \par - \{ \par - [1 0] \par - [ ] \par - [0 x] \par - , \par - [ 1 x ] \par - [------- --------------] \par - [ x - 1 2 ] \par - [ x - 2*x + 1 ] \par - [ ] \par - [ 1 ] \par - [ 0 ------- ] \par - [ x - 1 ] \par - , \par - [x - 1 - x ] \par - [ ] \par - [ 0 x - 1] \par - \} \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g39} - -${\footnote \pard\plain \sl240 \fs20 $ Matrix Normal Forms} - -+{\footnote \pard\plain \sl240 \fs20 + index:0039} -}{\b\f2 Matrix Normal Forms}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Smithex operator} -{\v\f2 Smithex}{\f2 \par -}{\f2 \tab}{\f2\uldb Smithex\_int operator} -{\v\f2 Smithex\_int}{\f2 \par -}{\f2 \tab}{\f2\uldb Frobenius operator} -{\v\f2 Frobenius}{\f2 \par -}{\f2 \tab}{\f2\uldb Ratjordan operator} -{\v\f2 Ratjordan}{\f2 \par -}{\f2 \tab}{\f2\uldb Jordansymbolic operator} -{\v\f2 Jordansymbolic}{\f2 \par -}{\f2 \tab}{\f2\uldb Jordan operator} -{\v\f2 Jordan}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # Miscellaneous_Packages} - -${\footnote \pard\plain \sl240 \fs20 $ Miscellaneous_Packages} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1234} - - K{\footnote \pard\plain \sl240 \fs20 K Miscellaneous Packages introduction;introduction} - -}{\b\f2 MISCELLANEOUS PACKAGES}{\f2 \tab \tab \tab \tab }{\b\f2 introduction}{\f2 \par -\par - -REDUCE includes a large number of packages that have been contributed by -users from various fields. Some of these, together with their relevant -commands, switches and so on (e.g., the NUMERIC package), have -been described elsewhere. This section describes those packages for which -no separate help material exists. Each has its own switches, commands, -and operators, and some redefine special characters to aid in their -notation. However, the brief descriptions given here do not include all -such information. Readers are referred to the general package -documentation in this case, which can be found, along with the source -code, under the subdirectories }{\f3 doc} {\f2 and }{\f3 src} {\f2 in the -}{\f3 reduce} {\f2 directory. The } -{\f2\uldb load_package}{\v\f2 LOAD\_PACKAGE} -{\f2 command is used to -load the files you wish into your system. There will be a short delay -while the package is loaded. A package cannot be unloaded. Once it -is in your system, it stays there until you end the session. Each package -also has a test file, which you will find under its name in the -}{\f3 $reduce/xmpl} {\f2 directory. -\par -\par -Finally, it should be mentioned that such user-contributed packages are -unsupported; any questions or problems should be directed to their -authors. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ALGINT_package} - -${\footnote \pard\plain \sl240 \fs20 $ ALGINT_package} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1235} - - K{\footnote \pard\plain \sl240 \fs20 K integration of square roots;integration;ALGINT package;package} - -}{\b\f2 ALGINT}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: James H. Davenport -\par -\par -The }{\f3 algint} {\f2 package provides indefinite integration of square roots. -This package, which is an extension of the basic integration package -distributed with REDUCE, will analytically integrate a wide range of -expressions involving square roots. The } -{\f2\uldb algint}{\v\f2 ALGINT} -{\f2 switch provides for -the use of the facilities given by the package, and is automatically turned -on when the package is loaded. If you want to return to the standard -integration algorithms, turn } -{\f2\uldb algint}{\v\f2 ALGINT} -{\f2 off. An error message is given -if you try to turn the } -{\f2\uldb algint}{\v\f2 ALGINT} -{\f2 switch on when its package is not -loaded. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # APPLYSYM} - -${\footnote \pard\plain \sl240 \fs20 $ APPLYSYM} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1236} - - K{\footnote \pard\plain \sl240 \fs20 K symmetries;differential equations;APPLYSYM package;package} - -}{\b\f2 APPLYSYM}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Thomas Wolf -\par -\par -This package provides programs APPLYSYM, QUASILINPDE and DETRAFO for -computing with infinitesimal symmetries of differential equations. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ARNUM} - -${\footnote \pard\plain \sl240 \fs20 $ ARNUM} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1237} - - K{\footnote \pard\plain \sl240 \fs20 K algebraic numbers;ARNUM package;package} - -}{\b\f2 ARNUM}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Eberhard Schruefer -\par -\par -This package provides facilities for handling algebraic numbers as polynomial -coefficients in REDUCE calculations. It includes facilities for introducing -indeterminates to represent algebraic numbers, for calculating splitting -fields, and for factoring and finding greatest common divisors in such -domains. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ASSIST} - -${\footnote \pard\plain \sl240 \fs20 $ ASSIST} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1238} - - K{\footnote \pard\plain \sl240 \fs20 K utilities;ASSIST package;package} - -}{\b\f2 ASSIST}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Hubert Caprasse -\par -\par -ASSIST contains a large number of additional general purpose functions -that allow a user to better adapt REDUCE to various calculational -strategies and to make the programming task more straightforward and more -efficient. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # AVECTOR} - -${\footnote \pard\plain \sl240 \fs20 $ AVECTOR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1239} - - K{\footnote \pard\plain \sl240 \fs20 K dot product;cross product;vector algebra;AVECTOR package;package} - -}{\b\f2 AVECTOR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: David Harper -\par -\par -This package provides REDUCE with the ability to perform vector algebra -using the same notation as scalar algebra. The basic algebraic operations -are supported, as are differentiation and integration of vectors with -respect to scalar variables, cross product and dot product, component -manipulation and application of scalar functions (e.g. cosine) to a vector -to yield a vector result. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BOOLEAN} - -${\footnote \pard\plain \sl240 \fs20 $ BOOLEAN} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1240} - - K{\footnote \pard\plain \sl240 \fs20 K boolean expressions;BOOLEAN package;package} - -}{\b\f2 BOOLEAN}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package supports the computation with boolean expressions in the -propositional calculus. The data objects are composed from algebraic -expressions connected by the infix boolean operators and, or, - implies, equiv, and the unary prefix operator not. - Boolean allows you to simplify expressions built from these -operators, and to test properties like equivalence, subset property etc. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CALI} - -${\footnote \pard\plain \sl240 \fs20 $ CALI} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1241} - - K{\footnote \pard\plain \sl240 \fs20 K commutative algebra;Groebner;polynomial;CALI package;package} - -}{\b\f2 CALI}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Hans-Gert Gr"abe -\par -\par -This package contains algorithms for computations in commutative algebra -closely related to the Groebner algorithm for ideals and modules. Its -heart is a new implementation of the Groebner algorithm that also allows -for the computation of syzygies. This implementation is also applicable to -submodules of free modules with generators represented as rows of a matrix. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CAMAL} - -${\footnote \pard\plain \sl240 \fs20 $ CAMAL} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1242} - - K{\footnote \pard\plain \sl240 \fs20 K Fourier series;celestial mechanics;CAMAL package;package} - -}{\b\f2 CAMAL}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: John P. Fitch -\par -\par -This packages implements in REDUCE the Fourier transform procedures of the -CAMAL package for celestial mechanics. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CHANGEVR} - -${\footnote \pard\plain \sl240 \fs20 $ CHANGEVR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1243} - - K{\footnote \pard\plain \sl240 \fs20 K CHANGEVR package;package} - -}{\b\f2 CHANGEVR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: G. Ucoluk -\par -\par -This package provides facilities for changing the independent variables in -a differential equation. It is basically the application of the chain rule. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMPACT} - -${\footnote \pard\plain \sl240 \fs20 $ COMPACT} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1244} - - K{\footnote \pard\plain \sl240 \fs20 K simplification;COMPACT package;package} - -}{\b\f2 COMPACT}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Anthony C. Hearn -\par -\par -COMPACT is a package of functions for the reduction of a polynomial in the -presence of side relations. COMPACT applies the side relations to the -polynomial so that an equivalent expression results with as few terms as -possible. For example, the evaluation of -\par -\par -\pard \tx3420 }{\f4 \par - compact(s*(1-sin x^2)+c*(1-cos x^2)+sin x^2+cos x^2, \par - \{cos x^2+sin x^2=1\}); \par - \par -\pard \sl240 }{\f2 yields the result -\pard \tx3420 }{\f4 \par - \par - 2 2 \par - SIN(X) *C + COS(X) *S + 1 \par -\pard \sl240 }{\f2 \par -\par -The first argument to the operator }{\f3 compact} {\f2 is the expression -and the second is a list of side relations that can be -equations or simple expressions (implicitly equated to zero). The -kernels in the side relations may also be free variables with the -same meaning as in rules, e.g. -\pard \tx3420 }{\f4 \par - sin_cos_identity := \{cos ~w^2+sin ~w^2=1\}$ \par - compact(u,in_cos_identity); \par -\pard \sl240 }{\f2 \par -\par -Also the full rule syntax with the replacement operator is allowed here. - \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONTFR} - -${\footnote \pard\plain \sl240 \fs20 $ CONTFR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1245} - - K{\footnote \pard\plain \sl240 \fs20 K continued fraction;CONTFR package;package} - -}{\b\f2 CONTFR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package provides for the simultaneous approximation of a real number -by a continued fraction and a rational number with optional user -controlled precision (an upper bound for the denominator). -\par -\par -To use this package, the }{\f3 misc} {\f2 package should be loaded. One can then -use the operator }{\f3 continued_fraction} {\f2 to approximate the real -number by a continued fraction. This operator has one or two arguments, the -number to be converted and an optional precision. The result is a list of -two elements: the first is the rational value of the approximation and the -second the list of terms of the continued fraction that represent the same -value according to the definition t0 +1/(t1 + 1/(t2 + ...)). The -second optional parameter }{\f3 size} {\f2 is an upper bound on the absolute -value of the result denominator. If omitted, the approximation is performed -up to the current system precision. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -continued\_fraction pi; \par - \par - 1146408 \par - \{---------,\{3,7,15,1,292,1,1,1,2,1\}\} \par - 364913 \par - \par - \par - \par -continued\_fraction(pi,100); \par - \par - 22 \par - \{----,\{3,7\}\} \par - 7 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CRACK} - -${\footnote \pard\plain \sl240 \fs20 $ CRACK} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1246} - - K{\footnote \pard\plain \sl240 \fs20 K differential equation;CRACK package;package} - -}{\b\f2 CRACK}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Andreas Brand, Thomas Wolf -\par -\par -CRACK is a package for solving overdetermined systems of partial or -ordinary differential equations (PDEs, ODEs). Examples of programs which -make use of CRACK for investigating ODEs (finding symmetries, first -integrals, an equivalent Lagrangian or a ``differential factorization'') are -included. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CVIT} - -${\footnote \pard\plain \sl240 \fs20 $ CVIT} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1247} - - K{\footnote \pard\plain \sl240 \fs20 K Dirac algebra;CVIT package;package} - -}{\b\f2 CVIT}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: V.Ilyin, A.Kryukov, A.Rodionov, A.Taranov -\par -\par -This package provides an alternative method for computing traces of Dirac -gamma matrices, based on an algorithm by Cvitanovich that treats gamma -matrices as 3-j symbols. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DEFINT} - -${\footnote \pard\plain \sl240 \fs20 $ DEFINT} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1248} - - K{\footnote \pard\plain \sl240 \fs20 K definite integration;DEFINT package;package} - -}{\b\f2 DEFINT}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Kerry Gaskell, Stanley M. Kameny, Winfried Neun -\par -\par -This package finds the definite integral of an expression in a stated -interval. It uses several techniques, including an innovative approach -based on the Meijer G-function, and contour integration. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DESIR} - -${\footnote \pard\plain \sl240 \fs20 $ DESIR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1249} - - K{\footnote \pard\plain \sl240 \fs20 K differential equation;DESIR package;package} - -}{\b\f2 DESIR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: C. Dicrescenzo, F. Richard-Jung, E. Tournier -\par -\par -This package enables the basis of formal solutions to be computed for an -ordinary homogeneous differential equation with polynomial coefficients -over Q of any order, in the neighborhood of zero (regular or irregular -singular point, or ordinary point). -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DFPART} - -${\footnote \pard\plain \sl240 \fs20 $ DFPART} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1250} - - K{\footnote \pard\plain \sl240 \fs20 K partial derivative;DFPART package;package} - -}{\b\f2 DFPART}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package supports computations with total and partial derivatives of -formal function objects. Such computations can be useful in the context -of differential equations or power series expansions. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # DUMMY} - -${\footnote \pard\plain \sl240 \fs20 $ DUMMY} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1251} - - K{\footnote \pard\plain \sl240 \fs20 K dummy variable;DUMMY package;package} - -}{\b\f2 DUMMY}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Alain Dresse -\par -\par -This package allows a user to find the canonical form of expressions -involving dummy variables. In that way, the simplification of -polynomial expressions can be fully done. The indeterminates are general -operator objects endowed with as few properties as possible. In that way -the package may be used in a large spectrum of applications. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EXCALC} - -${\footnote \pard\plain \sl240 \fs20 $ EXCALC} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1252} - - K{\footnote \pard\plain \sl240 \fs20 K differential form;differential calculus;exterior calculus;EXCALC package;package} - -}{\b\f2 EXCALC}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Eberhard Schruefer -\par -\par -The }{\f3 excalc} {\f2 package is designed for easy use by all who are familiar -with the calculus of Modern Differential Geometry. The program is currently -able to handle scalar-valued exterior forms, vectors and operations between -them, as well as non-scalar valued forms (indexed forms). It is thus an ideal -tool for studying differential equations, doing calculations in general -relativity and field theories, or doing simple things such as calculating the -Laplacian of a tensor field for an arbitrary given frame. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FPS} - -${\footnote \pard\plain \sl240 \fs20 $ FPS} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1253} - - K{\footnote \pard\plain \sl240 \fs20 K Laurent-Puiseux series;power series;FPS package;package} - -}{\b\f2 FPS}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Wolfram Koepf, Winfried Neun -\par -\par -This package can expand a specific class of functions into their -corresponding Laurent-Puiseux series. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FIDE} - -${\footnote \pard\plain \sl240 \fs20 $ FIDE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1254} - - K{\footnote \pard\plain \sl240 \fs20 K FIDE package;package} - -}{\b\f2 FIDE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: Richard Liska -\par -\par -This package performs automation of the process of numerically -solving partial differential equations systems (PDES) by means of -computer algebra. For PDES solving, the finite difference method is applied. -The computer algebra system REDUCE and the numerical programming -language FORTRAN are used in the presented methodology. The main aim of -this methodology is to speed up the process of preparing numerical -programs for solving PDES. This process is quite often, especially for -complicated systems, a tedious and time consuming task. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GENTRAN} - -${\footnote \pard\plain \sl240 \fs20 $ GENTRAN} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1255} - - K{\footnote \pard\plain \sl240 \fs20 K C;FORTRAN;code generation;GENTRAN package;package} - -}{\b\f2 GENTRAN}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Barbara L. Gates -\par -\par -This package is an automatic code GENerator and TRANslator. It constructs -complete numerical programs based on sets of algorithmic specifications and -symbolic expressions. Formatted FORTRAN, RATFOR or C code can be generated -through a series of interactive commands or under the control of a template -processing routine. Large expressions can be automatically segmented into -subexpressions of manageable size, and a special file-handling mechanism -maintains stacks of open I/O channels to allow output to be sent to any -number of files simultaneously and to facilitate recursive invocation of the -whole code generation process. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # IDEALS} - -${\footnote \pard\plain \sl240 \fs20 $ IDEALS} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1256} - - K{\footnote \pard\plain \sl240 \fs20 K ideal;commutative algebra;Groebner;polynomial;IDEALS package;package} - -}{\b\f2 IDEALS}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package implements the basic arithmetic for polynomial ideals by -exploiting the Groebner bases package of REDUCE. In order to save -computing time all intermediate Groebner bases are stored internally such -that time consuming repetitions are inhibited. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INEQ} - -${\footnote \pard\plain \sl240 \fs20 $ INEQ} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1257} - - K{\footnote \pard\plain \sl240 \fs20 K inequality;INEQ package;package} - -}{\b\f2 INEQ}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package supports the operator }{\f3 ineq_solve} {\f2 that -tries to solves single inequalities and sets of coupled inequalities. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INVBASE} - -${\footnote \pard\plain \sl240 \fs20 $ INVBASE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1258} - - K{\footnote \pard\plain \sl240 \fs20 K INVBASE package;package} - -}{\b\f2 INVBASE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Authors: A.Yu. Zharkov and Yu.A. Blinkov -\par -\par -Involutive bases are a new tool for solving problems in connection with -multivariate polynomials, such as solving systems of polynomial equations -and analyzing polynomial ideals. An involutive basis of polynomial ideal -is nothing but a special form of a redundant Groebner basis. The -construction of involutive bases reduces the problem of solving polynomial -systems to simple linear algebra. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LAPLACE} - -${\footnote \pard\plain \sl240 \fs20 $ LAPLACE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1259} - - K{\footnote \pard\plain \sl240 \fs20 K transform;LAPLACE package;package} - -}{\b\f2 LAPLACE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: C. Kazasov, M. Spiridonova, V. Tomov -\par -\par -This package can calculate ordinary and inverse Laplace transforms of -expressions. Documentation is in plain text. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LIE} - -${\footnote \pard\plain \sl240 \fs20 $ LIE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1260} - - K{\footnote \pard\plain \sl240 \fs20 K LIE package;package} - -}{\b\f2 LIE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Authors: Carsten and Franziska Sch"obel -\par -\par -}{\f3 Lie} {\f2 is a package of functions for the classification of real -n-dimensional Lie algebras. It consists of two modules: }{\f3 liendmc1} {\f2 -and }{\f3 lie1234} {\f2 . With the help of the functions in the }{\f3 liendmcl} {\f2 -module, real n-dimensional Lie algebras }{\f4 L}{\f2 with a derived algebra -}{\f4 L^(1)}{\f2 of dimension 1 can be classified. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # MODSR} - -${\footnote \pard\plain \sl240 \fs20 $ MODSR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1261} - - K{\footnote \pard\plain \sl240 \fs20 K modular polynomial;MODSR package;package} - -}{\b\f2 MODSR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package supports solve (M_SOLVE) and roots (M_ROOTS) operators for -modular polynomials and modular polynomial systems. The moduli need not -be primes. M_SOLVE requires a modulus to be set. M_ROOTS takes the -modulus as a second argument. For example: -\par -\par -\pard \tx3420 }{\f4 \par -on modular; setmod 8; \par -m_solve(2x=4); -> \{\{X=2\},\{X=6\}\} \par -m_solve(\{x^2-y^3=3\}); \par - -> \{\{X=0,Y=5\}, \{X=2,Y=1\}, \{X=4,Y=5\}, \{X=6,Y=1\}\} \par -m_solve(\{x=2,x^2-y^3=3\}); -> \{\{X=2,Y=1\}\} \par -off modular; \par -m_roots(x^2-1,8); -> \{1,3,5,7\} \par -m_roots(x^3-x,7); -> \{0,1,6\} \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NCPOLY} - -${\footnote \pard\plain \sl240 \fs20 $ NCPOLY} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1262} - - K{\footnote \pard\plain \sl240 \fs20 K non-commutativity;NCPOLY package;package} - -}{\b\f2 NCPOLY}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Herbert Melenk, Joachim Apel -\par -\par -This package allows the user to set up automatically a consistent -environment for computing in an algebra where the non--commutativity is -defined by Lie-bracket commutators. The package uses the REDUCE -}{\f3 noncom} {\f2 mechanism for elementary polynomial arithmetic; the commutator -rules are automatically computed from the Lie brackets. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ORTHOVEC} - -${\footnote \pard\plain \sl240 \fs20 $ ORTHOVEC} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1263} - - K{\footnote \pard\plain \sl240 \fs20 K curl;grad;div;dot product;cross product;Taylor;Laplacian;vector calculus;vector algebra;ORTHOVEC package;package} - -}{\b\f2 ORTHOVEC}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: James W. Eastwood -\par -\par -}{\f3 orthovec} {\f2 is a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars and -vectors. Operations include addition, subtraction, dot and cross -products, division, modulus, div, grad, curl, laplacian, differentiation, -integration, and Taylor expansion. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PHYSOP} - -${\footnote \pard\plain \sl240 \fs20 $ PHYSOP} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1264} - - K{\footnote \pard\plain \sl240 \fs20 K PHYSOP package;package} - -}{\b\f2 PHYSOP}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: Mathias Warns -\par -\par -This package has been designed to meet the requirements of theoretical -physicists looking for a computer algebra tool to perform complicated -calculations in quantum theory with expressions containing operators. -These operations consist mainly of the calculation of commutators between -operator expressions and in the evaluations of operator matrix elements in -some abstract space. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PM} - -${\footnote \pard\plain \sl240 \fs20 $ PM} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1265} - - K{\footnote \pard\plain \sl240 \fs20 K pattern matching;PM package;package} - -}{\b\f2 PM}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Kevin McIsaac -\par -\par -PM is a general pattern matcher similar in style to those found in systems -such as SMP and Mathematica, and is based on the pattern matcher described -in Kevin McIsaac, ``Pattern Matching Algebraic Identities'', SIGSAM Bulletin, -19 (1985), 4-13. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RANDPOLY} - -${\footnote \pard\plain \sl240 \fs20 $ RANDPOLY} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1266} - - K{\footnote \pard\plain \sl240 \fs20 K random polynomial;RANDPOLY package;package} - -}{\b\f2 RANDPOLY}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Francis J. Wright -\par -\par -This package is based on a port of the Maple random polynomial -generator together with some support facilities for the generation -of random numbers and anonymous procedures. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # REACTEQN} - -${\footnote \pard\plain \sl240 \fs20 $ REACTEQN} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1267} - - K{\footnote \pard\plain \sl240 \fs20 K chemical reaction;REACTEQN package;package} - -}{\b\f2 REACTEQN}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Herbert Melenk -\par -\par -This package allows a user to transform chemical reaction systems into -ordinary differential equation systems (ODE) corresponding to the laws of -pure mass action. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RESET} - -${\footnote \pard\plain \sl240 \fs20 $ RESET} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1268} - - K{\footnote \pard\plain \sl240 \fs20 K RESET package;package} - -}{\b\f2 RESET}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: John Fitch -\par -\par -This package defines a command command RESETREDUCE that works through the -history of previous commands, and clears any values which have been -assigned, plus any rules, arrays and the like. It also sets the various -switches to their initial values. It is not complete, but does work for -most things that cause a gradual loss of space. It would be relatively -easy to make it interactive, so allowing for selective resetting. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RESIDUE} - -${\footnote \pard\plain \sl240 \fs20 $ RESIDUE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1269} - - K{\footnote \pard\plain \sl240 \fs20 K RESIDUE package;package} - -}{\b\f2 RESIDUE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: Wolfram Koepf -\par -\par -This package supports the calculation of residues of arbitrary -expressions. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # RLFI} - -${\footnote \pard\plain \sl240 \fs20 $ RLFI} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1270} - - K{\footnote \pard\plain \sl240 \fs20 K TEX;output;RLFI package;package} - -}{\b\f2 RLFI}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Richard Liska -\par -\par -This package -adds LaTeX syntax -to REDUCE. Text generated by REDUCE in this mode can be directly -used in LaTeX source -documents. Various -mathematical constructions are supported by the interface including -subscripts, superscripts, font changing, Greek letters, divide-bars, -integral and sum signs, derivatives, and so on. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SCOPE} - -${\footnote \pard\plain \sl240 \fs20 $ SCOPE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1271} - - K{\footnote \pard\plain \sl240 \fs20 K optimization;code generation;SCOPE package;package} - -}{\b\f2 SCOPE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: J.A. van Hulzen -\par -\par -SCOPE is a package for the production of an optimized form of a set of -expressions. It applies an heuristic search for common (sub)expressions -to almost any set of proper REDUCE assignment statements. The output is -obtained as a sequence of assignment statements. }{\f3 gentran} {\f2 is used to -facilitate expression output. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SETS} - -${\footnote \pard\plain \sl240 \fs20 $ SETS} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1272} - - K{\footnote \pard\plain \sl240 \fs20 K SETS package;package} - -}{\b\f2 SETS}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: Francis J. Wright -\par -\par -The SETS package provides algebraic-mode support for set operations on -lists regarded as sets (or representing explicit sets) and on implicit -sets represented by identifiers. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SPDE} - -${\footnote \pard\plain \sl240 \fs20 $ SPDE} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1273} - - K{\footnote \pard\plain \sl240 \fs20 K Lie symmetry;differential equation;SPDE package;package} - -}{\b\f2 SPDE}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Fritz Schwartz -\par -\par -The package }{\f3 spde} {\f2 provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given system of -partial differential equations. In many cases the determining system is -solved completely automatically. In other cases the user has to provide -additional input information for the solution algorithm to terminate. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # SYMMETRY} - -${\footnote \pard\plain \sl240 \fs20 $ SYMMETRY} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1274} - - K{\footnote \pard\plain \sl240 \fs20 K SYMMETRY package;package} - -}{\b\f2 SYMMETRY}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Author: Karin Gatermann -\par -\par -This package computes symmetry-adapted bases and block diagonal forms of -matrices which have the symmetry of a group. The package is the -implementation of the theory of linear representations for small finite -groups such as the dihedral groups. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TPS} - -${\footnote \pard\plain \sl240 \fs20 $ TPS} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1275} - - K{\footnote \pard\plain \sl240 \fs20 K Taylor series;power series;TPS package;package} - -}{\b\f2 TPS}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Alan Barnes, Julian Padget -\par -\par -This package implements formal Laurent series expansions in one variable -using the domain mechanism of REDUCE. This means that power series -objects can be added, multiplied, differentiated etc., like other first -class objects in the system. A lazy evaluation scheme is used and thus -terms of the series are not evaluated until they are required for printing -or for use in calculating terms in other power series. The series are -extendible giving the user the impression that the full infinite series is -being manipulated. The errors that can sometimes occur using series that -are truncated at some fixed depth (for example when a term in the required -series depends on terms of an intermediate series beyond the truncation -depth) are thus avoided. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRI} - -${\footnote \pard\plain \sl240 \fs20 $ TRI} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1276} - - K{\footnote \pard\plain \sl240 \fs20 K TEX;output;TRI package;package} - -}{\b\f2 TRI}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Werner Antweiler -\par -\par -This package provides facilities written in REDUCE-Lisp for typesetting -REDUCE formulas -using TeX. The -TeX-REDUCE-Interface incorporates three levels -of TeX output: -without line breaking, with line breaking, and -with line breaking plus indentation. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # TRIGSIMP} - -${\footnote \pard\plain \sl240 \fs20 $ TRIGSIMP} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1277} - - K{\footnote \pard\plain \sl240 \fs20 K simplification;TRIGSIMP package;package} - -}{\b\f2 TRIGSIMP}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Wolfram Koepf -\par -\par -TRIGSIMP is a useful tool for all kinds of trigonometric and hyperbolic -simplification and factorization. There are three procedures included in -TRIGSIMP: }{\f3 trigsimp} {\f2 , }{\f3 trigfactorize} {\f2 and }{\f3 triggcd} {\f2 . The -first is for finding simplifications of trigonometric or hyperbolic -expressions with many options, the second for factorizing them and the -third for finding the greatest common divisor of two trigonometric or -hyperbolic polynomials. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # XCOLOR} - -${\footnote \pard\plain \sl240 \fs20 $ XCOLOR} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1278} - - K{\footnote \pard\plain \sl240 \fs20 K high energy physics;XCOLOR package;package} - -}{\b\f2 XCOLOR}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: A. Kryukov -\par -\par -This package calculates the color factor in non-abelian gauge field -theories using an algorithm due to Cvitanovich. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # XIDEAL} - -${\footnote \pard\plain \sl240 \fs20 $ XIDEAL} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1279} - - K{\footnote \pard\plain \sl240 \fs20 K Groebner basis;XIDEAL package;package} - -}{\b\f2 XIDEAL}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: David Hartley -\par -\par -}{\f3 xideal} {\f2 constructs Groebner bases for solving the left ideal -membership problem: Groebner left ideal bases or GLIBs. For graded -ideals, where each form is homogeneous in degree, the distinction between -left and right ideals vanishes. Furthermore, if the generating forms are -all homogeneous, then the Groebner bases for the non-graded and graded -ideals are identical. In this case, }{\f3 xideal} {\f2 is able to save time by -truncating the Groebner basis at some maximum degree if desired. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # WU} - -${\footnote \pard\plain \sl240 \fs20 $ WU} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1280} - - K{\footnote \pard\plain \sl240 \fs20 K Wu-Wen-Tsun algorithm;polynomial;WU package;package} - -}{\b\f2 WU}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Author: Russell Bradford -\par -\par -This is a simple implementation of the Wu algorithm implemented in REDUCE -working directly from ``A Zero Structure Theorem for -Polynomial-Equations-Solving,'' Wu Wen-tsun, Institute of Systems Science, -Academia Sinica, Beijing. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ZEILBERG} - -${\footnote \pard\plain \sl240 \fs20 $ ZEILBERG} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1281} - - K{\footnote \pard\plain \sl240 \fs20 K summation;ZEILBERG package;package} - -}{\b\f2 ZEILBERG}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - - \par -\par -Authors: Gregor St"olting and Wolfram Koepf -\par -\par -This package is a careful implementation of the Gosper and Zeilberger -algorithms for indefinite and definite summation of hypergeometric terms, -respectively. Extensions of these algorithms are also included that are -valid for ratios of products of powers, -factorials, gamma function -terms, binomial coefficients, and shifted factorials that are -rational-linear in their arguments. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ZTRANS} - -${\footnote \pard\plain \sl240 \fs20 $ ZTRANS} - -+{\footnote \pard\plain \sl240 \fs20 + g40:1282} - - K{\footnote \pard\plain \sl240 \fs20 K ZTRANS package;package} - -}{\b\f2 ZTRANS}{\f2 \tab \tab \tab \tab }{\b\f2 package}{\f2 \par -\par - -Authors: Wolfram Koepf, Lisa Temme -\par -\par -This package is an implementation of the Z-transform of a sequence. -This is the discrete analogue of the Laplace Transform. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g40} - -${\footnote \pard\plain \sl240 \fs20 $ Miscellaneous Packages} - -+{\footnote \pard\plain \sl240 \fs20 + index:0040} -}{\b\f2 Miscellaneous Packages}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Miscellaneous Packages introduction} -{\v\f2 Miscellaneous_Packages}{\f2 \par -}{\f2 \tab}{\f2\uldb ALGINT package} -{\v\f2 ALGINT_package}{\f2 \par -}{\f2 \tab}{\f2\uldb APPLYSYM package} -{\v\f2 APPLYSYM}{\f2 \par -}{\f2 \tab}{\f2\uldb ARNUM package} -{\v\f2 ARNUM}{\f2 \par -}{\f2 \tab}{\f2\uldb ASSIST package} -{\v\f2 ASSIST}{\f2 \par -}{\f2 \tab}{\f2\uldb AVECTOR package} -{\v\f2 AVECTOR}{\f2 \par -}{\f2 \tab}{\f2\uldb BOOLEAN package} -{\v\f2 BOOLEAN}{\f2 \par -}{\f2 \tab}{\f2\uldb CALI package} -{\v\f2 CALI}{\f2 \par -}{\f2 \tab}{\f2\uldb CAMAL package} -{\v\f2 CAMAL}{\f2 \par -}{\f2 \tab}{\f2\uldb CHANGEVR package} -{\v\f2 CHANGEVR}{\f2 \par -}{\f2 \tab}{\f2\uldb COMPACT package} -{\v\f2 COMPACT}{\f2 \par -}{\f2 \tab}{\f2\uldb CONTFR package} -{\v\f2 CONTFR}{\f2 \par -}{\f2 \tab}{\f2\uldb CRACK package} -{\v\f2 CRACK}{\f2 \par -}{\f2 \tab}{\f2\uldb CVIT package} -{\v\f2 CVIT}{\f2 \par -}{\f2 \tab}{\f2\uldb DEFINT package} -{\v\f2 DEFINT}{\f2 \par -}{\f2 \tab}{\f2\uldb DESIR package} -{\v\f2 DESIR}{\f2 \par -}{\f2 \tab}{\f2\uldb DFPART package} -{\v\f2 DFPART}{\f2 \par -}{\f2 \tab}{\f2\uldb DUMMY package} -{\v\f2 DUMMY}{\f2 \par -}{\f2 \tab}{\f2\uldb EXCALC package} -{\v\f2 EXCALC}{\f2 \par -}{\f2 \tab}{\f2\uldb FPS package} -{\v\f2 FPS}{\f2 \par -}{\f2 \tab}{\f2\uldb FIDE package} -{\v\f2 FIDE}{\f2 \par -}{\f2 \tab}{\f2\uldb GENTRAN package} -{\v\f2 GENTRAN}{\f2 \par -}{\f2 \tab}{\f2\uldb IDEALS package} -{\v\f2 IDEALS}{\f2 \par -}{\f2 \tab}{\f2\uldb INEQ package} -{\v\f2 INEQ}{\f2 \par -}{\f2 \tab}{\f2\uldb INVBASE package} -{\v\f2 INVBASE}{\f2 \par -}{\f2 \tab}{\f2\uldb LAPLACE package} -{\v\f2 LAPLACE}{\f2 \par -}{\f2 \tab}{\f2\uldb LIE package} -{\v\f2 LIE}{\f2 \par -}{\f2 \tab}{\f2\uldb MODSR package} -{\v\f2 MODSR}{\f2 \par -}{\f2 \tab}{\f2\uldb NCPOLY package} -{\v\f2 NCPOLY}{\f2 \par -}{\f2 \tab}{\f2\uldb ORTHOVEC package} -{\v\f2 ORTHOVEC}{\f2 \par -}{\f2 \tab}{\f2\uldb PHYSOP package} -{\v\f2 PHYSOP}{\f2 \par -}{\f2 \tab}{\f2\uldb PM package} -{\v\f2 PM}{\f2 \par -}{\f2 \tab}{\f2\uldb RANDPOLY package} -{\v\f2 RANDPOLY}{\f2 \par -}{\f2 \tab}{\f2\uldb REACTEQN package} -{\v\f2 REACTEQN}{\f2 \par -}{\f2 \tab}{\f2\uldb RESET package} -{\v\f2 RESET}{\f2 \par -}{\f2 \tab}{\f2\uldb RESIDUE package} -{\v\f2 RESIDUE}{\f2 \par -}{\f2 \tab}{\f2\uldb RLFI package} -{\v\f2 RLFI}{\f2 \par -}{\f2 \tab}{\f2\uldb SCOPE package} -{\v\f2 SCOPE}{\f2 \par -}{\f2 \tab}{\f2\uldb SETS package} -{\v\f2 SETS}{\f2 \par -}{\f2 \tab}{\f2\uldb SPDE package} -{\v\f2 SPDE}{\f2 \par -}{\f2 \tab}{\f2\uldb SYMMETRY package} -{\v\f2 SYMMETRY}{\f2 \par -}{\f2 \tab}{\f2\uldb TPS package} -{\v\f2 TPS}{\f2 \par -}{\f2 \tab}{\f2\uldb TRI package} -{\v\f2 TRI}{\f2 \par -}{\f2 \tab}{\f2\uldb TRIGSIMP package} -{\v\f2 TRIGSIMP}{\f2 \par -}{\f2 \tab}{\f2\uldb XCOLOR package} -{\v\f2 XCOLOR}{\f2 \par -}{\f2 \tab}{\f2\uldb XIDEAL package} -{\v\f2 XIDEAL}{\f2 \par -}{\f2 \tab}{\f2\uldb WU package} -{\v\f2 WU}{\f2 \par -}{\f2 \tab}{\f2\uldb ZEILBERG package} -{\v\f2 ZEILBERG}{\f2 \par -}{\f2 \tab}{\f2\uldb ZTRANS package} -{\v\f2 ZTRANS}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ED} - -${\footnote \pard\plain \sl240 \fs20 $ ED} - -+{\footnote \pard\plain \sl240 \fs20 + g41:1283} - - K{\footnote \pard\plain \sl240 \fs20 K ED command;command} - -}{\b\f2 ED}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 ed} {\f2 command invokes a simple line editor for REDUCE input -statements. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ed} {\f4 or }{\f3 ed} {\f4 -\par -\par -}{\f2 \par -}{\f3 ed} {\f2 called with no argument edits the last input statement. If - is greater than or equal to the current line number, an error -message is printed. Reenter a proper }{\f3 ed} {\f2 command or return to the -top level with a semicolon. -\par -\par -The editor formats REDUCE's version of the desired input statement, -dividing it into lines at semicolons and dollar signs. The statement is -printed at the beginning of the edit session. The editor works on one -line at a time, and has a pointer (shown by }{\f3 ^} {\f2 ) to the current -character of that line. When the session begins, the pointer is at the -left hand side of the first line. The editing prompt is }{\f3 >} {\f2 . -\par -\par -The following commands are available. They may be entered in either upper -or lower case. All commands are activated by the carriage return, which -also prints out the current line after changes. Several commands can be -placed on a single line, except that commands terminated by an }{\f3 ESC} {\f2 -must be the last command before the carriage return. -\par -\par -\tab b -Move pointer to beginning of current line. -\par -\par -\tab d -Delete current character and next (digit-1) characters. An error message -is printed if anything other than a single digit follows d. If there are -fewer than characters left on the line, all but the final -dollar sign or semicolon is removed. To delete a line completely, use the -k command. -\par -\par -\tab e -End the current session, causing the edited expression to be reparsed by -REDUCE. -\par -\par -\tab f -Find the next occurrence of the character to the right of the -pointer on the current line and move the pointer to it. If the character is -not found, an error message is printed and the pointer remains in its -original position. Other lines are not searched. The f command is not -case-sensitive. -\par -\par -\tab i}{\f3 ESC} {\f2 -Insert in front of pointer. The }{\f3 ESC} {\f2 key is your -delimiter for the input string. No other command may follow this one on -the same line. -\par -\par -\tab k -Kill rest of the current line, including the semicolon or dollar sign -terminator. If there are characters remaining on the current line, and it -is the last line of the input statement, a semicolon is added to the line -as a terminator for REDUCE. If the current line is now empty, one of the -following actions is performed: If there is a following line, it becomes -the current line and the pointer is placed at its first character. If the -current line was the final line of the statement, and there is a previous -line, the previous line becomes the current line. If the current line was -the only line of the statement, and it is empty, a single semicolon is -inserted for REDUCE to parse. -\par -\par -\tab l -Finish editing this line and move to the last previous line. An error message -is printed if there is no previous line. -\par -\par -\tab n -Finish editing this line and move to the next line. An error message is -printed if there is no next line. -\par -\par -\tab p -Print out all the lines of the statement. Then a dotted line is printed, and -the current line is reprinted, with the pointer under it. -\par -\par -\tab q -Quit the editing session without saving the changes. If a semicolon is -entered after q, a new line prompt is given, otherwise REDUCE prompts you -for another command. Whatever you type in to the prompt appearing after -the q is entered is stored as the input for the line number in which you -called the edit. Thus if you enter a semicolon, neither } -{\f2\uldb input}{\v\f2 INPUT} -{\f2 -}{\f3 ed} {\f2 will find anything under the current number. -\par -\par -\tab r -Replace the character at the pointer by . -\par -\par -\tab s}{\f3 ESC} {\f2 -Search for the first occurrence of to the right of the -pointer on the current line and move the pointer to its first character. -The }{\f3 ESC} {\f2 key is your delimiter for the input string. The s function -does not search other lines of the statement. If the string is not found, -an error message is printed and the pointer remains in its original -position. The s command is not case-sensitive. No other command may -follow this one on the same line. -\par -\par -\tab x -Move the pointer one character to the right. If the pointer is already at -the end of the line, an error message is printed. -\par -\par -\tab - <(minus)> -Move the pointer one character to the left. If the pointer is already at the -beginning of the line, an error message is printed. -\par -\par -\tab ? -Display the Help menu, showing the commands and their actions. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \pard \sl240 }{\f2 (Line numbers are shown in the following examples)}{\f4 \pard \tx3420 \par - \par -2: >>x**2 + y; \par - \par -X^\{2\} + Y \par - \par -3: >>ed 2; \par - \par - X**2 + Y; \par - \par - ^ \par - \par -For help, type '?' \par - \par -?- (Enter three spaces and \key\{Return\}) \par - \par - X**2 + Y; \par - \par - ^ \par - \par -?- r5 \par - \par - X**5 + Y; \par - \par - ^ \par - \par -?- fY \par - \par - X**5 + Y; \par - \par - ^ \par - \par -?- iabc (Terminate with \key\{ESC\} and \key\{Return\}) \par - \par - X**5 + abcY; \par - \par - ^ \par - \par -?- ---- \par - \par - X**5 + abcY; \par - \par - ^ \par - \par -?- fbd2 \par - \par - X**5 + aY; \par - \par - ^ \par - \par -?- b \par - \par - X**5 + aY; \par - \par - ^ \par - \par -?- e \par - \par -AY + X^\{5\} \par - \par -4: >>procedure dumb(a); \par - \par ->>write a; \par - \par -DUMB \par - \par -5: >>dumb(17); \par - \par -17 \par - \par -6: >>ed 4; \par - \par - PROCEDURE DUMB (A); \par - \par - ^ \par - \par -WRITE A; \par - \par -?- fArBn \par - \par - WRITE A; \par - \par - ^ \par - \par -?- ibegin scalar a; a := b + 10; (Type a space, \key\{ESC\}, and \key\{Return\}) \par - \par - begin scalar a; a := b + 10; WRITE A; \par - \par -?- f;i end \key\{ESC\}, \key\{Return\} \par - \par - begin scalar b; b := a + 10; WRITE A end; \par - \par - ^ \par - \par -?- p \par - \par - PROCEDURE DUMB (B); \par - \par - begin scalar b; b := a + 10; WRITE A end; \par - \par - - - - - - - - - - - \par - \par - begin scalar b; b := a + 10; WRITE A end; \par - \par - ^ \par - \par -?- e \par - \par -DUMB \par - \par -7: >>dumb(17); \par - \par -27 \par - \par -8: >> \par - \par -\pard \sl240 }{\f2 -\par -\par -Note that REDUCE reparsed the procedure }{\f3 dumb} {\f2 and updated the -definition. -\par -\par -Since REDUCE divides the expression to be edited into lines at semicolons or -dollar sign terminators, some lines may occupy more than one line of screen -space. If the pointer is directly beneath the last line of text, it -refers to the top line of text. If there is a blank line between the -last line of text and the pointer, it refers to the second line -of text, and likewise for cases of greater than two lines of text. In other -words, the entire REDUCE statement up to the next terminator is printed, even -if it runs to several lines, then the pointer line is printed. -\par -\par -You can insert new statements which contain semicolons of their own into the -current line. They are run into the current line where you placed them -until you edit the statement again. REDUCE will understand the set of -statements if the syntax is correct. -\par -\par -If you leave out needed closing brackets when you exit the editor, a message -is printed allowing you to redo the edit (you can edit the previous line -number and return to where you were). If you leave out a closing -double-quotation mark, an error message is printed, and the editing must be -redone from the original version; the edited version has been destroyed. -Most syntax errors which you inadvertently leave in an edited statement are -caught as usual by the REDUCE parser, and you will be able to re-edit the -statement. -\par -\par -When the editor processes a previous statement for your editing, escape -characters are removed. Most special characters that you may use in -identifiers are printed in legal fashion, prefixed by the exclamation -point. Be sure to treat the special character and its escape as a pair in -your editing. The characters }{\f3 ( ) # ; ' `} {\f2 are different. Since -they have special meaning in Lisp, they are double-escaped in the editor. -It is unwise to use these characters inside identifiers anyway, due to the -probability of confusion. -\par -\par -If you see a Lisp error message during editing, the edit has been aborted. -Enter a semicolon and you will see a new line prompt. -\par -\par -Since the editor has no dependence on any window system, it can be used if you -are running REDUCE without windows. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EDITDEF} - -${\footnote \pard\plain \sl240 \fs20 $ EDITDEF} - -+{\footnote \pard\plain \sl240 \fs20 + g41:1284} - - K{\footnote \pard\plain \sl240 \fs20 K Top;Outmoded Operations;EDITDEF command;command} - -}{\b\f2 EDITDEF}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -\par -\par -The interactive editor } -{\f2\uldb ed}{\v\f2 ED} -{\f2 may be used to edit a user-defined -procedure that has not been compiled. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 editdef} {\f4 (}{\f3 identifier} {\f4 ) -\par -\par -}{\f2 \par -where }{\f3 identifier} {\f2 is the name of the procedure. When }{\f3 editdef} {\f2 -is invoked, the procedure definition will be displayed in editing mode, -and may then be edited and redefined on exiting from the editor using -standard } -{\f2\uldb ed}{\v\f2 ED} -{\f2 commands. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g41} - -${\footnote \pard\plain \sl240 \fs20 $ Outmoded Operations} - -+{\footnote \pard\plain \sl240 \fs20 + index:0041} -}{\b\f2 Outmoded Operations}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb ED command} -{\v\f2 ED}{\f2 \par -}{\f2 \tab}{\f2\uldb EDITDEF command} -{\v\f2 EDITDEF}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # main_index} - -${\footnote \pard\plain \sl240 \fs20 $ Top} - -+{\footnote \pard\plain \sl240 \fs20 + index:0001} -}{\b\f2 Top}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb Concepts} -{\v\f2 g2}{\f2 \par -}{\f2 \tab}{\f2\uldb Variables} -{\v\f2 g3}{\f2 \par -}{\f2 \tab}{\f2\uldb Syntax} -{\v\f2 g4}{\f2 \par -}{\f2 \tab}{\f2\uldb Arithmetic Operations} -{\v\f2 g5}{\f2 \par -}{\f2 \tab}{\f2\uldb Boolean Operators} -{\v\f2 g6}{\f2 \par -}{\f2 \tab}{\f2\uldb General Commands} -{\v\f2 g7}{\f2 \par -}{\f2 \tab}{\f2\uldb Algebraic Operators} -{\v\f2 g8}{\f2 \par -}{\f2 \tab}{\f2\uldb Declarations} -{\v\f2 g9}{\f2 \par -}{\f2 \tab}{\f2\uldb Input and Output} -{\v\f2 g10}{\f2 \par -}{\f2 \tab}{\f2\uldb Elementary Functions} -{\v\f2 g11}{\f2 \par -}{\f2 \tab}{\f2\uldb General Switches} -{\v\f2 g12}{\f2 \par -}{\f2 \tab}{\f2\uldb Matrix Operations} -{\v\f2 g13}{\f2 \par -}{\f2 \tab}{\f2\uldb Groebner package} -{\v\f2 g14}{\f2 \par -}{\f2 \tab}{\f2\uldb High Energy Physics} -{\v\f2 g21}{\f2 \par -}{\f2 \tab}{\f2\uldb Numeric Package} -{\v\f2 g22}{\f2 \par -}{\f2 \tab}{\f2\uldb Roots Package} -{\v\f2 g23}{\f2 \par -}{\f2 \tab}{\f2\uldb Special Functions} -{\v\f2 g24}{\f2 \par -}{\f2 \tab}{\f2\uldb Taylor series} -{\v\f2 g36}{\f2 \par -}{\f2 \tab}{\f2\uldb Gnuplot package} -{\v\f2 g37}{\f2 \par -}{\f2 \tab}{\f2\uldb Linear Algebra package} -{\v\f2 g38}{\f2 \par -}{\f2 \tab}{\f2\uldb Matrix Normal Forms} -{\v\f2 g39}{\f2 \par -}{\f2 \tab}{\f2\uldb Miscellaneous Packages} -{\v\f2 g40}{\f2 \par -}{\f2 \tab}{\f2\uldb Outmoded Operations} -{\v\f2 g41}{\f2 \par - - -\page - -}} DELETED r36/src/tolower.exe Index: r36/src/tolower.exe ================================================================== --- r36/src/tolower.exe +++ /dev/null cannot compute difference between binary files DELETED r37/doc/util/r37.dvi Index: r37/doc/util/r37.dvi ================================================================== --- r37/doc/util/r37.dvi +++ /dev/null cannot compute difference between binary files DELETED r37/doc/util/r37.ps Index: r37/doc/util/r37.ps ================================================================== --- r37/doc/util/r37.ps +++ /dev/null @@ -1,34258 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips 5.83 (MiKTeX 1.20b) Copyright 1998 Radical Eye Software -%%Title: r37.dvi -%%CreationDate: Wed Jun 16 08:30:00 1999 -%%Pages: 698 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips r37 -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 1999.06.16:0829 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: special.pro -%! -TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N -/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N -/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N -/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ -/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho -X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B -/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ -/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known -{userdict/md get type/dicttype eq{userdict begin md length 10 add md -maxlength ge{/md md dup length 20 add dict copy def}if end md begin -/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S -atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ -itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll -transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll -curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf -pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} -if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 --1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 -get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip -yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub -neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ -noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop -90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get -neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr -1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr -2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 --1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S -TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ -Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale -}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState -save N userdict maxlength dict begin/magscale true def normalscale -currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts -/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x -psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx -psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub -TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict -begin/SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ -CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N -/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} -repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N -/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX -currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY -moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X -/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 -1 startangle endangle arc savematrix setmatrix}N end - -%%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (E:\r37\doc\util/r37.dvi) -@start -%DVIPSBitmapFont: Fa cmti7 6 1 -/Fa 1 98 df97 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmti8 8 1 -/Fb 1 98 df97 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmmi12 24.88 1 -/Fc 1 91 df[<057FBD12FE94BFFC5E22FEA25E0980C9000F13FC08E0CA4813F84FCB48 -13F04C02F04E13E0078095B512C04ECB4814804C01F84E14004E4E5B18C04C494E5B95CC -485B4D4F5B4D4F5B4C4896B55A4D4E5C4D4E91C7FC047F614D624D4E5B04FF4F5B94CC48 -5B4C4F5B9BB55A4B484E5C5391C8FC5E03034F5B4C4E5B535B03074F5B4C4E5B9AB55A4C -4D5C030F609CC9FC4C4D5B031F4E5B525B93CB485B6F4E5B92CCB55A515CA25191CAFC51 -5B515B515B515B515B98B55A62655091CBFC505B505B505B505B505B97B55AA24F5C4F91 -CCFC4F5B4F5B4F5B4F5B4F5B96B5FC634E5C4E91CDFC4E5B4E5B4E5B4E5B4E5BA295B55A -4D5C4D91CEFC4D5B4D49EF01C04D494D7E4D5B4D491707A294B548604C4A170F4C91CBFC -4C49614C49181F4C5B4C4996C8FC4C626093B548183E4B4A187E4B91CCFC4B4919FE4B49 -614B4918014B5B674B49180392B55A4A4A4E5A4A91CCFC4A49190F4A494F5A4A5B4A1B3F -4C4F5A4A5B91B54819FF494A604991CC485B49496149496149494F90C9FC654949614949 -4F5A90B5481803484A180F4891CC003F5B48494EB5FC4849180F4897B6FC4A057F5D4890 -BDFC5A66A2BFFC6C65>136 141 117 268 138 90 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmmi10 10 2 -/Fd 2 63 df60 -D<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F -C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE -01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED -1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA -07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmtt12 14.4 12 -/Fe 12 86 df<4AB4EB03C0020F9038F007E0023FEBFC0F91B512FE49ECFF9F010715DF -4915FF49138090393FFC001FD97FF07F4A7F49487F48497F4890C8FC5B4848157FA24848 -153F5B121F49151FA2123F5BA2007FEE0FC04992C7FCA412FF90CBFCAD7F127FA47F003F -EE0FC0EF1FE07F121FA27F120F6D153F6C6C16C0A26C6C157F6D16806C6D14FF6C6D4913 -006D6C495A6E1307D93FFCEB1FFC6DB46CB45A6D90B55A6D5D01015D6D92C7FC023F13FC -020F13F002011380334B7BC93E>67 D<007FB812F0A2B912F8A37EA2C690C81207A9EF03 -F0A294C7FCA8167EA216FFA491B6FCA791C7FCA4167EA293C8FCA818FCA2EF01FEAB007F -90B7FCA2B9FCA36C17FCA237497DC83E>69 D71 D<003FB7FC481680B812C0A36C16806C1600C7D87F80 -C7FCB3B3B3A5003FB7FC481680B812C0A36C16806C16002A4976C83E>73 -D -77 DI<01 -03B57E013F14F848B7FC4816804816C04816E04816F0EC800301FCC7127FD83FF0EC1FF8 -49140FA24848EC07FCA2491403A648C8EA01FEB3B06D1403007F16FCA56D1407A36C6CEC -0FF86D141F6D143F6C6CEC7FF09039FF8003FF91B6FC6C16E06C16C06C16806C1600D800 -3F14F8010314802F4B79C93E>I<007FB612F016FEB87E17E017F86C8283C690C76C7E04 -0F13801603040013C0EF7FE0173FA2EF1FF0170FA218F81707A7170F18F0A2171FEF3FE0 -A2177FEFFFC004031380160F047F130091B65A5F5F17E017804CC7FC16F091CAFCB3A500 -7F13FEA2B6FCA36C5BA235497DC83E>I<0103B57E013F14F848B7FC4816804816C04816 -E04816F0EC800301FCC7127FD83FF0EC1FF849140FA24848EC07FCA3491403A500FF16FE -90C81201B3AF90398007F003007F02F813FC140FEC07FCA2EC03FE01C01407EC01FFA26C -6C6CEB8FF8A26DEB7FDFD81FFCECFFF09038FF803F91B6FC6C16E06C16C06C16806C1600 -D8003F14FC01038090C71203828117808117C0167F17E0163F17F0161F17F8160FA21607 -16032F5B79C93E>I<007FB512FCB77E16F016FC82826C822701FE000F7F03017F6F6C7E -163F707E160F707E1603A2831601A616035FA216074C5A161F4C5A167F4B485A030F5B90 -B75A94C8FC5E5EA282829026FE00077F03017F81707E163F707EA2160FABF01F80F03FC0 -A417F8187F1607267FFFF89138FCFF80B56C6DB5FC19008260705B6C49EC3FF8CAEA0FC0 -3A4A7DC83E>II<267FFFFE0103B512F0A2B64914F8A36C496D14F0A2C690C83807F800B3 -B3AA6E140FA2017F5E6E141FA2013F5E6E143FA26D6C4A5A6D6C4A5A6E5B6D6C4990C7FC -903A03FF800FFEEDE03F6D90B55A6D5D023F14E06E5C020791C8FC020113FC9138003FE0 -3D4A80C83E>85 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmsltt10 10.95 7 -/Ff 7 84 df<013FB7FC49168090B812C0A27F7FD903F8C7EA3F80A4177F13074A150083 -171E94C7FCA2130F5CED01E04B7E821507131F91B55AA55B9138800FE0A46F5A017F90C9 -FC91CAFCA417F0494A7E491403A416071201495DA2003FB7FC5AB8FCA26C5E6C5E32387E -B730>69 D<913907F80780DA1FFE13C091387FFF8F49B512DF4914FF5B90381FFE0FDAF8 -031380EB3FE049487EEBFF804890C7FC5B484815005B12075B120F5B001F157E49147C00 -3F92C7FC5BA3127F90CAFCA45A4891B5FC4A14805CA2806E1400ED07F0A2150F7E7E151F -5E6D133F123F157F7F6C6C13FF4A5B380FF803EBFC0F6CB6FC7E7E6CEC9F8090263FFE1F -C7FCD90FF0C8FC2A3A79B830>71 D<91B57E010714F8011F804980498090B7FC48EBC007 -91C713804848147F5B5B120749143FA3485AEE7F00A3485AA5484814FEA648C7485AA648 -4A5A5AA315075EA3150F5EA2151F4B5A7E6DEBFF80EBE00390B6C7FC7E5D6C14F8000F14 -E0000191C8FC293A78B830>79 D<013FB512FC4914FF90B712C017E06D15F06D15F8903A -03F8003FFC160FEE03FE1601A20107EC00FF5CA2177FA3010F15FE5CA2160117FC160301 -1FEC07F84A130FEE1FF0EE7FE0923801FFC091B612804915005E16F816E093C7FC0280C8 -FC137F91C9FCA55B5BA512015BA2383FFFC0487FB57EA26C5B6C5B30387EB730>I<91B5 -7E010714F8011F804980498090B7FC48EBE007DA0001138048487F49147F5B12075B163F -167F485A1700A3485AA5484814FEA648C7485AA600FE4A5AA4150702FC5BEB01FEA2150F -D900FF5BA2151F91387F9FC06C14BF0180EBFF80EBE03F90B6C7FC7E5D6C14F8000F14E0 -000180C7120FA2811407A2811403A2811401A26E5A294678B830>I<017FB57E90B612F0 -16FC82826D1580902607F00113C09238007FE0163F161FEE0FF0130F4A1307A5011FEC0F -E05CEE1FC0163FEE7F8016FF013F010313009138800FFE91B55A5E16E05E498082913800 -1FF815076F7E15015B5BA500011403495CA2177817FCEEF9FE000316FC4914F1A2267FFF -8013FBB500C0EBFFF817F0816F13E06C49EB7FC0C9EA3F002F397EB730>I<913907FC01 -E091393FFF81F091B512E3010314FB4914FF5B90381FFC0790263FF00113E0ECC0004948 -137F49C7123F5BA24848EC1FC0A5EE0F806D91C7FCA27F6C7F14F86DB47E6D13F86D13FF -6D14C06D80010080021F7F02017FEC001FED03FE1501A26F7EA3D80F8080121F6D5C003F -5D5BA26D13015E1503486C495A6D495A6D133F9039FF80FFE091B55A5E00FE92C7FC486C -13FC011F13F0D8780113802C3A7BB830>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmtt9 9 7 -/Fg 7 91 df<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A6157EA25D14 -03EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F1680153F -ED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>66 D<007FB61280B712C0A37E39 -07E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED -07E0A7007FB6FCB7FCA36C15C0232E7FAD27>69 D<903807F03890381FFC7C90387FFFFC -90B5FC5A3803FC1F3807F00F380FE007EBC003001F13011380123F90C7FCA2127EA21578 -92C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C1301A21380121FEBC003120FEBE0 -073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC78D907F0C7FC21307DAE27>71 -D<007FB512E0B612F0A36C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD -27>73 D<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7007FB6FCA2B7FC7E16 -80222E7FAD27>76 D<387FFFF0B512FE6E7E816C803907E01FF014076E7E1401811400A5 -14015D14034A5A141F90B55A5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01 -FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F7FAD27>82 D<003FB512FE4814FFA4007E -C712FEEC01FCA2EC03F8EC07F0A2003CEB0FE0C7EA1FC0A2EC3F80EC7F00A214FE5C1301 -495A5C1307495A5C131F495A91C7FC5B13FEA2485A4848131E153F485A485AA2485A485A -A248C7FCB7FCA46C14FE202E7DAD27>90 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmbxsl10 14.4 1 -/Fh 1 114 df113 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmbxsl10 24.88 1 -/Fi 1 114 df<95263FFF80ED07FC050FB500F8150F94B7151F040716C0041F04F0143F -93B800FC147F030371ECFFF8030F715B033F725A4BDB003F13C04AB600F801076D5A4A03 -C001016D5A4A92C86C6C4813F0021F02FC6F6C5A4A4A031F5B4A4AED0FFE91B600C06FB6 -FC494B814992C916E0494A825B4C82495C494A835B4C1AC090B6845E5A5E5A93CB15805A -5D5A64485C1F00A2485CA299B6FC5A4B62A463B6FC4B62A463A266A35D63A266817EA263 -A2666C62636C806398B6FC6C4F5D6F5E6C616F5E6C616C6E5E6C96B75A6F5D6D6E14076D -6E141F6D02F0147F010702FC903803FFFE6D9126FF803F01F892C7FC6D92B65A6D6C17C0 -6E1700020FEEFC01020116F06E6C03805D0307ECFC00DB003F138093C9FC62A265A462A2 -65A462A265A462A265A462A265A2060FB9FCA260A266A4609738E000036E8571DC7D> -113 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmbx8 8 2 -/Fj 2 118 df108 -D117 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmr10 10 49 -/Fk 49 122 df12 D<146014E0EB01C0EB0380EB0700130E131E5B5B -A25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2 -121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E0146013 -5278BD20>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E -131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E13 -3C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127F -EAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A1979 -8817>44 DI49 D -II<1538A2157815F8A2140114031407A2140F141F141B143314731463 -14C313011483EB030313071306130C131C131813301370136013C01201EA038013005A12 -0E120C5A123812305A12E0B712F8A3C73803F800AB4A7E0103B512F8A325397EB82A>I< -121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>58 -D<007FB812F8B912FCA26C17F8CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 -D<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB03 -9F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2 -485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C -7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FC -EB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>67 -D69 -DI73 -D77 DIII82 -D -I85 D91 D93 -D97 DIIII<147E903803FF8090380FC1E0EB1F8790 -383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8 -A31C3B7FBA19>IIII< -EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C12 -7E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>III<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E0 -7E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2 -495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000 -FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C -497EB500C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038 -F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016 -FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F0090 -38F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>II<3807E01F00 -FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300 -A45BB3A2487EB512F0A31C257EA421>II<1318A51338A31378A313F8120112031207001FB5FCB6FC -A2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220 ->IIIIII E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmbx9 9 11 -/Fl 11 121 df85 D97 D<903803FF80013F13F090B512FC48EB03FE3907 -FC007F4848EB3F804848EB1FC05B003FEC0FE0127F5B16F012FF150790B6FCA301C0C8FC -A4127F7F123F16F06C7E000F14016C6CEB03E0D803FEEB0FC03A01FF807F806C6CB51200 -011F13FC010313E024217EA029>101 D<16F890390FFC07FE90387FFF9F48B6127F3907 -FC0FFC380FF003001F14FED9E001133E003FECFF1C1600A6001F5CEBF003000F5C3907FC -0FF890B512E0486C1380D90FFCC7FC48C9FCA37F7F90B512F015FE6CECFF8016E06C15F0 -6C15F84815FC121F393F80001F48C7EA03FE481401481400A46C14016C6CEB03FC6C6CEB -07F86C6CEB0FF0D80FFCEB7FE00003B61280C6ECFE00010F13E028327EA12C>103 -D105 D108 -D<2703F803FEEB03FE00FF903B1FFFC01FFFC0027FD9E07F7F913BF81FF0F81FF0903CF9 -E00FF9E00FF8260FFBC0EBFBC06CB4486CB4486C7E02001400495CA3495CB2B500E0B500 -E0B512E0A443217CA04A>I<3901F803FF00FF010F13C0023F13F09138FC0FF89039F9E0 -07FC380FFBC06CB4486C7E1400A25BA25BB2B539E07FFFF0A42C217DA031>I<3901FC07 -FC00FF90387FFF8001FDB512E09039FFF01FF89138C007FC000790380003FE4980496D13 -80A26F13C0A3EE7FE0A9EEFFC0A34B1380A26D4913006D495A9138C00FFC9138F03FF801 -FDB512E0D9FC7F1380DA0FF8C7FC91C9FCABB512E0A42B307EA031>112 -D<9038FFE1C0000713FF5A383F803F387E000F14075A14037EA26C6CC7FC13FCEBFFE06C -13FC806CEBFF80000F14C06C14E0C6FC010F13F0EB007F140F00F0130714037EA26C14E0 -6C13076CEB0FC09038C01F8090B5120000F913FC38E03FE01C217DA023>115 -D -120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmtt8 8 5 -/Fm 5 106 df48 D<1318133C137CA213FC120112031207127F12FFA2137C127C1200B3A6387FFFFC -14FEA314FC172A7AA923>III<1338 -13FEA5133890C7FCA6EA7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923 ->105 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmitt10 10.95 18 -/Fn 18 120 df<14FE903803FF80010F13C749EBFF804914C05BEBFFC748010313804848 -7E13FCEA07F848486C13005B121F5B003F5C5B1401127F01005BA214035A485C02071370 -16FC15F9EC0FF1141FA2EC3FF36C90387FE3F86C13FF018113E7D83F87EBF7F090B6FC6C -15E014F36C01C313C00003018013803A00FC007E00262975A730>97 -DIIII<16FF030313C0030F13E04B13F017F85D1683ED7F871607A2EE03F09238FF01E04BC7 -FCA414015D0103B6FC491580A46D150090260003F8C7FCA314075DA5140F5DA4141FA25D -A4143F5DA5147F92C8FCA45C5CA31301A25CA21303A25C123CEA7E0700FF5B130F5CEAFE -1FB55A5C6C90C9FC6C5A6C5AEA07F02D4E7BB830>II105 D<383FFFC04813E0B5FCA27E7EEA001F14C0A2 -133FA21480A2137FA21400A25BA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2 -121FA25B141C003F133F147F1380A2007F13FF14FE13001301EB81FCEA3FC3EBFFF86C13 -F014E06C13C0000313803800FE0018396EB730>108 D<91390FC007E0903A3C7FF01FF8 -903A7EFFF87FFC017F9038FCFFFE15FD90B8FC02F8EBFC3F9138E07FF802C013F0480180 -13E016C01400491480000302FF137F49EC007EA25D2607F80114FE17FC01F05B1601000F -010314F801E013F81603001F010714F001C013F0160717E0003F130F018013E0160F17C0 -007F131F010013C017F017F848013F1307481480EE03F016000038010EC8FC30297CA730 ->I<01F813FE3A03FE07FF80486C487F48013F7F4890B57EA2ED87F8393F9FFE0314FC38 -7FBFF8EB3FF0A214E0D8FF7F130702C05B127E0000138001FF130F02005BA34848131F5E -A249EB3FC70003ED8FC0169F49137F161F0007153F03FF13804913FE167F000F16005E49 -6D5A5E157F495CED3FE06C48EB0FC02A2979A730>II<017E -EB1FF03A01FF80FFFE4801C3EBFF804801E714C04890B612E0A2D81FC79038F03FF0EDC0 -0FD83F83EB800701871300007F49130F13075C484848EB07E0EE03C0007E92C7FC00005B -131F5CA3495AA35C137FA291C9FCA25BA25BA21201A25BA35BA26C5A2C2978A730>114 -DI<147814FCA21301A413035CA313075C -A3130F5CA2003FB512F04814F8B6FCA36C14F039003F8000A3137F91C7FCA35B5BA31201 -5BA312035B157015FC0007130113F0140315F8000F13079038E00FF0141FEC3FE09038F0 -FFC06CB5128015006C5B6C5B6C13F0EB3F801E3A72B830>I<133ED9FF801370486D13F8 -486D487E5A48EBF003D81FE75C13C7123F01871307D87F8F5CEB0FE0A2D8FF1F130F02C0 -5BEA7E3F00001380151F017F5C1400A2153F495C5B168792387F8FC00001151F5B15FF16 -3FDA01FE1380A21403D9FE07EB7F000000131F90B7FC6D5CEDBFFC6D133F90391FFE1FF0 -903903F007E02A2979A730>III E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fo cmbxti10 10.95 5 -/Fo 5 121 df46 D99 -D -101 D<147C14FE1301497E5BA25CA2130FA25CA2131FA25CA2133FA25C007FB512F0B612 -F815F0A27EC6EBE000A25CA25AA25CA25AA291C7FCA25AA25BA2120FA25BA2001F14F014 -0113F8140315E0003F130701F013C0140FEC1F80001FEB3F00147EEBF1FC6CB45A6C5B00 -015B6C6CC7FC1D3C78BA23>116 D120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmmi6 6 9 -/Fp 9 123 df12 D<127812FCA4127806067A8513>58 -D<131FEBFF8C3801E0DE3803807E3807007C48133C121E123E003C5B127CA3485BA21540 -1560903801E0C012781303393807E180391C1CF300380FF87F3807E03C1B177E9522>97 -DI<1338137CA2137813701300A7EA0780EA1FC0EA38E01230EA60F0EAC1E0 -A3EA03C0A3EA0780A2EA0F0013041306EA1E0CA21318121CEA1E70EA0FE0EA07800F237D -A116>105 D<13F8EA0FF0A21200A2485AA4485AA43807801E147FEB81C3EB8387380F06 -0F495A1318EB700E4848C7FCA213FCEA1E7EEA3C0F80EB0781158039780F0300A21402EB -070600F0138CEB03F8386000F019247CA221>107 D<000F017E13FC3A1F81FF83FF3B31 -C383C707803A61EE03CC039026EC01F813C0D8C1F813F013F001E013E00003903903C007 -8013C0A2EE0F003907800780A2EE1E041706270F000F00130C163C1718A2001E011EEB1C -70EE1FE0000C010CEB07802F177D9536>109 D<000F13FC381FC3FF3931C707803861EC -0301F813C0EAC1F0A213E03903C00780A3EC0F00EA0780A2EC1E041506D80F00130C143C -15181538001EEB1C70EC1FE0000CEB07801F177D9526>I122 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fq cmcsc10 10.95 24 -/Fq 24 122 df45 D65 D67 DIIII76 -D78 DI< -B712E016FE707E00019039C0007FF06C6C48EB0FF8EE03FE707E707F717E717EA284171F -84A760173F60604D5A4DC8FC4C5A4C5AEE0FF0EE7FC091B500FEC9FC16F891388000FEEE -3F80EE0FE0707E707E83160183160083A384A484A4725AF10380A2177F18F0053FEB0700 -2601FFE015F8B600C0011F5B94380FFC0E943803FE1CCBEAFFF8F01FE041407BBD49>82 -DI -86 D98 DIII103 D -109 D111 D114 D<007FB712F8A39039801FF0073A7E000FE00000781678A200 -70163800F0163CA348161CA5C71500B3A8EC3FF8011FB512F0A32E2E7CAD36>116 -DI121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fr cmtt12 12 15 -/Fr 15 86 df65 D<007FB512F8B7FC16C082826C813A03F8000FFCED03FE -15016F7E82A2EE3F80A7EE7F00A25E4B5AA2ED07FCED1FF890B65A5E1680828216F89039 -F8000FFCED01FE6F7EEE7F80163F17C0161FA2EE0FE0A7161F17C0A2163FEE7F8016FF4B -1300150F007FB65AB75A5E16E05E6C4AC7FC2B3D7DBC33>I<91391FE00780DAFFFC13C0 -0103EBFF0F010F148F4914FF5B90387FF81F9038FFC00748497E4848487E497F485A167F -485A49143F121F5B003F151F5BA2127F90C8EA0F8093C7FCA25A5AAD7E7EA36DEC0F8000 -3FED1FC0A27F121F7F000F153F6D15806C7E167F6C6CECFF007F3A01FF8003FE6C6D485A -90397FF81FF86DB55A6D5C6D5C010391C7FC010013FCEC1FE02A3F7CBD33>I<003FB512 -F04814FCB7FC826C816C813A03F8007FF0ED1FF8ED07FC15036F7E8281EE7F80A2163F17 -C0161FA217E0160FA4EE07F0AD160F17E0A4161F17C0163FA21780167FEEFF00A24B5A15 -034B5AED1FF8ED7FF0003FB6FC4815C0B75A93C7FC6C14FC6C14F02C3D7EBC33>I<003F -B712E04816F0B8FCA27E7ED801FCC71207A8EE03E093C7FCA6151F4B7EA490B6FCA69038 -FC003FA46FC7FC92C8FCA817F8EE01FCA9003FB7FC5AB8FCA27E6C16F82E3D7EBC33>I< -003FB712E04816F0B8FCA27E7ED801FCC71207A8EE03E093C7FCA7151F4B7EA490B6FCA6 -9038FC003FA46FC7FC92C8FCB1383FFFF8487FB57EA26C5B6C5B2C3D7DBC33>I<3B7FFF -C00FFFF8B56C4813FCA46C496C13F8D803F8C7EA7F00B3A290B7FCA601F8C77EB3A53B7F -FFC00FFFF8B56C4813FCA46C496C13F82E3D7EBC33>72 D<003FB612804815C0B712E0A2 -6C15C06C1580260003F8C7FCB3B3AD003FB612804815C0B712E0A26C15C06C1580233D78 -BC33>I77 -DI<90381FFFF890B6FC000315C0000F15F0A24815F83A3FFC003FFC01 -E013074913034848EB01FEA290C8FCA500FE157FB3AC6C15FF6C15FEA46D1301A36C6CEB -03FC01F0130F01FC133F6CB612F86C15F0A2000315C0C61500011F13F8283F7BBD33>I< -007FB57EB612F815FE81826C812603F8007FED3FF0ED0FF815076F7E1501A26F7EA74B5A -A215034B5A150FED3FF0EDFFE090B65A5E93C7FC5D8182D9F8007F153F6F7E150F821507 -AA173E177FA416F8030313FF267FFFC014FEB538E001FF17FC81EE7FF86C49EB3FF0C9EA -0FC0303E7EBC33>82 DI<003FB712F84816FCB8FCA43AFE000FE0 -01A8007CED00F8C71500B3B3A40107B512C049804980A26D5C6D5C2E3D7EBC33>I<273F -FFE001B5FC486D481480B56C4814C0A26C496C14806C496C1400D801FCC7EA0FE0B3B3A3 -6D141F00005EA26D143F6D5DA26D6C49C7FC6E5B6D6C485AECF00390390FFC0FFC6DB55A -6D5C6D5C6D6C1380DA1FFEC8FCEC07F8323E80BC33>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmsy6 6 1 -/Fs 1 49 df48 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ft cmr12 12 20 -/Ft 20 118 df<14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F48 -48EB07C04848EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA54815 -FFB3A46C15FEA56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D -130F6C6CEB1F806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC131 ->48 D<007FBAFCBB1280A26C1900CEFCB0007FBAFCBB1280A26C190041187BA44C>61 -D67 DII82 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8 -131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A3 -7E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15 -C0013F14F0010F80010180D9001F7F14019138001FFF03031380816F13C0167F163F161F -17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8 -F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536 ->I85 D99 D<167FED3FFFA315018182B3EC7F8090 -3803FFF090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA248 -5AA2127FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F80 -6C6C010E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>I< -EB01FE903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049 -130F121F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16 -306C7E1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E9038 -1F80F8903803FFE0010090C7FC242E7DAC2B>I105 -D108 -DI<39 -01FC01FE00FF903807FFC091381E07F091383801F8000701707F0003EBE0002601FDC07F -5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>II<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0 -FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26 ->114 D<90383FE0183901FFFC383907E01F78390F0003F8001E1301481300007C147812 -7800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14C06C14E0 -C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C6C147C15 -786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26>I<1306 -A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4150CAA01 -7E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038007F001E3E -7EBC26>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fu cmsy8 8 8 -/Fu 8 113 df0 D<130C131EA50060EB01800078130739FC0C0F -C0007FEB3F80393F8C7F003807CCF83801FFE038007F80011EC7FCEB7F803801FFE03807 -CCF8383F8C7F397F0C3F8000FCEB0FC039781E078000601301000090C7FCA5130C1A1D7C -9E23>3 D<170EA3170F8384170384170184717E1878187C84180FF007C0BA12F819FC19 -F8CBEA07C0F00F00183E601878604D5A60170360170795C7FC5F170EA33E237CA147>33 -D<137813FE1201A3120313FCA3EA07F8A313F0A2EA0FE0A313C0121F1380A3EA3F00A312 -3E127E127CA35AA35A0F227EA413>48 DI54 D<4A7E1403B3B3A6007FB712FEB8FC7E2F2E7CAD38>63 D<18031807180F180E181E -181C183C18381878187018F018E01701EF03C01880170718005F170E171E171C173C1738 -1778177017F05F16015F16035F160701C092C7FC486C5C0007151E486C141C003F153CD8 -73F8143800E31578D801FC147016F06C6C5C1501017F5C1503D93F805B1507D91FC090C8 -FC5D90380FE00E151E903807F01C153C903803F83815786D6C5A5DEB00FF5D147F5D143F -92C9FC80141E140E38427C823B>112 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fv cmsy9 9 3 -/Fv 3 104 df<007FB712FCB812FEA26C16FC2F047A943C>0 D102 -D<12FCEAFFC0EA07F0EA01FC6C7E137F7F80131FB3A580130F6D7E6D7EEB01FC9038007F -C0EC1FE0EC7FC0903801FC00EB03F0495A495A131F5CB3A5133F91C7FC5B13FE485AEA07 -F0EAFFC000FCC8FC1B4B7BB726>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fw cmmi9 9 12 -/Fw 12 122 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C -121C5A5A126009177A8715>59 D97 D<133FEA1FFFA25B1200A35BA21201A25BA2 -1203A25BA21207A2EBE0F8EBE3FF390FEF07809038FC03C001F813E0EBF001D81FE013F0 -13C0138015F8123FA21300A248130315F0127EA2140700FE14E05AA2EC0FC0A2EC1F8000 -7C14005C147E003C137C003E5B381E01F0380F07C06CB4C7FCEA00FC1D357EB321>I<14 -7F903803FFC090380FC0F090383F0038137C4913F83801F0013803E0031207EA0FC09038 -8001F0001F90C7FC123F90C8FCA25A127EA45AA3127C150C151C15386C147015E06CEB03 -C0390F800F003807C07E3801FFF038007F801E227EA021>II<14FE903807FF8090381F03 -C090387C01E03801F800485A485A485A485A1401D83F0013C01403007EEB0F80ECFE0038 -7FFFF8B5128000FCC8FCA45AA415186C1438007C147015E0003CEB01C0003EEB07806CEB -1E00380F80FC3803FFE0C690C7FC1D227DA024>I108 D<147F903803FFC090380FC1F090383F00F8017C137C497F485A48487F12 -07485A5B001F1580123F90C7FCED3F005A127EA25D157E5A15FE5D007C5C14014A5A5D6C -495A4A5A6C49C7FC380F807E3807C1F83801FFE06C6CC8FC21227EA025>111 -D115 -D<01F0130ED803FC131FD8071EEB3F80EA0E1F121C0038EB801F0030140F013F13070070 -1300006014035BD8E07E14001240EA00FE495B000114065BA2150E0003140C5B151C1518 -1538491330157015606D13E04A5A0001495A6D48C7FC3800FC1EEB3FF8EB07E021227EA0 -25>118 D<90391F801F8090397FE07FE09039E0F0E0703A01C0F9C0F83903807D833807 -007F000E1403000C15F0001C137E0018EC01C002FEC7FC00385B1210C7FC13015CA31303 -A25C1640010714E016C0001C5B007E1401010F148000FE1403011FEB0700011B130E39F8 -39F01C397070F878393FE07FE0390F801F8025227EA02C>120 D<13F0D803FCEB01C0D8 -071EEB03E0D80E1F1307121C003813800030140F013F14C000701300126049131FD8E07E -14801240EA00FE49133F000115005BA25D0003147E5BA215FE5D5BA214015DEBF0031407 -0001130F3900F83FF0EB3FFBEB0FC3EB00075DA20007130FD81F805B003F495AA24AC7FC -EB007E003E137C00385B381803F0381E07C0D807FFC8FCEA01F823317EA026>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fx cmr9 9 84 -/Fx 84 128 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A -3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3 -A7486C497EB50083B5FCA32F357FB42D>11 DI<137813FCA212011203EA07F813E0 -EA0FC0EA1F801300123C5A5A12400E0E71B326>19 D24 DI<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D80F600011306 -A40003130EEB000CA248131C00061318000E1338000C1330001C13704813E0387001C000 -60138017177EB326>34 D<147CEB01FEEB07C790380F8380EB1F0181EB3E00A2137EA213 -7C137EA214015D140392C9FC5C140E6D5A1418143802F090380FFFF05C6D5A04011300EE -00FC6D6C1470011F1560013F15E0D977F0495AD9E3F85CD801C31403260381FC91C7FC00 -075D48C66C130E486D130C486D131C003E6D6C5A007EECC03091381FE07000FE010F5B6F -5AEC07F96EB45A6C6D90C712306E5A157F6C6C6D6C13604B6C13E03A3FC001EFE03C1FE0 -03C7F803C03C0FF01F83FE0F802707FFFE00B51200000101F8EB3FFE26003FC0EB07F034 -387DB53C>38 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C -121C5A5A126009177AB315>I<14C01301EB0380EB0F00130E5B133C5B5BA2485A485AA2 -12075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5123C123EA3121E121FA27E -7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01C01300124A79B71E>I<12 -C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E131FA3 -7F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C137813F85BA2485A485AA2 -485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127EB4FCA21380A2127F123D12 -01A412031300A25A1206120E120C121C5A5A126009177A8715>44 -DI<123C127E12FFA4127E123C08087A8715>I<1530157815F8A2 -15F01401A215E01403A215C01407A21580140FA215005CA2143EA2143C147CA2147814F8 -A25C1301A25C1303A25C1307A2495AA291C7FC5BA2131E133EA2133C137CA2137813F8A2 -5B1201A25B1203A2485AA25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A -12601D4B7CB726>II<13 -075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E007FB51280A319327AB126>IIII<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0F -C0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A4 -1218127E12FEA315F0140712F8006014E01270EC0FC06C131F003C14806CEB7F00380F80 -FE3807FFF8000113E038003F801D347CB126>I<14FE903807FF80011F13E090383F00F0 -017C13703901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248C8FCA35A127EEB -07F0EB1FFC38FE381F9038700F809038E007C039FFC003E0018013F0EC01F8130015FC14 -00A24814FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC0030007EB07E03903 -E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126>I<1230123C003FB6FCA34814 -FEA215FC0070C7123800601430157015E04814C01401EC0380C7EA07001406140E5C1418 -14385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA9131C20347CB126>I< -EB0FE0EB7FFC90B5FC3903F01F803907C007C0390F0003E0000EEB01F0001E1300001C14 -F8003C1478A3123EA2003F14F86D13F0EBC001D81FF013E09038F803C0390FFE07803907 -FF0F006C13DE6C13F87EEB3FFE8001F713C0D803E313E0D8078013F0390F007FF8001E13 -1F003EEB07FC003C1303481301EC007E12F848143EA2151EA37E153C1278007C14787E6C -14F0390F8003E03907F01FC00001B5120038007FFCEB1FE01F347DB126>II< -123C127E12FFA4127E123C1200B0123C127E12FFA4127E123C08207A9F15>I<123C127E -12FFA4127E123C1200B0123C127E12FE12FFA3127F123F1203A412071206A3120E120C12 -1C1238123012701260082F7A9F15>I<007FB812C0B912E0A26C17C0CCFCAC007FB812C0 -B912E0A26C17C033147C9C3C>61 D64 D<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC60 -1FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA24980 -0118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B512 -E0A333367DB53A>III< -B77E16F016FE3A01FE0001FF00009138003FC0EE0FE0707E707E707E707E177E177FEF3F -80A2EF1FC0A3EF0FE0A418F0AA18E0A3171F18C0A21880173F18005F17FE5F4C5AEE07F0 -4C5AEE3FC000014AB45AB748C7FC16F8168034337EB23B>IIIIII<017F -B5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A38 -0F03F03803FFC0C690C7FC20357DB227>IIIIII -III<90381FE00390387FFC0748B5 -FC3907F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC12 -7F13C0EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302 -001380157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E -01C05B39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA3 -90398007F001D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C715 -00B3AB4A7E011FB512FCA330337DB237>IIII< -267FFFFC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A6E91C7FC6D6C13 -0E010F140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6 -EC1FECEC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E9138180FF0EC3807 -02707F91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E7E131C496E7E01 -786E7E13FCD807FEEC1FFEB56C90B512F8A335337EB23A>II<003FB612FC -A39039F80007F813C090C7EA0FF0003EEC1FE0123C0038EC3FC00078EC7F801270EDFF00 -4A5AA20060495AA24A5A4A5AC7FC4A5A4A5AA24A5A4AC7FCA2495A495AA2495A495AA249 -48130C495AA2495A49C7FCA24848141CA2485A485A1638485A4848147816F84848130148 -481307153FB7FCA326337CB22F>II< -EAFFF0A41200B3B3B3AD12FFA40C4B7FB715>93 D97 DII<153FEC0FFFA3EC007F81AEEB -07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA12 -7E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE01300 -26357DB32B>III<151F90391FC07F809039FFF8E3C03901 -F07FC73907E03F033A0FC01F83809039800F8000001F80EB00074880A66C5CEB800F000F -5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFF -C06C14F06C14FC4880381F0001003EEB007F4880ED1F8048140FA56C141F007C15006C14 -3E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC22337EA126>IIIII< -EA07E012FFA3120F1207B3B3A7EA0FF0B5FCA310347EB315>I<2703F01FE013FF00FF90 -267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE1470496D -486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F01F -C000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F80 -B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C04913 -0F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC90 -38F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<903807F003 -90383FFC07EBFC0F3901F8038F3807E001000F14DF48486CB4FC497F123F90C77E5AA25A -5AA9127FA36C6C5B121F6D5B000F5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE090 -C7FCAAED7F8091380FFFFCA326307DA029>I<3803E07C38FFE1FF9038E38F809038E71F -C0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E>II<1330A51370A313F0A21201A212031207 -381FFFFEB5FCA23803F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E018 -2F7FAD1E>IIIII<3A7FFF807FF8A33A07F8001FC00003EC0F800001 -EC070015066C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA29038 -07E180A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278 -D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>I<003FB512F0A2EB -000F003C14E00038EB1FC00030EB3F800070137F1500006013FE495A13035CC6485A495A -A2495A495A49C7FC153013FE485A12035B48481370485A001F14604913E0485A387F0003 -48130F90B5FCA21C207E9F22>II<001C1370387F01FC00FF13FE -A4007F13FC381C0070170879B226>127 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fy cmr6 6 10 -/Fy 10 116 df<130C1338137013E0EA01C0EA038013005A120EA25AA25AA312781270A3 -12F0AB1270A312781238A37EA27EA27E7E1380EA01C0EA00E013701338130C0E317AA418 ->40 D<12C012707E7E7E7E7E1380EA01C0A2EA00E0A21370A313781338A3133CAB1338A3 -13781370A313E0A2EA01C0A2EA038013005A120E5A5A5A12C00E317CA418>I<1438B2B7 -12FEA3C70038C7FCB227277C9F2F>43 D<13FF000313C0380781E0380F00F0001E137848 -133CA248131EA400F8131FAD0078131EA2007C133E003C133CA26C13786C13F0380781E0 -3803FFC0C6130018227DA01E>48 D<13E01201120712FF12F91201B3A7487EB512C0A212 -217AA01E>II<13FF000313C0380F03E0381C -00F014F8003E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A238 -0003E0EB00F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E -03F0380FFFC00001130018227DA01E>I<137F3803FFE03807C0F0380F0078001E13F85A -A2007C13700078130012F8A7127C1418123C6C13306C13603807C0E03803FF8038007E00 -15187D961B>99 D<137E3803FFC0380781E0380F00F0001E137848133CA248131EA200F8 -131FA70078131E007C133E003C133C003E137C6C13F8380F81F03803FFC0C6130018187D -961E>111 D<3807F080EA1FFFEA380FEA700312E01301A212F06CC7FCEA7FC0EA3FF8EA -1FFEEA07FF38001F80EB07C0EAC003130112E0A200F01380130338FC0F00EACFFEEA83F8 -12187D9618>115 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fz cmti10 10 16 -/Fz 16 121 df<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A12 -0FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15 -831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901 -F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207 -EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F -1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8 -007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FF -C090380FC1E090381F0070017E13784913383901F801F83803F003120713E0120FD81FC0 -13F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003E -EB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426>I<147F903803FFC0 -90380FC1E090383F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07 -E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA21530007C14381578007E14F000 -3EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426>101 -D105 -D108 -DII<147F903803FFC090380FC1F090381F00F8 -017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A -4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E -6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007C090391FE03FF09039 -3CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE148013E05CEA01E113C15C -A2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80035E013F495A -6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA21201A25BA212 -03A25B1207B512C0A3293580A42A>I<3903C003F0390FF01FFC391E783C0F381C7C703A -3C3EE03F8038383FC0EB7F800078150000701300151CD8F07E90C7FCEAE0FE5BA2120012 -015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC120E212679A423>114 -D<14FE903807FF8090380F83C090383E00E04913F00178137001F813F00001130313F0A2 -15E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13C01300143F141F14 -0F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E06CB45AD801FEC7FC -1C267AA422>II<13F8D8 -03FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F131F007815C01270013F131F -00F0130000E015805BD8007E133FA201FE14005B5D120149137EA215FE120349EBFC0EA2 -0201131E161C15F813E0163CD9F003133814070001ECF07091381EF8F03A00F83C78E090 -393FF03FC090390FC00F00272679A42D>I<01F0130ED803FC133FD8071EEB7F80EA0E1F -121C123C0038143F49131F0070140FA25BD8F07E140000E08013FEC6485B150E12015B15 -1E0003141C5BA2153C000714385B5DA35DA24A5A140300035C6D48C7FC0001130E3800F8 -3CEB7FF8EB0FC0212679A426>I<903907E007C090391FF81FF89039787C383C9038F03E -703A01E01EE0FE3803C01F018013C0D8070014FC481480000E1570023F1300001E91C7FC -121CA2C75AA2147EA214FEA25CA21301A24A1370A2010314F016E0001C5B007E14010107 -14C000FEEC0380010F1307010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC0 -27267CA427>120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FA cmsy10 10 6 -/FA 6 107 df<173CA2173E171E171F8384717E170384717E717E187C007FB812FEBAFC -856C84CBEA03F0727EF000FEF13F80F11FE0F107F8F101FFA2F107F8F11FE0F13F80F1FE -00F001F84E5A007FB912C0BA5A96C7FC6C5FCB127C604D5A4D5A6017074D5A95C8FC5F17 -1E173E173CA248307BAC53>41 D102 -D<12FCEAFFC0EA07F0EA01FCEA007E7F80131F80130FB3A7801307806D7E6D7EEB007EEC -1FF0EC07F8EC1FF0EC7E00495A495A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA -07F0EAFFC000FCC8FC1D537ABD2A>I<14C0EB01E01303A214C01307A21480130FA2EB1F -00A2131E133EA25BA2137813F8A2485AA25B1203A25B1207A2485AA290C7FC5AA2123EA2 -123C127CA2127812F8A41278127CA2123C123EA27EA27E7FA26C7EA212037FA212017FA2 -6C7EA21378137CA27FA2131E131FA2EB0F80A2130714C0A2130314E0A21301EB00C01352 -78BD20>I<126012F07EA21278127CA2123C123EA27EA27E7FA26C7EA212037FA26C7EA2 -12007FA21378137CA27FA2131E131FA2EB0F80A2130714C0A2130314E0A414C01307A214 -80130FA2EB1F00A2131E133EA25BA2137813F8A25B1201A2485AA25B1207A2485AA290C7 -FC5AA2123EA2123C127CA2127812F8A25A126013527CBD20>I<126012F0B3B3B3B3A912 -60045377BD17>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FB cmex10 10 41 -/FB 41 114 df<1430147014E0EB01C01303EB0780EB0F00A2131E5BA25B13F85B12015B -1203A2485AA3485AA3121F90C7FCA25AA3123EA2127EA6127C12FCB3A2127C127EA6123E -A2123FA37EA27F120FA36C7EA36C7EA212017F12007F13787FA27F7FA2EB0780EB03C013 -01EB00E0147014301462738226>0 D<12C07E12707E123C7E7EA26C7E6C7EA26C7E7F12 -007F1378137CA27FA37FA31480130FA214C0A31307A214E0A6130314F0B3A214E01307A6 -14C0A2130FA31480A2131F1400A3133EA35BA2137813F85B12015B485AA2485A48C7FCA2 -121E5A12385A5A5A14627C8226>I<12F0B3B3B2043674811C>12 -D<151E153E157C15F8EC01F0EC03E01407EC0FC0EC1F8015005C147E5CA2495A495AA249 -5AA2495AA2495AA249C7FCA2137EA213FE5B12015BA212035BA21207A25B120FA35B121F -A45B123FA548C8FCA912FEB3A8127FA96C7EA5121F7FA4120F7FA312077FA21203A27F12 -01A27F12007F137EA27FA26D7EA26D7EA26D7EA26D7EA26D7E6D7EA2147E80801580EC0F -C0EC07E01403EC01F0EC00F8157C153E151E1F94718232>16 D<12F07E127C7E7E6C7E7F -6C7E6C7E12017F6C7E137EA27F6D7EA26D7EA26D7EA26D7EA26D7EA26D7EA280147E147F -80A21580141FA215C0A2140F15E0A3140715F0A4140315F8A5EC01FCA9EC00FEB3A8EC01 -FCA9EC03F8A515F01407A415E0140FA315C0141FA21580A2143F1500A25C147E14FE5CA2 -495AA2495AA2495AA2495AA2495AA249C7FC137EA25B485A5B1203485A485A5B48C8FC12 -3E5A5A5A1F947D8232>I<160F161F163E167C16F8ED01F0ED03E0ED07C0150FED1F8016 -00153E157E5D4A5A5D14034A5A5D140F4A5AA24AC7FC143E147E5CA2495AA2495AA2495A -A2130F5CA2495AA2133F91C8FCA25B137E13FEA25B1201A25B1203A35B1207A35B120FA3 -5BA2121FA45B123FA690C9FC5AAA12FEB3AC127FAA7E7FA6121F7FA4120FA27FA312077F -A312037FA312017FA212007FA2137E137F7FA280131FA26D7EA2801307A26D7EA26D7EA2 -6D7EA2147E143E143F6E7EA26E7E1407816E7E1401816E7E157E153E811680ED0FC01507 -ED03E0ED01F0ED00F8167C163E161F160F28C66E823D>I<12F07E127C7E7E6C7E6C7E6C -7E7F6C7E1200137C137E7F6D7E130F806D7E1303806D7EA26D7E147C147E80A26E7EA26E -7EA26E7EA2811403A26E7EA2811400A281157E157FA2811680A2151F16C0A3150F16E0A3 -150716F0A31503A216F8A4150116FCA6150016FEAA167FB3AC16FEAA16FC1501A616F815 -03A416F0A21507A316E0150FA316C0151FA31680153FA216005DA2157E15FE5DA214015D -A24A5AA214075DA24A5AA24A5AA24AC7FCA2147E147C14FC495AA2495A5C1307495A5C13 -1F49C8FC137E137C5B1201485A5B485A485A48C9FC123E5A5A5A28C67E823D>I<161E16 -7EED01FE1507ED0FF8ED3FE0ED7FC0EDFF80913801FE004A5A4A5A5D140F4A5A5D143F5D -147F92C7FCA25C5CB3B3B3A313015CA3495AA213075C495AA2495A495A137F49C8FC485A -485AEA07F0EA1FE0485AB4C9FC12FCA2B4FCEA3FC06C7EEA07F0EA03FC6C7E6C7E6D7E13 -3F6D7E6D7EA26D7E801303A26D7EA3801300B3B3B3A38080A281143F81141F816E7E1407 -816E7E6E7E913800FF80ED7FC0ED3FE0ED0FF8ED07FE1501ED007E161E27C675823E>26 -D<12F012FCB4FC13C0EA3FE0EA0FF86C7E6C7EC67E6D7E6D7E131F806D7E130780130380 -1301A2801300B3B3B3A38080A36E7EA281141F6E7EA26E7E6E7E816E7E6E7EED7F80ED1F -C0ED0FF0ED07F8ED01FEED007EA2ED01FEED07F8ED0FF0ED1FC0ED7F80EDFF004A5A4A5A -5D4A5A4A5AA24A5A143F5DA24AC7FCA35C5CB3B3B3A313015CA213035C13075C130F495A -5C133F495A49C8FCEA03FE485A485AEA3FE0B45A90C9FC12FC12F027C675823E>I32 D<12F07E127C7E123F7E6C7E6C7E6C7E7F12016C7E7F137E133E133F6D7E13 -0F806D7EA26D7E80130180130080147E147F8081141F81140F81140781A2140381140181 -A2140081A2157FA36F7EA382151FA282150FA3821507A382A21503A282A31501A282A315 -00A382A482A21780A7163F17C0AC161F17E0B3B3A217C0163FAC1780167FA71700A25EA4 -5EA31501A35EA21503A35EA21507A25EA3150F5EA3151F5EA2153F5EA34BC7FCA315FEA2 -5D1401A25D14035D1407A25D140F5D141F5D143F92C8FC5C147E14FE5C13015C13035C49 -5AA2495A5C131F49C9FC133E137E5B5B485A12035B485A485A48CAFC5A123E5A5A5A2BF8 -7E8242>I -II40 D<12F012FCB4FC7FEA3FE06C7E6C7EEA03FC6C7E6C -7E6D7E6D7E80131F6D7E8013076D7EA2801301A26D7EA46E7EB3B3B3B281143FA381141F -A26E7EA21407811403816E7E1400816F7E6F7E6F7E6F7E6F7E6F7EED00FE167FEE3FC016 -0FA2163FEE7F0016FEED03FC4B5A4B5A4B5A4B5A4B5A4BC7FC5D14014A5A5D14075D140F -A24A5AA2143F5DA3147F5DB3B3B3B24AC8FCA4495AA213035CA2495A130F5C495A133F5C -495A49C9FC485A485AEA0FF8485A485AEAFF8090CAFC12FC12F02AF8748243>I<177C17 -FCEE01F8A2EE03F0EE07E0EE0FC0A2EE1F80EE3F005E167E5E15015E15034B5A5E150F5E -151F4B5AA24BC7FCA215FEA24A5AA24A5AA24A5AA2140F5D141F5D143F5DA2147F92C8FC -5CA25C13015C1303A25C1307A3495AA3495AA3133F5CA3137F5CA313FF91C9FCA35A5BA3 -1203A25BA31207A35BA3120FA45BA2121FA65BA2123FA85BA2127FAE5B12FFB3A62E9568 -8149>48 D<12F87E127EA27E6C7E6C7EA26C7E6C7E7F12016C7E7F137E137F6D7E131F80 -130F806D7EA26D7EA26D7EA26D7EA2147FA26E7EA281141F81140F811407A281140381A2 -140181140081A28182A36F7EA36F7EA382150FA3821507A3821503A3821501A382A281A3 -1780A3167FA317C0A4163FA217E0A6161FA217F0A8160FA217F8AE160717FCB3A62E957E -8149>I -56 D<12F812FE6C7E7F13F0EA3FF86C7E6C7EEA03FF6C7F6C7F6D7E6D7E806D7E130F6D -7E807F15807F15C07FA2EC7FE0A3EC3FF0A415F8141FB3B3A71D4B737E4A>IIIIII64 -DIII73 -D80 DI<167F923801FFC09238 -03C0F0923807803892380F007892381F01FC151E153EA2157E92387C0070170015FCA44A -5AA81403A45DA41407A94A5AAA4A5AA95DA4143FA492C8FCA7143E147EA4147C123800FE -13FC5CA2495A5CEA7803387007C0383C0F80D80FFEC9FCEA03F82E5C7C7F27>I88 -DII104 D -I110 D<12F012FE6C7E13E0EA3FF0EA0FFCEA03FE6C7E6C6C7E6D7E6D7EA26D7E13 -07A2801303B3B3A76D7EA28013008080816E7E6E7E6E7E6E7EEC01FC6EB4FCED3FC0150F -A2153FEDFF00EC01FCEC07F84A5A4A5A4A5A4A5A92C7FC5C5C13015CA2495AB3B3A71307 -5CA2130F495AA2495A495A4848C8FC485AEA0FFCEA3FF0B45A138048C9FC12F022947682 -37>I<1B301B781BF8A2F201F0A2F203E0A2F207C0A2F20F80A2F21F00A21A3EA262A262 -A24F5AA24F5AA24F5AA262190FA24FC7FCA2193EA261A261A24E5AA24E5AA24E5AA24E5A -A24EC8FCA2183EA260131001305E13F800014C5A1203D80FFC4B5A121DD838FE4B5A12F0 -D8407F4B5A12004DC9FC6D7E173E6D7E5F6D7E5FA26D6C495AA26D6C495AA26D6C5C1607 -A26D6C495AA2027F49CAFCA291383F803EA25EEC1FC05EEC0FE0EDE1F0EC07F1EDF3E0A2 -6EB45AA26E5BA26E90CBFCA25D157E157C15384D64788353>I<1B301B78A21BF8A21BF0 -1A01A21BE01A03A21BC01A07A21B801A0FA21B0062A21A1E1A3EA21A3C1A7CA21A781AF8 -A262A21901A2621903A2621907A262190FA297C7FC61A2191E193EA2193C197CA2197819 -F8A2611801A2611803A261A21807A261180FA296C8FC60A2181E183EA2183C187C131001 -301678017016F813F860000116011203486C5E000F1603121DD838FE5E00701607126000 -C05FEA407F0000160FA26D6C92C9FC5FA2171E6D6C143EA2173C6D6C147CA2177817F86D -7E5F16016D7E5F1603A26D6C5C1607A26D6C5C160FA294CAFC027F5BA2161EEC3F80163E -A2163C91381FC07CA2167891380FE0F8A25E15E1EC07F15E15F3EC03FB5E15FFA26E5BA3 -6E90CBFCA35D157EA2157C153C15384D96788353>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FC cmmi12 12 1 -/FC 1 59 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B>58 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FD cmti10 10.95 73 -/FD 73 128 df11 -D<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C137F031F14FF -4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218E0903A0003F0 -00070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA2143F92C712FE5F -A34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A010113F018E09338 -00F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA249CAFC12FEEA -F81EEA703CEA7878EA1FF0EA07C0385383BF33>II19 D39 -DI<14031580A2EC01C0EC00E0A21570A215781538153CA3151EA415 -1FA2150FA7151FA9153FA2153EA3157EA2157CA215FCA215F8A21401A215F0A2140315E0 -A2140715C0A2EC0F80A2141F15005C143EA25CA25CA2495A5C1303495A5C130F49C7FC13 -1E5B137C5B5B485A485A485A48C8FC121E5A12705A5A205A7FC325>I<140E141FA3141E -143EA2143CA2D80780EB03C09038C03807390FE0781F9039F0703F80D807F8EBFF003901 -FC71FC39007E67F090383F6FC0D90FFEC7FCEB07F8EB01E0EB07F8EB1FFCEB7DFF3901F9 -9FC0390FE38FE0393FC387F8397F8383FC38FE078100FC138000F01478C648C8FCA35BA3 -133EA2131C22276FC32E>I44 -D<387FFFFEA3B5FCA21705799521>I<120FEA3FC0127FA212FFA31380EA7F00123C0A0A -77891C>I<1838187CA218F8170118F0EF03E0A2EF07C0A2EF0F80171F1800173EA25FA2 -5F16015F4C5AA24C5AA24C5A161F94C7FC163EA25EA25E15015E4B5AA24B5AA24B5A151F -93C8FC153EA25DA25D14015D4A5AA24A5AA24A5A141F92C9FC143EA25CA25C13015C495A -A2495AA2495A131F91CAFC133EA25BA25B12015B485AA2485AA2485A121F90CBFC123EA2 -5AA25AA25A5A365B7FC32E>I<15FE913807FF8091381F07C091387C01F0ECF000494813 -F8494813780107147C495A49C7FC167E133E137EA25BA2485AA2000315FEA25B000715FC -A2491301120FA34848EB03F8A44848EB07F0A448C7EA0FE0A316C0007E141F12FE168015 -3FA2481500A2157EA25DA25D4813015D6C495A127C4A5A4A5A6C49C7FC143E6C5B380FC1 -F03803FFC0C648C8FC273F76BC2E>I<15031507150F151F151E153E157EEC01FEEC03FC -1407141FEB01FF90380FFBF8EB1FC3EB0E07130015F0A2140FA215E0A2141FA215C0A214 -3FA21580A2147FA21500A25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA213 -1FA25CEB7FE0B612F0A215E0203D77BC2E>I<15FE913803FFC091380F01F091383C00F8 -4A137C4A7F4948133F49487F4A148049C7FC5BEB0E0C011E15C0EB1C0EEB3C0613381378 -1370020E133FD9F00C148013E0141C0218137F00011600EBC0384A13FEEC600102E05B3A -00E3C003F89039FF0007F0013C495A90C7485A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC -147E14F8EB03E0495A011FC9FC133E49141801F0143C48481438485A1678485A48C85A12 -0E001E4A5AD83FE0130301FF495A397C3FF01FD8780FB55AD8700391C7FCD8F0015B486C -6C5A6E5AEC07C02A3F79BC2E>II<02C0EB018002F0130FD901FEEB7F0091B512FE5E5E4914 -E016804BC7FCECBFF8D90780C8FC91C9FCA35B130EA3131E131CA3133C9038381FC0ECFF -F090383BE07C90387F003E017E133F017C7F0178805B498090C7FCA6153FA4001F147F48 -6C5C487EA24913FF00FF92C7FC90C7FC48495A12E04A5A5D6C495A140F00705C0078495A -6C495A003E01FEC8FC381F03FC380FFFF0000313C0C648C9FC293F77BC2E>53 -DI<15 -FF020713C091381F81E091383E00F002FC13F84948137C495A4948137E010F143E495A13 -3F4A133F017F147F91C7FC5BA2485AA216FF12035B16FE150112075B1503A216FC491307 -A20003140F16F8151F12016D133F0000EC7FF015EF90387C01CF90393E079FE090380FFE -1FD903F813C090C7123FA21680157F160015FEA24A5A001C5C007F1303485C4A5A4A5A4A -5A4849C7FC00F8137E00E05B6C485A387C07E0383FFFC06C90C8FCEA03F8283F77BC2E> -57 D<131EEB3F80137FEBFFC05AA214806C13005B133C90C7FCB3120FEA3FC0127FA212 -FFA35B6CC7FC123C122777A61C>II<0003B912C04818E0A26C -18C0CDFCAE007FB812FCB97EA26C5F3B1676A146>61 D<4BB4FC031F13E092387E00F8DA -01F0131EDA07801307021FC7EA03C0023CEC01E04A1400D901E015704948157849481538 -49C9121C131E49D907E0131E0138D93FFC130E49EBFC1E9039F001F0073C01E007E00380 -079038C00FC0000390391F8001C09026803F0013FC2607007EEB00FE484914FC120E381E -01F8D81C0314014A14F8EA3C0700385B0403130FD8780FEDF00E00705BA20407131ED8F0 -1FEDE01C00E05BA2040F133CEFC038A3041F1370010F1580043F13F06E017F13E00107EC -FF814B14C0903B03E003DF0380903A01F00F1F073C7000F83E0F8F0091393FF807FC9139 -0FC001F06C90CAFCA2123C121C7E000FEE1F806C6C157F6C6C913801FC006C6CEC0FF0D8 -0078ECFF80013FD91FFCC7FC010FB512C0010001F0C8FC384172BF46>64 -D<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679167116E1A2ED01 -C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC5C140E5C -021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E131C133C5B01F882 -487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>I<49B712C018F818FE903B00 -03FC0001FF9438007F804BEC3FC0A2F01FE014074B15F0180FA2140F5D181FA2021F16E0 -5D183F19C0023FED7F804B14FF19004D5A027F4A5A92C7EA07F0EF1FE0EF7F804AD903FE -C7FC92B512F017FE4AC7EA3F800101ED1FE04A6E7E17078401036F7E5CA30107825CA301 -0F5E4A1407A260011F150F5C4D5A60013F153F4A4A5A4D5A017F4A90C7FC4C5A91C7EA0F -F849EC3FF0B812C094C8FC16F83C3E7BBD40>I<9339FF8001C0030F13E0033F9038F803 -809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E49 -5AD903F86E5A495A130F4948157E4948157C495A13FF91C9FC4848167812035B12074916 -70120FA2485A95C7FC485AA3127F5BA312FF5BA490CCFCA2170FA2170EA2171E171C173C -173817786C16706D15F04C5A003F5E6D1403001F4B5A6D4AC8FC000F151E6C6C5C6C6C14 -F86C6C495A6C6CEB07C090397FC03F8090261FFFFEC9FC010713F0010013803A4272BF41 ->I<49B712C018F818FE903B0003FE0003FF9438007F804BEC1FC0F00FE0F007F014074B -EC03F8F001FCA2140F4BEC00FEA3141F4B15FFA3143F5DA3027F5D5DA219FE14FF92C812 -03A34917FC4A1507A219F813034A150F19F0A20107EE1FE05CF03FC0A2010FEE7F804A16 -006060011F4B5A4A4A5A4D5AA2013F4B5A4AEC3FC04DC7FC017F15FEEE03FC4AEB0FF001 -FFEC7FE0B8128004FCC8FC16E0403E7BBD45>I<49B812F8A390260003FEC7121F18074B -14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FC -A217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C -13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A -5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>I<49B812F0 -A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D1770EFF003 -023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA349D9003FC8 -FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3133F5CA2137F -A25C497EB612E0A33C3E7BBD3B>II<49B6FC -5BA2D9000313005D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C7FCA3 -5B5CA313035CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67EA3283E7BBD -23>73 D<4AB61280A2180091C713C0167F5FA216FF94C7FCA35D5EA315035EA315075EA3 -150F5EA3151F5EA3153F5EA3157FA25EA215FFA293C8FCA25CA25DA2380F8003EA3FC0D8 -7FE05BA21407D8FFC05B140F01805B49485A12FC0070495A4A5A6C01FEC9FC383C01FC38 -0F07F03807FFC0C648CAFC314079BD30>I<49B612C0A25FD9000390C8FC5D5DA314075D -A3140F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5CA313035C18C0EF01E00107 -16C05C17031880130F4A140718005F131F4A141EA2173E013F5D4A14FC1601017F4A5A16 -074A131F01FFECFFF0B8FCA25F333E7BBD39>76 D<49B5933807FFFC496062D90003F0FC -00505ADBBF805E1A771AEF1407033F923801CFE0A2F1039F020FEE071F020E606F6C140E -1A3F021E161C021C04385BA2F1707F143C023804E090C7FCF001C0629126780FE0495A02 -705FF00700F00E0114F002E0031C5BA2F03803010116704A6C6C5D18E019070103ED01C0 -0280DA03805BA2943807000F13070200020E5C5FDB03F8141F495D010E4B5CA24D133F13 -1E011CDAF9C05CEEFB80197F013C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807 -FE4C7EB500F04948B512FE16E01500563E7BBD52>I<902601FFFE020FB5FC496D5CA2D9 -00016D010013C04AEE3F00193E70141C193CEC07BFDB3FE01438151F1978020F7FDA0E0F -15708219F0EC1E07021C6D5CA203031401023C7FDA38015DA2701303EC7800027002805B -A2047F130702F014C04A013F91C7FCA2715A0101141F4AECF00EA2040F131E010315F84A -151C1607EFFC3C0107140391C7143817FE040113784915FF010E16708218F0131E011C6F -5AA2173F133C01385E171F137813F8486C6F5AEA07FEB500F01407A295C8FC483E7BBD44 ->II<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80F03FC00207151F19E0 -5DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A2027FEDFF00604B495A4D -5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA21303A25CA21307A25C -A2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E7BBD3E>II<49B612FCEFFF8018F0903B0003FE -000FF8EF03FE4BEB00FF8419800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80 -143F4B15004D5A60027F4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E017 -80499038000FE04A6D7E707E707E0103814A130083A213075CA25E130F5C5F1603131F5C -A3013F020714404A16E05F017F160119C04A01031303496C1680B6D8800113079438FE0F -009338007E1ECAEA3FFCEF07F03B407BBD42>I<92390FF001C0ED7FFE4AB5EA03809139 -07F80FC791390FC003EF91391F8001FF4AC71300027E805C495A4948143EA2495AA2010F -153C5CA3011F1538A38094C7FC80A214FC6DB4FC15F015FE6DEBFFC06D14F06D14FC6D80 -143F020F7F020180EC001F150303007F167F163FA2161FA212075A5F120EA2001E153F94 -C7FCA2163E003E157E167C003F15FC4B5A486C5C4B5A6D495AD87DE0EB1F80D8F8F849C8 -FC017F13FE39F03FFFF8D8E00F13E048C690C9FC32427ABF33>I<48B9FCA25A903AFE00 -1FF00101F89138E0007FD807E0163E49013F141E5B48C75BA2001E147FA2001C4B131C12 -3C003814FFA2007892C7FC12704A153C00F01738485CC716001403A25DA21407A25DA214 -0FA25DA2141FA25DA2143FA25DA2147FA25DA214FFA292C9FCA25BA25CA21303A25CEB0F -FE003FB67E5AA2383D71BC41>I<001FB500F090B512F0485DA226003FF0C7380FFC004A -EC03F04A5D715A017F1503A24A5DA201FF150795C7FC91C8FCA2485E170E5BA20003161E -171C5BA20007163C17385BA2000F167817705BA2001F16F05F5BA2003F1501A2495DA200 -7F1503A2495DA2160794C8FC48C8FC5E160E161E6C151C163C5E5E5E6C6C13014B5A001F -4A5A6C6C011FC9FC6D133E6C6C13F83903FC07F0C6B512C0013F90CAFCEB07F83C406FBD -44>II<91B690383FFFFC -605E020101E0010F13006E49EB07F84C6D5A19C06F6C495A96C7FC033F140E705B183C03 -1F5C705B4D5A030F5C70485A4DC8FC0307130EEEFC1E5F03035BEEFE705F6F6C5A5FA26F -90C9FC83A2707EA216FF4B7F5DED079FEE1FF0150EED1C0F03387F1578EDF007DA01E07F -15C09138038003DA07007F140E021E13014A805C02707F4A81495A4948147F01078249C8 -FC013F6F7E496C147F2603FFC049487EB500F8011FEBFFE0A261463E7CBD44>88 -D<027FB612FEA3913AFFF80007FC03C014F892C7EA0FF0D901FC141F4AEC3FE04AEC7FC0 -4A15800103EDFF004A5B4C5A4948495A5F91C7485A49141F010E4A5A4C5A5F011E4AC7FC -90C75A4B5A4B5A5E4B5A151F4B5A4B5A5E15FF4A90C8FC4A5A4A5A5D140F4A5A4A5A4A48 -130E4B131E02FF141C4990C7FC495A4948143C4A1438010F1578495A49481470494814F0 -5C01FF4A5A4890C7FC4848140348481407494A5A000F151F4848143F4848ECFF80484813 -0F90B7FCB8FC94C7FC373E79BD38>90 D<147E49B47E903907C1C38090391F80EFC09038 -3F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485AA215FE007F -5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F13F0007E01 -3F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E252977 -A72E>97 DIIII<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2157EA21780EE0E004BC7 -FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8 -FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F5C12FF49C9FCA2EAFE1E -EAF83C1270EA7878EA3FE0EA0F802A5383BF1C>III<1478EB01FCA21303A314F8EB00E01400AD137C48B4 -FC38038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012 -005B137E13FE5BA212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB -81C01383148038078700EA03FEEA00F8163E79BC1C>I<1507ED1FC0A2153FA31680ED0E -0092C7FCADEC07C0EC3FF0EC78F8ECE07CEB01C01303EC807EEB0700A2010E13FE5D131E -131CEB3C01A201005BA21403A25DA21407A25DA2140FA25DA2141FA25DA2143FA292C7FC -A25CA2147EA214FEA25CA213015CA2121C387F03F012FF495A5C495A4848C8FCEAF83EEA -707CEA3FF0EA0FC0225083BC1C>IIIIII<903903E001F890390FF807FE903A1E -7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038 -F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA201 -07EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1F -C7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D -3A80A72E>I<027E1360903901FF81E0903807C1C390391F80E7C090383F00F7017E137F -5B4848EB3F80485AA2485A000F15005B121F5D4848137EA3007F14FE90C75AA348130148 -5CA31403485CA314074A5A127C141F007E133F003E495A14FF381F01EF380F879F3903FF -1F80EA00FC1300143F92C7FCA35C147EA314FE5CA21301130390B512F05AA2233A77A72A ->IIII<137C48B4141C26038F80137EEA070700 -0E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B -017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED -7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907 -F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E00 -1C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116 -C013FE5B1503000115805BA2ED07001203495B150EA25DA25D1578000114706D5B000049 -5A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491387001FC3A038F -8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C1507D8781F4A133C -00701380A2D8F03F130F020049133812005B017E011F14784C137013FE5B033F14F00001 -92C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00010101141E01F8 -6D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC -372979A73C>I<903903F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EBB8 -3FD801E013F89039C007F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E13 -1FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538003F491378D87F -811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC391F -F80FFC3907E003F029297CA72A>I<137C48B4143826038F8013FCEA0707000E7F001E14 -01001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F1307020013E012005B017E -130F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE5D00011301EBF8 -030000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A5A -D8FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F8263B -79A72C>II124 D<000E131E383F807F007FEBFF8012FFA215005B007E -5B003C1338190968BD2E>127 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FE cmbx12 14.4 74 -/FE 74 128 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 -F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 -4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E -007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D -D34E>11 DI14 -D38 DI42 D44 DIII<9138 -03FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49 -486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F -17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0 -A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B5 -5A01011580D9003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F14FF13 -0F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>II<91380FFFC091B512FC0107ECFF80011F15E090263FF807 -7F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A480 -5CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFF -FEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013807013C0 -18E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18 -F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0 -075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2 -160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC -01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7 -FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF02 -0FB712C0A53A4F7CCE43>III<121F7F7FEBFF8091 -B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A16 -0F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90 -C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A39 -5279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003F -FCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7FA2 -7F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1F -F86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F -81491680EBFFE748018115C048D9007F14E04848011F14F048487F48481303030014F848 -4880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D15 -1FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEB -FFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF80 -91B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E484980486F -7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C -7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C30103028313F890 -39007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D491380A21800 -5E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C -90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>II<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C -7FA24C7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083 -030F814C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B -800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A2 -4A820103854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547B -D366>65 DI<932601FFFCEC -01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F02 -0F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F8824949824949 -824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B -0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F -1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6D -EE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B6 -12C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F02 -03DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC49 -01F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA2 -4849181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC0 -00A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13 -FF6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033F -EE001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>I -II<027FB71280A591C76C -90C7FCB3B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B7E49495BD83FF8495BD8 -1FE05DD80FFC011F5B2707FF807F90C8FC000190B512FC6C6C14F0011F14C0010101F8C9 -FC39537DD145>IIIII<93380FFF -C00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0 -DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F4985494870 -7F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A3484971 -13F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C -1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC -6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC -031F15E0030392C9FCDB001F13E0565479D265>II<93380FFFC00303B6FC031F15E092B712FC -0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F902601FFF0ED3F -FE49496F7E49496F7F49496F7F4990C96C7F4948707F4948707F01FF854A177F48864849 -717EA24849711380A2481BC04A83481BE0A24A83481BF0A3481BF8A291CB7EA3B51AFCAF -6C1BF8A26E5FA36C1BF0A36C6D4D13E0A36C1BC06E5F6C1B806E5F6CDB01FE16006C6D90 -2607FF80495A4C13E06C6D013F6D495A017F91267F03F85C6D6C90277C00FC015B6D6C49 -D97E035B6D01806E485B6D6D48D91F8F5B6D01E0039F90C7FC6D01F06EB45A6DD9FCF85D -DA3FFF6E13F0020F6D4913C0020301FF90B5C8FC020091B512FC031F180C0303181EDB00 -1FEBE3FE93C7EA01FF74133E74137E7413FEF2F8077290B5FC1CFCA285A21CF8A2851CF0 -7314E0A27314C0731480731400735B9638007FF8F21FE0576A79D265>II<91260FFF80130791B500F85B010702FF5B -011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E484881 -49150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13 -F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F -821303010082021F16801400030F15C0ED007F040714E01600173F050F13F08383A20078 -8200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B -5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC4801 -0F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C716 -07D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0 -481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>IIII< -003FB7D88003B7FCA5D8000749C8000701F8C7FC6D6D9238007F806D6E93C8FC7015FE6D -17016E6D5D704A5A6E16076E6D4A5A6E6D5D4F5A6E6D143F6E6D4A5A7191C9FC6E16FE6E -ECC00171485A6F5D6F6D485A6FEBF80F71485A6F5D6F6D485AEFFF7F6F4ACAFC6F5C6F5C -A2705B705B8482707F707FA2707F7080855E4C80855E4C80DC3FCF7F058F7FEE7F074C6C -7FDB01FE814C7E4B486C8003076E7F4B48814C7F4B486D7F033F824C7F4BC76C7F4B6E7F -4A5A4B6E804A486E800207844A48814B6F7F4A4883023F824A486F7F92C96C7F02FE8401 -01830103718090263FFFC084B76C0103B712F8A55D527CD166>II97 -DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001 -FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48 -92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC -3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC -020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91 -B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980 -485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C -6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9 -003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901 -817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191 -C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01 -F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE -903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>IIII<137F497E -000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3 -A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E0 -02001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E -486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C0001 -148026001FFCC7FC256C87D329>IIIII<913801FFE0021F13FE91B612C0010315F0010F9038 -807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8 -6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2 -6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80 -7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F -13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F -92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61 -6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14 -80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<912601FFE0EB0780021F -01F8130F91B500FE131F0103ECFF80010F9039F03FC03F499039800FE07F903A7FFE0003 -F04948903801F8FF4849EB00FD4849147F4A805A4849805A4A805AA291C87E5AA35B12FF -AC6C7EA37EA2806C5EA26C6D5CA26C6D5C6C6D5C6C93B5FC6C6D5B6D6C5B6DB4EB0FEF01 -0F9038C07FCF6D90B5120F010114FED9003F13F80203138091C8FCB1040FB61280A5414D -7CB547>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC00 -03D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA5 -5CB3AAB612FCA52F367CB537>I<903903FFF00F013FEBFE1F90B7FC120348EB003FD80F -F81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C -13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC00 -3F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F80 -01F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C -387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6 -FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0 -FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>II< -B600F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC -6D5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E17 -7E023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F -5AA36F5AA26F5AA26F5AA26F5A6F5A40367DB447>II<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D -5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB -8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01 -FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F49 -5A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>II<001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D -49495B495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C -4A5B93C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F4949140092C7FC495A485E -485B5C485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31357CB43C>II127 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FF cmmi8 8 38 -/FF 38 123 df11 D<157E913801FFC091380781E091381E00F01438 -4A13F84A1378495A494813F891C7FC5B1306010E1301010C14F0131C0118EB03E0ED07C0 -013814809039301FEF00EC3FFE13709038601FEF9138000F80ED07C013E04914E0A31201 -5BA30003140F90C713C0A348EC1F80A2ED3F00A2486C137E000D147C6D5B390CE001F039 -1C7003E039183C0F80D91FFEC7FCEB03F80038C9FC1230A312701260A312E05AA3253C7E -AE28>I<13E0486C133C15FF00031303EC0F7F9038E01C7EEC381C000749C7FC5CEBC3C0 -01C7C8FCEA0FDE13F8EBFF8014F8381F83FEEB803F496C7E140F48154016C0123EA2007E -14811680007C1403ED830000FC1487EC078E48EB03FC0070EB00F0221F7D9D29>20 -D<13FC13FFEB1FC0130F6D7EA36D7EA2130180A26D7EA3147EA280A36E7EA2140F81A24A -7E143F147FECF3F0EB01E3EB03C190380781F8130F49C67E133E5B49137E485A48487F12 -07485A4848EB1F8048C7FC127E48EC0FC048EC07E000701403232F7DAD29>I<131C013E -EB0380ED07C0017E130F1680137CA201FC131F16005BA200015C153E5BA20003147E157C -5BA20007ECFC08EDF8185BA2000F0101133816309038E003F002071370001F90380EF860 -9039F83C78E090397FF03FC090391FC00F0048C9FCA2123EA2127EA2127CA212FCA25AA2 -1270252C7E9D2A>II<14C0A5ECFFE04913F813079038 -1F9FE0017FC7FC13FE5B485A12035B1207A25BA312037FA23801FBFE38007FFFA2EBF7FE -D803C0C7FC485A48C8FC121EA25A127C1278A212F85A7EA37EB4FCEA7FC0EA3FF8EA1FFE -380FFFC0000313F038007FFCEB1FFEEB03FF1300141F80A3EB701EEB3C1CEB1FF8EB03E0 -1D3C7EAD1F>I<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A -5A126009157A8714>59 D<15C0140114031580A214071500A25C140EA2141E141CA2143C -143814781470A214F05CA213015CA213035C130791C7FCA25B130EA2131E131CA2133C13 -38A21378137013F05BA212015BA212035BA2120790C8FC5A120EA2121E121CA2123C1238 -A212781270A212F05AA21A437CB123>61 D<147F903801FFE090380780F890380E003C49 -7F497F49148001781307017C14C001FC130316E0A2137090C7FC16F0A314FE903807FF83 -90381F01C390397C00E7E049137748481337D807E0133F49131F484814C0121F48C7FCA2 -481580127EA2ED3F0012FE48147EA2157C15FC5D4A5A007C495AA26C495A001E49C7FC6C -133E3807C0F83803FFE038007F8024307DAE25>64 D<1670A216F01501A24B7EA2150715 -0DA2151915391531ED61FC156015C0EC0180A2EC03005C14064A7F167E5C5CA25C14E05C -4948137F91B6FC5B0106C7123FA25B131C1318491580161F5B5B120112031207000FED3F -C0D8FFF8903807FFFEA22F2F7DAE35>I<013FB6FC17C0903A00FE0007F0EE01F84AEB00 -FC177E1301177F5CA21303177E4A14FEA20107EC01FC17F84AEB03F0EE07E0010FEC1FC0 -EE7F009138C003FC91B55A4914FE9139C0003F804AEB0FC017E0013F140717F091C7FC16 -035BA2017E1407A201FE15E0160F4915C0161F0001ED3F80EE7F004914FEED03F80003EC -0FF0B712C003FCC7FC302D7CAC35>I<000FB8FCA23B1FC003F8003F0100151F001C4A13 -0E123C003801071406123000704A130EA20060010F140C12E0485CA2141FC715005DA214 -3FA292C8FCA25CA2147EA214FEA25CA21301A25CA21303A25CA21307A25C130F131F001F -B512F0A2302D7FAC29>84 D97 D<13F8121FA21201A25BA21203A25BA21207A25BA2120FEBC7E0EB9FF8EBB8 -3C381FF01EEBE01F13C09038800F80EA3F00A2123EA2007E131FA2127CA2143F00FC1400 -5AA2147EA2147C14FC5C387801F01303495A383C0F806C48C7FCEA0FFCEA03F0192F7DAD -1E>II<151FEC03FFA2EC003FA2153EA2157EA2157C -A215FCA215F8A21401EB07E190381FF9F0EB7C1DEBF80FEA01F03903E007E0EA07C0120F -EA1F8015C0EA3F00140F5A007E1480A2141F12FE481400A2EC3F021506143E5AEC7E0E00 -7CEBFE0C14FC0101131C393E07BE18391F0E1E38390FFC0FF03903F003C0202F7DAD24> -II<157C4AB4FC9138 -07C380EC0F87150FEC1F1FA391383E0E0092C7FCA3147E147CA414FC90383FFFF8A2D900 -F8C7FCA313015CA413035CA413075CA5130F5CA4131F91C8FCA4133EA3EA383C12FC5BA2 -5B12F0EAE1E0EA7FC0001FC9FC213D7CAE22>I<14FCEB03FF90380F839C90381F01BC01 -3E13FCEB7C005B1201485A15F8485A1401120F01C013F0A21403121F018013E0A21407A2 -15C0A2000F130F141F0007EB3F80EBC07F3803E1FF3800FF9F90383E1F0013005CA2143E -A2147E0038137C00FC13FC5C495A38F807E038F00F80D87FFEC7FCEA1FF81E2C7E9D22> -I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201143F9038F1FFC09038 -F3C1F03803FF0001FC7F5BA2485A5BA25B000F13015D1380A2001F13035D1300140748EC -C04016C0003E130F1580007E148191381F0180007C1403ED070000FCEB0F06151E48EB07 -F80070EB01E0222F7DAD29>I<1307EB0F80EB1FC0A2EB0F80EB070090C7FCA9EA01E0EA -07F8EA0E3CEA1C3E123812301270EA607EEAE07C12C013FC485A120012015B12035BA212 -07EBC04014C0120F13801381381F01801303EB0700EA0F06131EEA07F8EA01F0122E7EAC -18>I<15E0EC01F01403A3EC01C091C7FCA9147CEB03FE9038078F80EB0E07131C013813 -C01330EB700F0160138013E013C0EB801F13001500A25CA2143EA2147EA2147CA214FCA2 -5CA21301A25CA21303A25CA2130700385BEAFC0F5C49C7FCEAF83EEAF0F8EA7FF0EA1F80 -1C3B81AC1D>I<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA2120115F890 -38F003FCEC0F0E0003EB1C1EEC387EEBE07014E03807E1C09038E3803849C7FC13CEEA0F -DC13F8A2EBFF80381F9FE0EB83F0EB01F81300481404150C123EA2007E141C1518007CEB -F038ECF83000FC1470EC78E048EB3FC00070EB0F801F2F7DAD25>I<137CEA0FFCA21200 -A213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380A2121FA21300A25AA2 -123EA2127EA2127CA2EAFC08131812F8A21338133012F01370EAF860EA78E0EA3FC0EA0F -000E2F7DAD15>I<27078007F0137E3C1FE01FFC03FF803C18F0781F0783E03B3878E00F -1E01263079C001B87F26707F8013B00060010013F001FE14E000E015C0485A4914800081 -021F130300015F491400A200034A13076049133E170F0007027EEC8080188149017C131F -1801000F02FCEB3F03053E130049495C180E001F0101EC1E0C183C010049EB0FF0000E6D -48EB03E0391F7E9D3E>I<3907C007E0391FE03FF83918F8783E393879E01E39307B801F -38707F00126013FEEAE0FC12C05B00815C0001143E5BA20003147E157C5B15FC0007ECF8 -081618EBC00115F0000F1538913803E0300180147016E0001F010113C015E390C7EAFF00 -000E143E251F7E9D2B>I<90387C01F89038FE07FE3901CF8E0F3A03879C0780D907B813 -C0000713F000069038E003E0EB0FC0000E1380120CA2D8081F130712001400A249130F16 -C0133EA2017EEB1F80A2017C14005D01FC133E5D15FC6D485A3901FF03E09038FB87C0D9 -F1FFC7FCEBF0FC000390C8FCA25BA21207A25BA2120FA2EAFFFCA2232B829D24>112 -D<903807E03090381FF87090387C1CF0EBF80D3801F00F3903E007E0EA07C0000F130338 -1F800715C0EA3F00A248130F007E1480A300FE131F481400A35C143E5A147E007C13FE5C -1301EA3E07EA1F0E380FFCF8EA03F0C7FC13015CA313035CA21307A2EBFFFEA21C2B7D9D -20>I<3807C01F390FF07FC0391CF8E0E0383879C138307B8738707F07EA607E13FC00E0 -EB03804848C7FCA2128112015BA21203A25BA21207A25BA2120FA25BA2121FA290C8FC12 -0E1B1F7E9D20>II<130E131FA2 -5BA2133EA2137EA2137CA213FCA2B512F8A23801F800A25BA21203A25BA21207A25BA212 -0FA25BA2001F1310143013001470146014E0381E01C0EB0380381F0700EA0F0EEA07FCEA -01F0152B7EA919>IIII<01 -3F137C9038FFC1FF3A01C1E383803A0380F703C0390700F60F000E13FE4813FC12180038 -EC0700003049C7FCA2EA200100005BA313035CA301075B5D14C000385CD87C0F130600FC -140E011F130C011B131C39F03BE038D8707113F0393FE0FFC0260F803FC7FC221F7E9D28 ->II<011E -1330EB3F809038FFC07048EBE0E0ECF1C03803C0FF9038803F80903800070048130EC75A -5C5C5C495A495A49C7FC131E13385B491340484813C0485A38070001000EEB0380380FE0 -07391FF81F0038387FFF486C5A38601FFC38E00FF038C003C01C1F7D9D21>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FG cmss10 10.95 6 -/FG 6 118 df82 -D101 D<38FC01FF010713C0011F13F0017F13F890B512FC12FD39FFF80F -FEEBE003EBC00190388000FFA290C7127FA35AB3A9202979A82F>110 -D<00FC137CEB03FC130F131F133F137FEBFFC038FDFE00EAFFF85B5B5BA25BA290C7FCA2 -5AB3A6162979A81F>114 D116 D<00FE147FB3AC15FFA25C6C5B -6C130FEBC03F90B6FC6CEBFE7F6C13FC6C13E0000390C7FC202979A72F>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FH cmtt10 10 93 -/FH 93 127 df<121C127FEAFF80B1EA7F00AF123EC7FCA8121C127FA2EAFF80A3EA7F00 -A2121C09346FB32C>33 D<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3 -003C131E001C131C191977B32C>I<010F133C90381F807EA8013F13FE4A5AA4007FB612 -F0B712F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8A46C15F03A -01F807E000A30003130F01F05BA86C486C5A25337DB22C>IIIII<143814FC13011303EB07F8EB0F -F0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA3 -12FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1F -C0EB0FF0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E6C7EEA0FE0 -6C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC13 -00AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A48 -5A485AEA3FC0485A48C7FC5A5A1270164279B92C>II<147814FCAF007FB612F0B712F8A46C15F0C700FCC7FC -AF147825267DAB2C>II<007FB6FCB712 -80A46C150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B70 -8A2C>I<1507ED0F80151FA2153F16005D157E15FE5D14015D14035DA214075D140F5D14 -1F5D143F92C7FC5C147E14FE5CA213015C13035C13075C130F5C131F5CA2133F91C8FC5B -137E13FE5B12015B12035B12075BA2120F5B121F5B123F90C9FC5A127E12FE5AA25A1278 -21417BB92C>II<1307497EA2131FA2 -133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E0 -1C3477B32C>IIII<000FB512 -FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01 -C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F00 -7EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0F -F823347CB22C>II<1278B712 -C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A5A4A5A5D140F5D4A5A143F92 -C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495AA5133F91C8FCAA131E23357C -B32C>III<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80 -EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>II<1507ED1F80153F15FF14034A1300EC1FFC4A5AECFFE0491380010790C7FCEB0FFCEB -3FF8EB7FE048485A4890C8FCEA0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFE -EA03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E138014 -00153F151FED0700212A7BAD2C>I<007FB612F0B712F8A4003F15F0CAFCA8003FB612F0 -B712F8A46C15F025147DA22C>I<127012FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C67F -EB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C7EEC3FF8EC0FFC6EB4FC0201138080A25C0207 -1300EC0FFCEC3FF8EC7FE049485A4990C7FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80FFE -C8FC485AEA7FF0485A138048C9FC5A1270212A7BAD2C>III<14FE497EA4497FA2 -14EFA2130781A214C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA54913 -7E90B512FEA34880A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5A -B514FE6C15FC497E27347EB32C>I<007FB512E015F8B612FE6C8016C03903F0003FED0F -E0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C0 -9039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3F -F0007FB612E016C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9 -013F13FD4913FFEBFF813901FE007F4848131FD807F0130F1507485A491303485A150148 -C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C1303 -6D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13 -F00100138025357DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F8015 -3FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0 -150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I< -007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A4 -6E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712 -FCA37ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFF -E0B5FC805C7E26337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC48 -13073803FC01497E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092 -C7FCA212FE5AA8913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D -133F120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901 -FCC7FC26357DB32C>II<007FB512F8B6 -12FCA36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<0107B5 -12804914C0A36D148090390003F000B3AF1218127EA2B4FCA24A5A48130F007F131F9038 -C07FC06CB55A6C91C7FC6C5B000313F838007FC022347BB22C>II<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01 -F8A8007FB6FCB7FCA36C15F025337DB22C>IIII<007FB512C0B612F881 -15FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0F -E0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C ->II<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7E -A64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8 -160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>I<90381F -F80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F -5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F0 -6C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56C -EC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D870 -0790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF -90383FFFFCA2497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C0 -3B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF -6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>III<3A3FFF03FFE0484913F0148714076C6D13E03A01F800 -FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7 -FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01 -017E7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15 -FC497E27337EB22C>II<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A -003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA249 -5A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C -15C023337CB22C>I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17 -416FB92C>I<127812F87EA27E127E127F7E7F121F7F120F7F1207A27F12037F12017F12 -007F137E137F7F80131FA280130F801307801303801301801300A280147E147F8081141F -81140F811407811403A281140181140081157E157F811680151FA2150FED070021417BB9 -2C>I<387FFFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>I<130E -EB3F80EBFFE0000313F8000F13FE487FD87FF113C0D8FFE013E0EB803F38FE000F007CEB -07C00030EB01801B0C78B22C>I<007FB6FCB71280A46C150021067B7D2C>I<3801FFF000 -0713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE -131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB800338 -3FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 -DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848 -131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE -03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIIIII<1307 -EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512 -FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA7 -48B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C -5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA37EEA0003B3B3A5007FB612 -80B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF -13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7F -FC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01F -E039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA2 -5BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>II<397FF01FE039FF -F8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED -01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138 -E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA3 -2C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF0014848 -7E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F6D13 -FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A1480 -A36E140029367DA32C>II<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0 -007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE00 -78147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F81480 -39701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03 -C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7E -AD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE -03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE14 -8314016C15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2 -017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D -90C7FCA26D5A147C27247EA32C>II< -3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC -87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF809038 -07CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC -1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113 -FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D -5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143E -A2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C -5A6C5AEA07E027367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF -004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49 -C8FC4848EB01E04848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15 -FF02071380141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A -49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F14070200 -130021417BB92C>I<127812FCB3B3B3A9127806416DB92C>II<01F8 -1370D803FE13F8380FFF0148138748EBCFF0397F9FFFE0D8FF0F13C0D8FC07138039F803 -FE00387000F81D0A79B22C>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FI cmbx12 20.74 25 -/FI 25 121 df48 DI<9238 -0FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FF -FC0001814801E06D6C80480180021F804890C86C8048486F8048486F8001FF6F804801C0 -6E8002F081486D18806E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B0003 -13C0C690C9FC90CA15E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91 -C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C -5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A -48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B -90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F061>I<923801FFFE033FEBFFF84AB7 -FC020F16E0023F16F84A16FE49B97E49DA003F80010F01F0010714F04901800101804948 -C880D97FF86F7F02E081496C834801FC6F148014FF486E6E14C08181481AE081A96C5C1B -C06C4A5C6C5C6D90C815806D5AD90FF85D90CA150062606295B55A4D5C624D5C4D5C4D91 -C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B612F818C018F8F0FF806F15F092 -C7003F13FC050713FF050114C071807213F8727F727F867214801BC07214E01BF0A27214 -F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC487FA2487FA2B67EA31BFEA360 -1BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C04B14C06C90C915804E14006C6D -4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01FE013F14C0010F90B85A6D4DC7 -FC010117F8D9003F16E0020F93C8FC020015F0030749C9FC507378F061>II<0170187001FEEF01F86D6C160F02F8167FDAFF80 -EC07FF03FE49B5FC92B85A6262A26297C7FC61616119E061614EC8FC18F86018C095C9FC -17F817C0020701F8CAFC91CDFCB0923801FFFC031FEBFFE092B612FC020315FF020F16C0 -4A16F0027FD9003F7FDAFFF0010F13FE038001037F4AC76C8002F86E804A6F7F4A6F7F4A -834A6F7F91C980137E017C707F90CAFC1B80A21BC0A2841BE0A51BF0A313FE3803FF8000 -0F7F4813F0487F5A80B5FCA41BE0A44E14C05C7E4A18805C4A5D6C90C9150001E0606C6C -5E6D606C6C4C5B7F000794B55A6C6C6C4A5C6C6D4A5C6E4A5C26007FF8021F49C7FC6DB4 -027F5B6DD9F007B55A6D90B712E0010317806D4CC8FC6D6C15F8021F15C002034AC9FCDA -003F13804C7376F061>I<94381FFF800403B512F8043F14FE4BB77E030782031F16F003 -7F8292B5D8FC017F02039139C0001FFE4A49C7EA07FF021F01F8804A496E13804A01C014 -0F91B548023F13C04991C85A494992B5FC49494A14E0495B495E5D5B495BA290B55A5A5D -487114C0A24891C91480731300735A48F00FF896C8FC485BA45AA44849903807FFE0041F -13FE047FEBFFC04BB612F84B81030F15FFB590261FF8038092273FC0007F13E04C011F7F -037EC76C7F4B6E7F02FD6F7F4B6E7FDAFFF017804B6E14C01BE05D7313F05D1BF8A292C9 -14FC85A24A18FEA41BFFA26C5BA87EA4807EA21BFE7EA37E1BFC6E5E6C1AF8A27E6F17F0 -6C95B512E06D7F1BC06D6D4A14806D4C1400816D6D4A5B6D6D4A5B6D01FF4A13F001006E -017F5B6ED9F007B55A6E90B7C7FC020F5E020316F86E16E0DA003F1580030702FCC8FCDB -007F1380507378F061>II<93B57E031F14FC92B77E020316F0020F16FC023F16FF4A8349B5D88003 -14E04901F8C7003F7F4901C0020F7F4990C800037FD91FFC6F7F49486F6C7E137F4A7013 -804948827313C05A4A821BE05AA285487FA38080806E5E8003C017C08103F85D03FE1780 -6F6C5C6C6F160004F05C04FC4A5A6C6F5D706C13FFDDE0015B6CDCF8035BDDFC0F13C06D -DBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17806D17E06D836D6C16FC6E16FF020F836E17 -E06E83020F83023F8391B97E4984010701F0178049D9C07F16C0013FD9801F16E049EB00 -074948010116F048497F4849023F15F84849140F4A6E15FC48160148496E6C14FE4A151F -488391C9120348050014FF193F49838500FF84854983A28586A3861BFEA27FA2007F1AFC -7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D4C13C06C6D5E6E4C13806C6D4C13006C6D6C -ED7FFE6C02E04A485A013F01FC020F13F06D9026FFC001B55A010791B712806D95C7FC01 -0017FC021F16F002071680DA007F02FCC8FC030191C9FC507378F061>I<93B5FC031F14 -F092B612FE02076F7E021F16E04A16F891B87E49DAF00713FF0107DA0001804901FC6D6C -7F49496E7F49496E7F49496E7F90B5486E7F484A8048854891C86C7FA2487114805C481A -C0A2487213E0A2484918F0A31BF8A2B5FCA27313FCA51BFEA71BFF61A27EA46C95B6FCA2 -806C5FA27E606C7F607E6C6E5C6CEF1FBF6D6DEC3F3F6D7F6D6D14FE6D6DEB01FC6D01FE -130701019039FFC01FF86D91B500F014FE023F15C06E15800203ECFE00DA007F13F80307 -13C092C9FC4F13FCA41BF8A31BF0D91FF093B5FCEB7FFC496C18E0487F486E17C0604880 -1B804E1400A26260624E5B4B5C626C91C8485B4A4B5B4A92B55A6C01F04A91C7FC02804A -5B6C01E0020F5B6D6C023F13F002FE91B55A90273FFFE00F5C6D90B7C8FC010716FC6D16 -F0010016C0023F92C9FC020714F09126007FFECAFC507378F061>I65 D<96267FFFE01670063FB6ED01F80503 -B700F01403053F04FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC -00076D13FF030F03C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F -6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C -854988494A85494A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F -0FA2485CA3481E075DA2F703F0489BC7FCA45DA2B6FCB27EA281A47EA2F703F06FF307F8 -7EA36C80A21F0F7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF57FC06D80F7FF806D806D6E -4F13006D6E616D525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F6EF0FFE06E6E4D5B6E02F8 -4D5B6E02FE050F90C7FC02006E6CEE3FFE6F02F0EEFFFC031F02FE03035B6FDAFFC0021F -13E0030303FF0103B55A030093B7C8FC043F18FC040718F0040118C0DC003F94C9FC0503 -16F8DD003F1580DE007F01F0CAFC757A75F78C>67 D73 D80 D86 D<92383FFFF80207B612E0027F15FC49B87E010717E0011F834990 -26F0007F13FC4948C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA2 -8684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8 -FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512 -F04814C0485C4891C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D -846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FF -C06C91B6487E013F4B487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8 -CBFC57507ACE5E>97 D<97380FFFE00607B6FCA8F00003190086B3AD93383FFF800307B5 -12F8033F14FF4AB712C0020716F0021F16FC027F9039FE007FFE91B500F0EB0FFF010302 -80010190B5FC4949C87E49498149498149498149498190B548814884484A8192CAFC5AA2 -485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37EA2807EA26C7F616C6E5D6C606C80616D6D -5D6D6D5D6D6D92B67E6D6D4A15FC010301FF0207EDFFFE6D02C0EB3FFE6D6C9039FC01FF -F86E90B65A020F16C002031600DA007F14FC030F14E09226007FFEC749C7FC5F797AF76C ->100 D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F807 -7F49B5D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90 -B55A48727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FC -A391BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C19 -1F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0 -EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F -15E0030392C8FCDB000F13E04D507BCE58>I<903801FFFCB6FCA8C67E131F7FB3AD9538 -0FFFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC -6D80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA2 -93C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 DI<902601FFF8 -91380FFFE0B692B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077F -DC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC047E6F7F5EEDF9F85E03FB -707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8614E79CD6C>110 -D<902601FFFCEC7FFEB6020FB512F0057F14FE4CB712C0040716F0041F82047F16FE93B5 -C66C7F92B500F0010F14C0C66C0380010380011F4AC76C806D4A6E8004F06F7F4C6F7F4C -6F7F4C8193C915804B7014C0861DE0A27414F0A27414F8A47513FCA57513FEAF5113FCA5 -98B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B704B5B7092B55A04FC4A -5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712F0040F16C0040393C8 -FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7ACD6C>112 -D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F13809326 -3FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015FF16C0 -7114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A8434E7A -CD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC12 -0FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B1300 -6E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC -4B>116 D<007FB7023FB612F0A8D8000302C0020191C7FC6D6E9138007FF0705E6D4E5A -6E6D4A5B6E6D4A90C8FC6E6D5C704A5A6E4C5A6E6E5C6E6E495A6E6E495A7113FF6E6E48 -5B6F4A5B6F6D4890C9FC6F01FE5B71485A6FEC9FF86F14BF6FECFFF06F5D616F5D7091CA -FC705B828470808270807080854C805E4C80854C804C81EE7FE7DCFFE3804B01C1804B01 -80804D804B487F4B486D7F031F6E7F4B486D7F4B48824B487F4C6D804A496D804A90C880 -4A844A48814A486F7F4A486F7F4B6F7F4A48844A486F80010F01F881B76C91B712FEA85F -4D7DCC66>120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FJ cmtt10 10.95 95 -/FJ 95 127 df19 D<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127F -A2EAFF80A3EA7F00A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137F -A248133FB2007E1400007C7F003C131E00101304191C75B830>I<903907C007C0A2496C -487EA8011F131FA202C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090 -C7FCA9495BA2003F90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201 -F85BA76C486C5AA229387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC488000 -0780481580261FFEFD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F8 -00FE14035A1507A36CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0 -000114F86C6C7F011F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC -03F8127E1501B4FCA35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFE -B512806CB612006C5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30 ->IIII<14 -1E147F14FF5BEB03FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A12 -0F5BA2485AA2123F5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F1207 -6C7E7F12017F6C7EEB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E1847 -71BE30>I<127812FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB -0FE014F01307A2EB03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8 -A2EB07F0A2130F14E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A -90C7FC5A1278184778BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE0 -01C3137F9038F3F9FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F -90C7FC017F13C048B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038 -C3F87F0183133FD87E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<14 -3EA2147FAF007FB7FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A2 -25077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I< -16F01501ED03F8A21507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D14 -03A24A5AA24A5AA24A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495A -A2495AA2495AA249C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FC -A25AA2127CA225477BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF48 -48C6138049137F4848EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C7 -12014815FCA400FEEC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D -130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B01 -0F13E06D5BD900FEC7FC273A7CB830>IIIII<000FB612804815C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE -0313809039F0007FC049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218 -127EA2B4FC150716F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13 -006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC25397BB730>II<127CB712FC16 -FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D14 -0F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6D -C8FC273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E0 -3A1FF8003FF049131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D1307 -6C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F049 -7F90B512FE48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15 -FC90C712014815FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D13 -3F3A0FFF01FFE06C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830> -I<49B4FC010F13E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE0 -4848131F49EB0FF048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D130315076C -7E6C6C130F6D133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060 -011400ED03F8A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07 -FE391FF01FFC90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA -7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0 -A2EA3FC0EA0F000C276EA630>II<16F01503ED07F815 -1F157FEDFFF014034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC -495A3801FFF0485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F0003 -13E06C7F38007FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E -13F01400ED7FF8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C -5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA -7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E -7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE -004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7F -FE13F8EAFFE05B90C9FC127E1278252F7BB230>III<147F4A7EA2497FA4497F14F7A401 -077F14E3A3010F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FC -A34881A39038FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C -496C130029397DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E15 -01A26F7EA615015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000F -F8ED03FC6F7E1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16 -C05E6C02FCC7FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFF -FE5B9038FFE07F48EB801F3903FE000F484813075B48481303A2484813015B123F491300 -A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C -6CEB03F86D13076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713 -FC6D13F09038007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F800 -7FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3 -163F1780A2167F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14 -FC6C14E02B387FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C -15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B38 -7EB730>I<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157F -A490B6FCA69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I< -02FF13F00103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F484813 -1F49130F485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14 -805CA26C7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE -133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830 ->I<3B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE -00B290B6FCA601F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C -496C13E02D387FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB7 -1280A46C1500213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C12 -7EB4FCA24A5A1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF02539 -7AB730>II<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9 -003FB7FC5AB8FCA27E6C16802A387EB730>III<90383FFFE048B512FC000714FF4815 -804815C04815E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C14 -07A26C15F0A36D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C15000001 -14FCD8003F13E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0F -FCED03FE15016F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E -16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383FFFE048B512 -FC000714FF4815804815C04815E0EBF80001E0133F4848EB1FF049130F90C71207A44815 -F8481403B3A8147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE0 -14E0EBF80F90B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA21680157F16 -C0153F16E0151F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC15FF6C816C -812603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB4 -5A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF80 -03FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>I<9039 -0FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7 -123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E000 -0114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A200 -7C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD -5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE00 -3F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFF -C007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE -6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFC -EC1FF02F3980B730>II -I<3A3FFF01FFF84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D -5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4 -497FA2497FA2815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F498000 -03141F49800007140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>II<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E -1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F49 -5A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FC -A46C15FC27387CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A46C1400 -19476DBE30>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017F -A26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E -7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07 -F8A21503A2ED01F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5 -FCB6FCA46C140019477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14 -E0D87FFD13F039FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730 ->I<007FB612F0A2B712F8A36C15F0A225077B7D30>I<1338137CEA01FE12031207EA0FFC -13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1FE0 -EA07C00F1D70BE30>IIII<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF87 -4913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25A -A25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712 -E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713 -E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F -484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB -03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00 -010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E0 -91C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C02339 -7AB830>III<387FFFF8B57EA47EEA -0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8 -FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC -01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C0107138032 -2881A730>II<49B4FC010F13E0013F13F8497F90B5 -7E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F -15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB -1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E00101 -90C7FC272A7CA830>II<49 -B413F8010FEBC1FC013F13F14913FD48B6FC5A481381390FFC007F49131F4848130F4913 -07485A491303127F90C7FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C6C133F -01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190C7FCAD -92B512F84A14FCA46E14F82E3C7DA730>II<90381FFC1E48B5129F000714 -FF5A5A5A387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEB -FF806C14E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F -7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFE -C7FC222A79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C -16C06C496C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2 -EC803F011F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314 -FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C49 -6C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00 -FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C -90390F800F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66C -C7FC137FEC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E -147F5C497F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F00 -7E017E137F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C018014002927 -7DA630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000 -A2000014076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137E -A2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8 -FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5A -EA01F02B3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0 -EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A49 -5A495A4948133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630 ->II<127CA212FEB3B3B3AD127CA207476C -BE30>II<017C133848B4137C48EB80FE4813C14813C3 -48EBEFFC397FEFFFF0D8FF8713E0010713C0486C1380D87C0113003838007C1F0C78B730 ->I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FK cmbxsl10 10.95 1 -/FK 1 114 df113 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FL cmmi10 10.95 74 -/FL 74 127 df11 DII15 DI<15FCEC03FF91380F87C091383E03E0EC7C0102F813F01301903903F000F8495A01 -0F14FC5C495A133F91C7FC4914FE13FEA212015B12034913011207A25B000F15FC150312 -1F5BA21507003F15F890B6FCA33A7FC0000FF05BA2151F16E048C7FCA2ED3FC0A2481580 -157F1600A215FEA24A5AA24A5A007E5C14075D4A5A003E5C141F4AC7FC6C137E5C380F81 -F03807C3E03801FF80D8007EC8FC27417DBF2B>18 D<133F14E0EB07F0EB03FC13016D7E -A3147FA26E7EA36E7EA36E7EA36E7EA36E7EA26E7EA36E7EA3157FA36F7E157F15FF4A7F -5C913807CFE0EC0F8FEC1F0F91383E07F0147C14FC49486C7EEB03F0EB07E049486C7EEB -1F80EB3F00496D7E13FE4848147F485A485A4848EC3F80485A123F4848EC1FC048C8FC48 -16E048150F48ED07F0007015032C407BBE35>21 D24 -D<011FB612FE017F15FF48B8FC5A4816FE3B0FC03801C000EA1F00003E1403003C01785B -4813705AECF0075AC712E0010191C7FCA25DEB03C0A313071480A2010F5BA2EB1F0082A2 -133EA2137E825B150F0001815B120315075BC648EB038030287DA634>II<020FB512FE027F14FF49B7FC1307011F15FE903A3FE03FE00090387F000F01FE6D7E -4848130348488048481301485A5B121F5B123F90C7FC5A127EA2150300FE5D5AA24B5AA2 -150F5E4B5AA2007C4AC7FC157E157C6C5C001E495A001FEB07E0390F800F802603E07EC8 -FC3800FFF8EB3FC030287DA634>I<011FB612C090B7FC5A5A481680260FC007C8FC48C6 -5A123E003C130E48131E5A5AA2C75AA3147CA2147814F8A4495AA31303A25CA21307A349 -5AA3131FA25C6DC9FC2A287DA628>I<1678A21670A216F0A25EA21501A25EA21503A25E -A21507A293C7FCA25DA2150EEDFFC0020F13FC91383F9E3F903A01F81C0FC0D903E0EB03 -E0903A0FC03C01F0D91F00EB00F8017E0138137C5B48480178133E485A48480170133F12 -0F4901F0131F485A5D48C7FC0201143F5A007E5CA20203147F00FE167E485C17FE020714 -FC1601007C020013F8EE03F0007E49EB07E0A2003E010EEB0FC0003FED1F806C011EEB3F -00D80F80147C3A07C01C01F8D803E0EB03E03A01F03C1F80D8007E01FEC7FC90381FFFF8 -01011380D90078C8FCA21470A214F0A25CA21301A25CA21303A25CA21307A230527CBE36 ->30 D32 D<18E00130ED03F80170 -ED07FC13F0485A5B12034915030007160148CAFC187C120E121E001C173C003C021C1438 -0038147EA20078177803FE147000705CA218F04A4814E000F01601A24BEB03C0A24BEB07 -800203140F6C0107EC1F00173E6CD91FF0137E007C013F5C007E90397FF803F83B7F83FF -FE1FF0263FFFFCB5FC4A14C06C496C5B6C01C091C7FC6C9038001FFCD801FCEB07E03629 -7FA739>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>58 -D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A -120E5A1218123812300B1C798919>I<180E183F18FFEF03FEEF0FF8EF3FE0EFFF809338 -03FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED1FF8ED7FE0913801FF80DA07FEC8FCEC1FF0 -EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFCA2EA7FC0 -EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FE913801 -FF809138007FE0ED1FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FE0EF -0FF8EF03FEEF00FF183F180E383679B147>II<127012FCB4FCEA7FC0EA1FF0EA07 -FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF8EC07FE913801FF80913800 -7FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FE0EF0FF8EF03FE -EF00FFA2EF03FEEF0FF8EF3FE0EFFF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED -0FF8ED7FE0913801FF80DA07FEC8FCEC1FF8EC7FC04948C9FCEB07FCEB1FF0EB7FC04848 -CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270383679B147>I<15FF020713E091381F00F8 -0278133E4A7F4948EB0F804948EB07C04948EB03E091C7FC496CEB01F002E014F8131F16 -0017FCA25C0107C812FE90C9FCA7EC03FCEC3FFF9138FE03C1903903F000E149481371D9 -1F80133149C7123B017EEC1BFC5B0001151F4848140F484815F8A2485A121F17F0485A16 -1F17E0127F5BEE3FC0A200FF168090C8127F1700A216FEA2484A5A5E007E1403007F4A5A -5E6C4A5A6C6C495A4BC7FC6C6C13FE6C6C485A3903F80FF06CB512C06C6C90C8FCEB0FF8 -2F437CC030>64 D<17075F84171FA2173F177FA217FFA25E5EA24C6C7EA2EE0E3F161E16 -1C1638A21670A216E0ED01C084ED0380171FED07005D150E5DA25D157815705D844A5A17 -0F4A5A4AC7FC92B6FC5CA2021CC7120F143C14384A81A24A140713015C495AA249C8FC5B -130E131E4982137C13FED807FFED1FFEB500F00107B512FCA219F83E417DC044>I<49B7 -12F818FF19E090260001FEC7EA3FF0F007F84B6E7E727E850203815D1A80A20207167F4B -15FFA3020F17004B5C611803021F5E4B4A5A180FF01FE0023F4B5A4B4A5ADD01FEC7FCEF -07F8027FEC7FE092B6C8FC18E092C7EA07F84AEC01FE4A6E7E727E727E13014A82181FA2 -13034A82A301075F4A153FA261010F167F4A5E18FF4D90C7FC011F5E4A14034D5A013FED -1FF04D5A4AECFFC0017F020790C8FCB812FC17F094C9FC413E7DBD45>II<49B712F818FF19C0D9000190C7EA3FF0F00FF8 -4BEC03FCF000FE197F0203EE3F805DF11FC0A20207EE0FE05D1AF0A2020F16075DA21AF8 -141F5DA2190F143F5DA21AF0147F4B151FA302FF17E092C9123FA21AC049177F5C1A8019 -FF010318005C4E5A61010716034A5E4E5A180F010F4C5A4A5E4E5A4EC7FC011F16FE4A4A -5AEF07F8013FED0FE0EF3FC04A49B4C8FC017FEC0FFCB812F017C004FCC9FC453E7DBD4B ->I<49B912C0A3D9000190C71201F0003F4B151F190F1A80020316075DA314075D1A00A2 -140F4BEB0380A205075B021FED000E4B92C7FC5FA2023F141E5D173EEE01FE4AB55AA3ED -800102FF6D5A92C71278A34915705C191C05F0133C01034B13384A167894C71270A20107 -17F04A5E180161010F16034A4B5AA2180F011F4CC7FC4A5D187E013F16FE4D5A4A140F01 -7F15FFB95AA260423E7DBD43>I<49B9FCA3D9000190C7120718004B157F193F191E1403 -5DA314075D191CA2140F5D17074D133C021F020E13384B1500A2171E023F141C4B133C17 -7C17FC027FEB03F892B5FCA39139FF8003F0ED00011600A2495D5CA2160101035D5CA293 -C9FC13075CA3130F5CA3131F5CA2133FA25C497EB612F8A3403E7DBD3A>II<49B6D8C03FB512F81B -F01780D900010180C7383FF00093C85B4B5EA2197F14034B5EA219FF14074B93C7FCA260 -140F4B5DA21803141F4B5DA21807143F4B5DA2180F4AB7FC61A20380C7121F14FF92C85B -A2183F5B4A5EA2187F13034A5EA218FF13074A93C8FCA25F130F4A5DA21703131F4A5DA2 -013F1507A24A5D496C4A7EB6D8E01FB512FCA2614D3E7DBD4C>I<49B612C05BA2D90001 -EB800093C7FC5DA314035DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C8 -FCA35B5CA313035CA313075CA3130F5CA3131F5CA2133FA25CEBFFE0B612E0A32A3E7DBD -28>I<92B612E0A39239003FF000161F5FA2163F5FA3167F5FA316FF94C7FCA35D5EA315 -035EA315075EA3150F5EA3151FA25EA2153FA25EA2157FA25EA2D80F8013FFEA3FC0486C -91C8FCA25CD8FFC05B140301805B49485A00FC5C0070495A0078495A0038495A001E017E -C9FC380F81FC3803FFE0C690CAFC33407ABD32>I<49B600C090387FFFF896B5FC5FD900 -010180C7000F130093C813F84B16E01A804FC7FC0203163C4B15F84E5AF003C002074B5A -4B021FC8FC183E1878020F5D4BEB03E0EF07804DC9FC021F143E4B5B17F04C5A023F1307 -EDC00F4C7E163F027FEBFFF8ED81EFED83CF92388F87FC9138FF9F0792383C03FE15784B -6C7E4913E0158092C77F5C01036F7E5C717EA213074A6E7EA2717E130F4A6E7EA284011F -15035C717E133F855C496C4A13E0B600E0017F13FFA34D3E7DBD4D>I<49B612F0A3D900 -010180C7FC93C8FC5DA314035DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF -92C9FCA35B5C180C181E0103161C5C183C183813074A1578187018F0130F4AEC01E0A217 -03011FED07C04A140F171F013FED3F8017FF4A1303017F021F1300B9FCA25F373E7DBD3E ->I<49B56C93383FFFF05113E098B5FCD90001F1E000704B5B03DF933803BF80A2F2077F -1403039F040E90C7FC1A1CDB8FE05E02075F030F4C5AA21AE1020FEE01C1020E606F6CEC -03811A83021EEE0703021C040E5BA2F11C07023C16380238606F6C1470F1E00F14780270 -DB01C05BA2953803801F02F0ED07004A6C6C5E180E4E133F130102C04B5C601A7F01036D -6C5B4A95C8FC4D5A4D485B130791C749C75A170E047F1401495D010E4B5CA24D1303131E -011C4B5C5F013C023F1407017C5D01FE92C75BD803FF4D7EB500FC013E011FB512F8163C -041C5E5C3E7DBD58>I<49B56C49B512F81BF0A290C76D9039000FFE004AEE03F0705D73 -5A03DF150302037F038F5E82190791380787FC030793C7FC1503705C140F91260E01FF14 -0EA26F151E021E80021C017F141C83193C023C6D7E02381638161F711378147802706D6C -1370A2040714F002F0804A01035C8318010101EC01FF4A5E82188313034A91387FC380A2 -EF3FC7010716E791C8001F90C8FC18F718FF4981010E5E1707A2131E011C6F5AA2013C15 -01137C01FE6F5AEA03FFB512FC187818704D3E7DBD49>II<49B712F018FF19C0D9000190C76C7EF00FF84BEC03FC180102 -0382727E5DA214071A805DA2140F4E13005DA2021F5E18034B5D1807023F5E4E5A4B4A5A -4E5A027F4B5A06FEC7FC4BEB03FCEF3FF091B712C005FCC8FC92CBFCA25BA25CA21303A2 -5CA21307A25CA2130FA25CA2131FA25CA2133FA25C497EB612E0A3413E7DBD3A>II<49B77E18F818FFD90001D900017F9438003FE04BEC -0FF0727E727E14034B6E7EA30207825DA3020F4B5A5DA24E5A141F4B4A5A614E5A023F4B -5A4B4A5A06FEC7FCEF03FC027FEC0FF04BEBFF8092B500FCC8FC5F9139FF8001FE92C7EA -7F80EF1FC084496F7E4A1407A28413035CA2170F13075C60171F130F5CA3011F033F5B4A -EE038018E0013F17071A004A021F5B496C160EB600E090380FF01E05075B716C5ACBEAFF -E0F03F8041407DBD45>II<48B912FCA25A913A -0003FE000F01F84A1301D807E0EE00F8491307491778000F5D90C7FC001E140FA2001C4B -1470123C0038141FA200785D1270033F15F000F018E0485DC81600157FA25EA215FFA293 -C9FCA25CA25DA21403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA214 -FF497F001FB612FCA25E3E3D7FBC35>I<007FB500F090387FFFFE19FC5D26007FE0C700 -0313804A913800FC004A5D187001FF16F0A291C95AA2481601605BA200031603605BA200 -07160795C7FC5BA2000F5E170E5BA2001F161E171C5BA2003F163C17385BA2007F1678A2 -491570A200FF16F0A290C95AA216015F5A16035F16074CC8FC160E161E5E007F5D5E6C4A -5A6D495A6C6C495A6C6C011FC9FC6C6C137E3903FC03F8C6B512E0013F1380D907FCCAFC -3F407ABD3E>III<027FB5D88007B512C091B6FCA2020101F8C7EBF8009126007FE0 -EC7F804C92C7FC033F157C701478616F6C495A4E5A6F6C495A4EC8FC180E6F6C5B606F6C -5B6017016F6C485A4D5A6F018FC9FC179E17BCEE7FF85F705AA3707EA283163F167FEEF7 -FCED01E7EEC3FEED0383ED070392380E01FF151E4B6C7F5D5D4A486D7E4A5A4A486D7E92 -C7FC140E4A6E7E5C4A6E7E14F0495A49486E7E1307D91F806E7ED97FC014072603FFE0EC -1FFF007F01FC49B512FEB55CA24A3E7EBD4B>II<027FB712F0A3DAFFFCC7EA3FE003E0EC7FC092C8EA -FF8049484A13004A4A5A5C4A4A5A49484A5A4A4A5A4D5A49484A5A4D5A91C74890C7FC5B -010E4A5A4C5A4C5A011E4A5A90C8485A4C5A4C5A4B90C8FCA24B5A4B5A4B5A4B5A4B5A4B -5A4B5AA24A90C9FC4A5A4A5A4A5A4A4814704A4814F04A485C14FF5D4990C7120149485D -49481403495A49485D49481407495A4DC7FC49485C4890C8FC48485D4848157E484815FE -484814034848EC0FFC16FF48B7FCB8FC5F3C3E7BBD3E>I97 DIIII<163EEEFFC0923803E1E0923807C0F0ED0F811687ED1F8F160F153FA217E092387E03 -8093C7FCA45DA514015DA30103B512FCA390260003F0C7FCA314075DA4140F5DA5141F5D -A4143F92C8FCA45C147EA414FE5CA413015CA4495AA35CEA1E07127F5C12FF495AA200FE -90C9FCEAF81EEA703EEA7878EA1FF0EA07C02C537CBF2D>III<143C14FEA21301A314FCEB00 -701400AD137E3801FF803803C7C0EA0703000F13E0120E121C13071238A2EA780F007013 -C0A2EAF01F14801200133F14005B137EA213FE5BA212015B0003130E13F0A20007131EEB -E01CA2143CEBC0381478147014E013C13803E3C03801FF00EA007C173E7EBC1F>I -II -IIIII<91381F800C9138FFE01C903903F0707C90390FC0387890391F801CF8 -90383F000F137E4914F000011407485A485A16E0485A121F150F484814C0A3007F141F49 -1480A300FF143F90C71300A35D48147EA315FE007E495A1403A26C13074A5A381F801D00 -0F13793807C1F33901FFC3F038007F03130014075DA3140F5DA3141F5DA2143F147F9038 -1FFFFE5BA2263A7DA729>III<147014FC1301A25CA213 -03A25CA21307A25CA2130FA25CA2007FB512F0B6FC15E039001F8000133FA291C7FCA25B -A2137EA213FEA25BA21201A25BA21203A25BA21207EC01C013E01403000F1480A2EBC007 -1500140E141E5C000713385C3803E1E03801FF80D8003EC7FC1C3A7EB821>I<137C48B4 -EC03802603C7C0EB0FC0EA0703000F7F000E151F121C010715801238163FEA780F007049 -1400A2D8F01F5C5C0000157E133F91C712FEA2495C137E150113FE495CA215030001161C -4914F0A21507173CEEE038150F031F1378000016706D133F017C017313F0017E01E313E0 -903A3F03C1F1C0903A0FFF007F80D901FCEB1F002E297EA734>I<017E147848B4EB01FC -2603C7C013FED807031303000F13E0120E121C0107130100381400167ED8780F143E0070 -5B161EEAF01F4A131C1200133F91C7123C16385B137E167801FE14705B16F016E0120149 -EB01C0A2ED0380A2ED0700A20000140E5D6D133C017C5B6D5B90381F03C0903807FF80D9 -01FCC7FC27297EA72C>I<017CEE038048B40207EB0FE02603C7C090391F801FF0EA0703 -000F7F000E153F001C16000107160F003817074C1303D8780F027E130100705B1800D8F0 -1F14FE4A4914E01200133FDA000114014C14C05B137E0303140301FE4A14805BA2F00700 -00011407494A5B180EA260A2030F5C12006D011F5C017C496C5B017E0139495A6D903870 -F80390281F81E07C0FC7FC903A07FFC01FFE010090380007F03C297EA741>II<137C48B4EC03802603C7C0EB0FC0EA0703000F7F000E151F001C16801307123816 -3FD8780F150000705BA2D8F01F5C4A137E1200133F91C712FE5E5B137E150113FE495CA2 -150300015D5BA215075EA2150F151F00005D6D133F017C137F017E13FF90393F03DF8090 -380FFF1FEB01FC90C7123F93C7FCA25DD80380137ED80FE013FE001F5C4A5AA24848485A -4A5A6CC6485A001C495A001E49C8FC000E137C380781F03803FFC0C648C9FC2A3B7EA72D ->I<02F8130ED903FE131ED90FFF131C49EB803C49EBC0784914F090397E07F1E09038F8 -00FF49EB1FC049EB07800001EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC143E14 -785C495A495A495A49C8FC011E14E05B5B4913014848EB03C0485AD807F8EB078048B413 -1F3A1F87E07F00391E03FFFE486C5B00785CD870005B00F0EB7FC048011FC7FC27297DA7 -2A>I126 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FM cmsl10 10.95 67 -/FM 67 128 df<9339FFC003F8030F9038F01FFE923A3FC07C7E0F923BFE001FF81F80DA -03F890383FF07F4A48D9FFE013C0EC1FE04A4848EBC0FF03804A1380DA7F00157F4A9238 -003E004A6D91C7FC8301015D4A5CA4160113034A5CA416030007B812FCA3290007F00003 -F8C8FCA21607130F4A5CA4160F131F4A5CA4161F133F4A5CA4163F137F91C75BA4167F5B -4992C9FCA31201486C49487EB5D8F83F13FF5DA242407EBF35>11 -D<39078003C0391FE00FF0003F131F01F013F8A6390F3007980000EB0018017013380160 -1330A201E01370491360A2000114E039038001C001001380481303000EEB0700000C1306 -001C130E485B485B485B4813601D1C75BE2D>34 D38 -DI<007FB5FCA2B512FEA418067C961E>45 -D<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F -00A2173EA25FA25FA24C5AA24C5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA2 -4B5AA24B5AA24B5AA24BC8FCA2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2 -143EA25CA25CA2495AA2495AA2495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2 -485AA2485AA248CBFCA2123EA25AA25AA21270315B7FC32D>II<157015F01401 -1407143F903803FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5C -A513015CA513035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>III<161C163C167CA216FCED01F815031507150FA2151DED3BF0 -157315E315C31401EC038391380707E0140E141CA2143814709138E00FC0EB01C0148013 -03EB0700130E49EB1F805B133013705B485A4848EB3F0090C7FC5A120E5A5A48147E1260 -B8FCA3C73801FE00A25DA41403A25DA314074A7E0107B512F8A3283E7BBD2D>I<010614 -03D90780131F90390FF801FE91B512FC16F816F016E0168049EBFE0015F890381C7FC091 -C8FCA3133C1338A513781370A2EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914 -C049EB07E04914F049130390C7FC16F8A61507A21206EA3F80487EA2150F00FF15F0A249 -14E090C7121F00FC15C000F0143F00701580ED7F0012786C14FE4A5A6C495A390F800FE0 -3907E03FC06CB5C7FCC613FCEB1FE0283F7ABC2D>IIIII<13F0EA01FC1203EA07FEA313FCA2EA03F8EA01E0C7FCB3121EEA3F80EA7FC012 -FFA41380EA7F00123C0F2778A619>I<17E016011603831607A2160FA2161F83163FA216 -7F167716F7EEE7FCED01E316C3150316831507EE03FEED0F01150E151E151C153C03387F -ED7800157015F05D4A4880177F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA -3FE0171F5CA2495AA2494881170F49C8FCA2130EA24982013C1507A2137CD801FE4B7E26 -07FF80EC3FFEB500F00107B512FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B00 -7FE00007FE6E48903801FF809438007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F0 -4A153F19E0187F19C0F0FF8001014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8 -EFFF8002F8C7EA3FE0EF0FF0EF07FC717E010715014A81711380A319C0130F5CA5011F4B -13805C19005F601707013F4B5A4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812 -FC17F094C8FC3D3E7DBD40>II<01 -3FB7FC18E018F8903B007FF0000FFE6E48EB01FF9438007FC04B6E7E180F85727E727E14 -7F4B6E7EA2727EA302FF178092C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261 -A24E5A130F4A5E180F61181F61011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3F -E0EF7F80017F4A48C8FC01FFEC1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8 -A39026007FF0C7127F6E48140F18034B14011800A31978147F4B1570A502FF143892C7FC -A3190017784915704A14F016011603160F91B6FC495DA29138FC001F1607160316010107 -5D5CA2197019F019E0010F4A5A4A90C7120119C0A218031980011F16075CF00F00A26018 -1E013F163E4A157E4D5A1703017F150F01FFEDFFF8B9FCA2603D3E7DBD3E>I<013FB812 -E0A3903A007FF000016E48EB003F180F4B14071803A31801147F4B15C0A514FF92C71270 -A395C7FC17F0495D5C160116031607161F49B65AA39138FC003F160F160701075D4A1303 -A5010F4AC8FC5C93C9FCA4131F5CA5133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4B -B46C1370031F01F013F0037F9038FC01E0913A03FF807E03913A0FF8000F83DA1FE0EB07 -C7DA7F80EB01EF4AC812FFD903FE16C04948157F4948153F495A4948151F495A49481680 -91C9120F5A485AA2485A000F18004982121FA248485EA295C7FC485AA412FF5BA6043FB5 -12E05BA29339001FFC00715AA2607F127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C -4B5A7F6C6C15FF6C6DEB01EFD93FC0EB07C7D91FF0EB1F87D907FE9038FE03800101B5EA -F8016D6C01E0C8FCDA07FEC9FC3C4276BF47>I<013FB5D8F807B6FC04F015FEA2902600 -7FF0C7380FFE006E486E5AA24B5DA4180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA4 -91B8FC5B6102FCC8127FA318FF13074A93C7FCA45F130F4A5DA41703131F4A5DA4170713 -3F4A5DA3017F150F496C4A7EB6D8E01FB512FC6115C0483E7DBD44>I<011FB512FC5BA2 -9039003FF8006E5AA25DA5143F5DA5147F5DA514FF92C7FCA55B5CA513035CA513075CA5 -130F5CA5131F5CA3133F497E007FB512F0A2B6FC263E7EBD21>I<021FB512FCA3DA0007 -13006F5AA25EA41507A25EA4150FA25EA4151FA25EA4153FA25EA4157FA25EA415FFA293 -C7FCA45C121FD87F805BEAFFC0A214035D13804A5AEAFE0000F8495A48495A00705C6C49 -5A6C01FEC8FC380F81FC3803FFE0C690C9FC2E407ABD2F>I<013FB500F8010FB5FC4C5B -A29026007FF0C7000313E06E486E130019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C -4D5A4D5AEF07804DC8FC02FF141E92C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E -5D03077F01035B9139FC1F3FE0153C4B6C7E15F09139FFE00FF84913C092380007FC5C4A -6D7E5C707E130F4A6D7F84177F717EA2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F -83496C4A13E0B600E0017F13FFA24B90B6FC483E7DBD47>I<013FB512FEA25E9026007F -F8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5CA513035CA513075CA21838A2187013 -0F5CA218E0A3011F15014A15C01703A21707EF0F80013F151F4A143F177FEFFF00017F14 -0301FF143FB9FC5FA2353E7DBD39>I<90263FFFF0933807FFFE5013FC629026007FF8EF -FC00023F4D5AA2023BEF77F0A2DA39FC16E7A2F101CF0279EE038FDA70FE5FF1070FA219 -0E1A1FDAF07F151C02E060193819706F7EF1E03F130102C0DB01C05BA26F6CEB0380A295 -3807007F0103160E4A6C6C93C7FC60A2606201076D6C5B02005F60A26F6C485A94380380 -015B010EDB07005BA2923801FC0EA24D1303131E011C6D6C485C5FA25F1907013CEC7FC0 -013860013C5D137C01FE6EC7120F2607FF80013E4A7EB500FC031FB512F8043C5E4A131C -573E7DBD53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A -6C157C023B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07F -DAE00F5D8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17 -E0161F17F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E13 -0E188E177F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C1501 -13FE2607FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE91 -3903F0003FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E494815 -7F495A013F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8 -123F5BA2127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60 -003F160F6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A01 -7FEC1FC06D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47 ->I<013FB612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0 -F01FF0A2147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5A -EF0FF80103ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F -5CA5133F5CA3137F497EB612E0A25D3D3E7DBD3E>I<923803FF80031F13F09238FE01FE -913903F8003FDA0FE0EB1FC0DA3F806D7E4AC7EA03F0D901FC8149486E7E49486E7E010F -82494881494816804948ED3FC013FF91C9FC484817E00003171F5B000718F0A2485AA248 -5A19F8123FA25B127FA219F04848163FA519E0187F5BA219C018FF1980A24D1300A24D5A -6C7E4D5A60003F160F037C5C6C6C48B4495A913A0783803FC0000F90260E01C05B9026F0 -0C0049C7FC0007011CEBE0FE2603F818EB61FCD801FCEC73F8D800FEEC77F0017FEC7FC0 -D93F985CD90FFC01FEC8FC902703FE07F813030100B5FC91260FFC3C5B91C7FC180E163E -181E043F137CEF81FC17FF60A260A2705B60705B7048C7FCEE01F83D5276BF47>I<013F -B612F017FF18E0903B007FF0003FF86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E014 -7F4B15F0A502FFED7FE092C8FCA219C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F80 -0103DA07FEC7FC91B612F017809139FC0007E0EE03F8EE00FC0107814A147F717EA284A2 -130F5CA484011F157F5CA41902013F17075CA2F0F00F017F170E496C143FB600E0011F13 -1C94380FF83C4B01071378CA3801FFE09438003F8040407DBD43>I<9239FF8003800207 -EBF007021F9038FC0F0091387F00FE02FCEB1F1FD903F0EB07BF49486DB4FC49487F4A6D -5A49C8FC49157E133E137E173E49153CA57F1738A26D92C7FC808080EB7FFEECFFE06D13 -FEEDFFC06D14F06D14FC010380010080143F020380DA003F7F15031500707E163F161FA2 -160F121CA31607160F003C5EA35F003E151F94C7FC007E5D007F153E6D5C16FC01E0495A -D87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC8FCD8E00713F839C0007FC03142 -7BBF33>I<0007B912F0A33C0FFE000FF8003F01F0160F01C04A13034848160190C7FC12 -1EF000E048141F5E1238A212781270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA5 -14035DA514075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76BC42>IIII<010FB500 -F090B512F85B5FD9003F902680003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E -6C141E181C6E6C143C606E6D5B4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C -6F6C5A5F923807FCF0EEFDE06FB45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238 -079FF0ED0F1F92380E0FF8151C92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F -4AC7FC021E6E7E5C02386E7E5C02F06E7E495A49486E7E130749486E7E497E017F4B7E26 -03FFF091383FFF80007F01FC49B512FEB55CA2453E7EBD44>II<010FB712FEA39239 -C00007FCD91FFCC7EA0FF814F04AEC1FF00280EC3FE091C8EA7FC0013EEDFF80A2013C4A -13004C5A494A5A4C5A13704C5A4C5A494A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A -4B5A4B5A4B5AA24A90C8FC4A5A4A5A4A5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC -495A495A494814071800495A49485C495A495A171E4890C8123E485A4848157E484815FE -4C5A484814074848141F4848EB01FFB8FC5FA2373E7BBD38>I<0118130C0138131C4913 -38491370484813E039038001C0390700038000061400000E5B48130E0018130C0038131C -00301318A20070133800601330A300EFEB778039FFC07FE001E013F0A4397FC03FE0A239 -3F801FC0391E000F001E1C6CBE2D>92 D97 D99 DIII<177C913907F8 -03FE91393FFE0F8F9139FC0F9C3F903901F007F8903907E003E0D90FC013F0011F903801 -F80C02801400133FD97F007FA315035B495CA3017E495A5E150F6D5C6D495A90263F803E -C7FCECC0FC903871FFF09038E07F8091C9FC485AA47FA27F90B512F8EDFF806C15E016F8 -6D8048B6FC3A07E0000FFED80F801300003FC8127F003E815A00FC815AA25E163EA25E6C -15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903F801FCC6B512F0010F90C8FC303D -7FA82D>I<147FEB3FFFA313017FA25CA513015CA513035CA4ED07F80107EB1FFF9139F0 -781FC09138F1E00F9139F38007E0ECF70002FE14F0495A5CA25CA24A130F131F4A14E0A4 -161F133F4A14C0A4163F137F91C71380A4167F5B491500A300015D486C491380B5D8F87F -13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14FE130314FCEB00F01400ACEB03F8 -EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F1480A5137F1400A55B5BA4EA03FF -007F13F0A2B5FC183E7DBD1A>I<143FEB1FFF5BA213017FA214FEA5130114FCA5130314 -F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A55B5BA4EA03FF007F13 -F8A2B5FC183F7DBE1A>108 D<902707F007F8EB03FCD803FFD91FFF90380FFF80913CE0 -781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700EBE38002EEDAF7 -0013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A5013F021F140F4A4A -14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B147F486C496DEB -FFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB1FFF9139E0781F -C09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85CA24A130F131F4A -14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A300015D486C491380B5 -D8F87F13FCA32E287DA733>II<91387F01FE903A7FFF0FFFC0 -9139FE3E03F09238F801F8903A03FFE000FE6D49137F4B7F92C713804A15C04A141FA218 -E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880A2EFFF004C5A01 -1F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F8913883FFE0028090C8 -FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733>I<91390FE003C0 -DAFFFC1380903903F81E0790390FE0070F90391F80038FD97F0013DF01FE130148489038 -00FF00485A1207485A8248485C123F495CA2485AA2150112FF90C75BA41503A25EA37E15 -077F003F4A5A151F6C6C133F6C6C137F000714FF3903F003CF3A00FC0F8FE090383FFE0F -EB0FF090C7FC151F5EA5153F5EA4157F4B7E023F13FEA32A3A7AA730>I<903907F01F80 -D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13F002D813E09138 -F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA31201487EB512FEA32528 -7EA724>I<9138FF81C0010713E390381F807F90397C003F8049131F4848130F5B000314 -07A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C7F011F7F130790 -38007FFE1403140100381300157EA2123C153E157E007C147CA2007E147815F8007F495A -4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>II119 D<48B539C07FFFC0A33C000FFE003FF8006D48EB1FE00103158001 -01023EC7FC6E133C01005C027F5B6F5A91383F81C0EDC380DA1FC7C8FC15EFEC0FFE6E5A -5D140381A24A7E140FEC1E7F023C7FEC383F02707FECE01F010180903803C00F49486C7E -D90F007F491303017E80D801FE80D807FF497EB5D8803F13F8A332277FA630>I<90B539 -E007FFF05E18E0902707FE000313006D48EB01FC705A5F01014A5A5F16036E5C01001407 -94C7FC160E805E805E1678ED8070023F13F05EED81C015C191381FC38015C793C8FC15EF -15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC5C140E141E141C5C121C003F5B5A485B -495A130300FE5B4848CAFCEA701EEA783CEA3FF0EA0FC0343A80A630>I123 D<000E1307393F801FC0007FEB3FE013C012FF1380007F14C00100138000 -1CEB0E001B096EBD2D>127 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FN cmbx10 10.95 83 -/FN 83 128 df11 DII33 -DI<147CA4903803FF80011F13F8017F13FE48B6FC4815C0 -48017C13E0D80FF8EB1FF0D81FE0130701C0EB01F8D83F80EB00FCA2007F14030100EB07 -FE150F48141FA31380A213C0ED0FFC01E0EB07F801F8EB01E0D87FFE90C7FCEBFFFC14FF -6C14E015F86C806C14FF16806C15C06C15E0C6FC6D14F0011F14F81307D9007F13FCA2EC -7C7FED1FFED81F80130FD83FC01307EA7FE0D8FFF01303A21501A401E014FC13C0D87F00 -1303127E16F86C14070180EB0FF0D81FC0EB1FE0D80FF0133F3A07FE7DFFC06CB612806C -ECFE006C6C5B011F13F001031380D9007CC7FCA427497AC334>36 -D38 DII<127012F8127C7EEA3F806C7E6C7E12076C7E -7F6C7E6C7EA2137F80133F806D7EA280130FA280130780A36D7EA4807FA51580B01500A5 -5B5CA4495AA35C130F5CA2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F48 -5A485A003EC8FC5A5A1270195A7AC329>I<147C14FE497EA5260C00FE1360003FEC01F8 -D87F80EB03FC01C0130701E0130F3AFFF87C3FFED87FFCEB7FFC01FE13FF263FFF7D13F8 -000F90B512E000011500D8003F13F8010713C0A2013F13F848B6FC000F15E0003F017D13 -F8267FFE7C13FC01FC137FD8FFF8EB3FFE3A7FE0FE0FFC01C0130701801303D83F00EB01 -F8000CEC0060C6486C1300A56D5A147C27287AC334>I44 DI< -EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC00E0E798D1D>I<16 -1C163E167EA216FE16FC150116F8A2150316F0A2150716E0150F16C0A2151F1680153F16 -00A25D157E15FE5DA214015DA214035D14075DA2140F5D141F5DA2143F92C7FC5C147EA2 -14FE5CA213015C13035CA213075C130F5CA2131F5C133F91C8FCA25B137EA213FE5B1201 -5BA212035B12075BA2120F5B121F5BA2123F90C9FCA25A127E12FE5AA25A1278275B7AC3 -34>II<140F143F5C495A130F48B5FCB6FCA313 -F7EAFE071200B3B3A8B712F0A5243C78BB34>I<903803FF80013F13F890B512FE00036E -7E4881260FF80F7F261FC0037F4848C67F486C6D7E6D6D7E487E6D6D7EA26F1380A46C5A -6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC -1FE04A5A4A5A9139FF000F80EB01FC495A4948EB1F00495AEB1F8049C7FC017E5C5B48B7 -FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I<903801FFE0010F13FE013F6D7E90B612E0 -4801817F3A03FC007FF8D807F06D7E82D80FFC131F6D80121F7FA56C5A5E6C48133FD801 -F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFEC7FC15F815FEEDFFC0D9000113F06E6C7E -6F7E6F7E6F7E1780A26F13C0A217E0EA0FC0487E487E487E487EA317C0A25D491580127F -49491300D83FC0495A6C6C495A3A0FFE01FFF86CB65A6C5DC61580013F49C7FC010313E0 -2B3D7CBB34>II<000715 -38D80FE0EB01F801FE133F90B6FC5E5E5E5E93C7FC5D15F85D15C04AC8FC0180C9FCA9EC -FFC0018713FC019F13FF90B67E020113E09039F8007FF0496D7E01C06D7E5B6CC77FC812 -0F82A31780A21207EA1FC0487E487E12FF7FA21700A25B4B5A6C5A01805C6CC7123F6D49 -5AD81FE0495A260FFC075B6CB65A6C92C7FCC614FC013F13F0010790C8FC293D7BBB34> -II<121F7F13F890B712F0A45A -17E017C0178017005E5E5A007EC7EA01F84B5A007C4A5A4B5A4B5A93C7FC485C157E5DC7 -485A4A5AA24A5A140F5D141F143F5D147FA214FF92C8FC5BA25BA3495AA3130FA5131FAA -6D5A6D5A6D5A2C3F7ABD34>II<903801FFE0010F13FC013F -13FF90B612C04801E07F489038003FF048486D7E000F6E7E485A6F7E123F484880811780 -12FFA217C0A517E0A4007F5CA4003F5C6C7E5D6C7E00075C3903FF80FB6C13FF6C6C13F3 -6D13C3010F018313C090380008031400A24B1380EA03F0487E486C1500487E4B5AA25E15 -1F4B5A495C6C48EBFFE049485B2607FC0F5B6CB6C7FC6C14FC6C14F06D13C0D90FFEC8FC -2B3D7CBB34>I -II<007FBA12E0BB12F0 -A4003F19E0CEFCB0003FBA12E0BB12F0A46C19E0441C7AA451>61 -D<90381FFF8090B512F0000314FC000F14FF261FF8071380263FC00113C0018014E0486C -7E486C14F07FA56C5A4A13E0EA3FC0260F000313C0C714804A13004A5A4A5A15F04A5A4A -5A5D92C7FC14FE5C13015CA25CAA90C9FCA8EB03F0497E497E497E497EA66D5A6D5A6D5A -6D5A24407ABF31>63 D<16FCA24B7EA24B7EA34B7FA24B7FA34B7FA24B7FA34B7F157C03 -FC7FEDF87FA2020180EDF03F0203804B7E02078115C082020F814B7E021F811500824A81 -023E7F027E81027C7FA202FC814A147F49B77EA34982A2D907E0C7001F7F4A80010F835C -83011F8391C87E4983133E83017E83017C81B500FC91B612FCA5463F7CBE4F>65 -DI<9226 -07FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803FFB4990 -39F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A15034817 -01485B18004890CAFC197E5A5B193E127FA349170012FFAC127F7F193EA2123FA27F6C18 -7E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07E0D97FFEED0FC06D6CED3F -80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B55A023F15E0020715800200 -02FCC7FC030713C03F407ABE4C>IIII<922607FFC0 -130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803FFB499039F800 -03FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A1503481701485B -18004890CAFC197E5A5B193E127FA34994C7FC12FFAB0407B612FC127F7FA3003F92C738 -3FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE157F6D6C7E010F01E014FF6D01F8 -13036D9038FF801F010091B512F3023F15C00207ED803E02009138FE000E030701E090C7 -FC46407ABE52>III75 DIIIIIII<903A03FFC001C0011FEBF803017FEBFE0748B6128F4815DF48 -010013FFD80FF8130F48481303497F4848EB007F127F49143F161F12FF160FA27F1607A2 -7F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCEDFF806C15E016F86C816C816C816C1680 -6C6C15C07F010715E0EB007F020714F0EC003F1503030013F8167F163F127800F8151FA2 -160FA27EA217F07E161F6C16E06D143F01E015C001F8EC7F8001FEEB01FF9026FFE00713 -004890B55A486C14F8D8F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A>I<003FB912 -FCA5903BFE003FFE003FD87FF0EE0FFE01C0160349160190C71500197E127EA2007C183E -A400FC183F48181FA5C81600B3AF010FB712F8A5403D7CBC49>IIII<007FB6013FB5 -12F0A5D8001F01C0D9003FC7FC6D6D147E18FE6D6D5C6D6D495A6D4B5A6F13076D6D5C6E -6C495A4D5A6EEB803F6E01C090C8FC6E147E705A6E13F16EEBF9F86EEBFBF0EEFFE0806F -5B5F816F7F81836F7F81834B7F4B7F5D83DB3F3F7FED7E1F03FE804B6C7F4A486C7F4A48 -7E0207814B6C7F4A487E4A4880023F6E7E92C76C7F027E804A8201016F7F4A6E7F495A49 -486E7F010F6F7F4A80B600C0017F90B5FCA5483E7DBD4F>II<003FB8 -12E0A59126E0001F13C091C7148001FC5C01F04A1300495D4914FF4848495B5F90C75A4B -5B007E5E5D4B5B007C5E5D4B90C7FC5E15FFC7485B5E4A5B5C5E4A5B5C5E4A90C8FC5C5D -4A5A5B4BEB01F0495B5B495B5D491503494914E092C7FC5B495A4A14075A4849140F5C48 -161F4849143F4A147F4816FF48495B91C7000713C048157FB9FCA5343E7ABD40>I<0170 -14E001F8EB01F0000114034848EB07E04914C04848EB0F804848EB1F0048C7123EA2003E -5C003C1478A2007C14F800785CA200F81301485CA2D8F7E0EBEFC0D8FFF0EBFFE001F814 -F001FC14F801FE14FCA3007F7FA36C48EB7FF86C48EB3FF06C48EB1FE06C48EB0FC02620 -73BE37>92 D<136013F0EA01F8EA03F013E0EA07C0EA0F80EA1F00A2123E123CA2127C12 -78A212F85AA2EAF7E0EAFFF013F813FC13FEA3127FA3EA3FFCEA1FF8EA0FF0EA07E00F20 -7ABE1D>96 D<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C -806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F13 -80381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF -07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>I<13FFB5FCA512077EAF -EDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A1307 -4A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0 -903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>IIIII<903A03FF8007F0013F9038F83FF8499038 -FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700 -003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F -03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16 -F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E0 -01F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC -2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F00 -7F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>III<13FFB5FCA51207 -7EB092380FFFFEA5DB01FEC7FC4B5AED07F0ED1FE04B5A4B5A4BC8FCEC03FC4A5A4A5A14 -1FEC7FF84A7EA2818102E77F02C37F148102007F826F7E6F7E151F6F7E826F7F6F7F816F -7FB5D8FC07EBFFC0A5323F7DBE37>I<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D> -I<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F -91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA3 -4A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E -4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5 -33297CA83A>II<01FFEBFFE0B500 -0713FC021FEBFF80027F80DAFF8113F09139FC007FF8000301F06D7E4A6D7E4A130F4A6D -7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DA -FF035B92B55A029F91C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>II<3901FE01FE00FF903807FF804A13E04A -13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092 -C7FCA391C8FCB3A2B6FCA525297DA82B>I<90383FFC1E48B512BE000714FE5A381FF00F -383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F0 -6C806C806C806C80C61580131F1300020713C014000078147F00F8143F151F7EA27E1680 -6C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929 ->IIIIIII123 D127 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FO cmr8 8 17 -/FO 17 116 df<123C127E12FFA7127EA9123CAA1218A41200A7123C127E12FFA4127E12 -3C082F7AAE14>33 D<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F -00A2121EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0 -EA00F013701338131C130E1307130310437AB11B>40 D<12C07E12707E7E7E120FEA0780 -120313C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA4 -1378A313F0A2EA01E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I43 D48 -D<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7AAB23>III<140EA2141E143EA2147E14FEA2EB01BE1303143E13 -06130E130C131813381330136013E013C0EA0180120313001206120E120C5A123812305A -12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC23>I<000CEB0180380FC01F90 -B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7FF8380DE07C380F801F01001380 -000E130F000CEB07C0C713E0A2140315F0A4127812FCA448EB07E012E0006014C0007013 -0F6C14806CEB1F006C133E380780F83801FFE038007F801C2D7DAB23>I61 D<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70 -FEEC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3496D7EA2011FB57EA29038 -180001496D7EA349147EA201E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8 -FFFC0103B5FCA2302F7EAE35>65 D99 D105 -D<3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3A -FFFE1FFFC0A2221E7E9D27>110 DI<3801FE183807 -FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7FF06CB4FC6C13C06C13F0 -000113F838001FFC130138C0007E143EA26C131EA27EA26C133CA26C137838FF01F038E3 -FFC000C0130017207E9E1C>115 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FP cmsy10 10.95 48 -/FP 48 121 df<007FB812FEBAFCA26C17FE3804799847>0 D<121EEA7F80A2EAFFC0A4 -EA7F80A2EA1E000A0A799B19>I<0060166000F816F06C1501007E15036CED07E06C6CEC -0FC06C6CEC1F806C6CEC3F006C6C147E6C6C5C6C6C495A017E495A6D495A6D6C485A6D6C -485A6D6C48C7FC903803F07E6D6C5A903800FDF8EC7FF06E5A6E5AA24A7E4A7EECFDF890 -3801F8FC903803F07E49487E49486C7E49486C7E49486C7E017E6D7E496D7E48486D7E48 -48147E4848804848EC1F804848EC0FC048C8EA07E0007EED03F048150148150000601660 -2C2C73AC47>II13 D15 D<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E0CDFCAE00 -7FB912E0BA12F0A26C18E03C287BAA47>17 D<180E183F18FFEF03FEEF0FF8EF3FE0EFFF -80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED0FF8ED7FE0913801FF80DA07FEC8FC -EC1FF8EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFCA2 -EA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FE -913801FF809138007FE0ED1FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF -3FE0EF0FF8EF03FEEF00FF183F180E1800AE007FB812FEBAFCA26C17FE384879B947>20 -D<0203B612FE023F15FF91B8FC010316FED90FFEC9FCEB1FE0EB7F8001FECAFCEA01F848 -5A485A485A5B48CBFCA2123EA25AA21278A212F8A25AA87EA21278A2127CA27EA27EA26C -7E7F6C7E6C7E6C7EEA00FEEB7F80EB1FE0EB0FFE0103B712FE010016FF143F020315FE38 -3679B147>26 D<0060140600F8EC0F8000FE15E0007F6E7ED83FC0EB03FCD80FF0EB00FF -D803FCEC3FC06C6C6E7E26007F80EB07F8D91FE0EB01FED907F0EB007FD903FCEC3FC0D9 -00FFEC0FF0DA3FC0EB03FC6E6C6D7EDA07F89038007F80DA01FEEC1FE0DA007FEC07F0DB -3FC0EB03FCDB0FF0EB00FFDB03FCEC3FC06F6C6E7E9226007F80EB07F8DC1FE0EB01FEDC -07F89038007F80706CEC3FC0DC00FFEC0FF0DD3FC0EB03FC716CEB01FEDD07F0EB007FA2 -4D4814FEDD3FC0EB03FC05FFC7EA0FF0DC03FCEC3FC04C48EC7F80DC1FE0903801FE00DC -7F80EB07F8DB01FEC7EA1FE04B484A5ADB0FF002FFC7FCDB3FC0EB03FC4B48495ADA01FE -C7EA1FE0DA07F8EC7F80DA0FE002FEC8FCDA3FC0EB03FC02FFC7EA0FF0D903FCEC3FC0D9 -07F04AC9FCD91FE0EB01FED97F80EB07F8D801FEC7EA1FE048484A5AD80FF002FFCAFCD8 -3FC0EB03FC48C7EA07F000FE4A5A00F8158000600206CBFC503C7BB45B>29 -D<140C141EA2143E143CA2147C1478A214F8495AA2495A495AA2495A49CDFC133E137EEA -01F8485AEA0FE0003FBB12FEBDFCA2003F1AFED80FE0CDFCEA03F06C7EEA007E133E7F6D -7E6D7EA26D7E6D7EA26D7E1478A2147C143CA2143E141EA2140C50307BAE5B>32 -D<19301978A2197C193CA2193E191EA2191F737EA2737E737EA2737E737E1A7C1A7EF21F -80F20FC0F207F0007FBB12FCBDFCA26C1AFCCDEA07F0F20FC0F21F80F27E001A7C624F5A -4F5AA24F5A4F5AA24FC7FC191EA2193E193CA2197C1978A2193050307BAE5B>I<020C16 -30021E1678A2023E167C023C163CA2027C163E0278161EA202F8161F4948707EA2494870 -7E4948707EA24948707E49CB7E013E187C017E187ED801F8F01F804848F00FC0D80FE0F0 -07F0003FBB12FCBDFCA2003F1AFCD80FE0CBEA07F0D803F0F00FC06C6CF01F80D8007EF0 -7E00013E187C6D606D6C4C5A6D6C4C5AA26D6C4C5A6D6C4C5AA26D6C4CC7FC0278161EA2 -027C163E023C163CA2023E167C021E1678A2020C163050307BAE5B>36 -D39 D41 D49 -D<0203B512F8023F14FC91B6FC010315F8D90FFEC8FCEB1FE0EB7F8001FEC9FCEA01F848 -5A485A485A5B48CAFCA2123EA25AA21278A212F8A25AA2B812F817FCA217F800F0CAFCA2 -7EA21278A2127CA27EA27EA26C7E7F6C7E6C7E6C7EEA00FEEB7F80EB1FE0EB0FFE0103B6 -12F8010015FC143F020314F82E3679B13D>I<1718173C177CA217F8A2EE01F0A2EE03E0 -A2EE07C0160F1780EE1F00A2163EA25EA25EA24B5AA24B5AA24B5AA24B5AA24BC7FCA215 -3E157E157C5DA24A5AA24A5AA24A5AA24A5AA24AC8FCA2143EA25CA25C13015C495AA249 -5AA2495AA249C9FCA2133EA25BA25BA2485AA2485AA2485A120F5B48CAFCA2123EA25AA2 -5AA25A12602E5474C000>54 D<007FB612FEB8FCA27EC9120FB3A7001FB7FC127FA3C912 -0FB3A8007FB7FCB8FCA26C15FE283F7BBE33>57 D<007FB81280B912C0A27ECA1203B3A2 -32187B9F3D>I<4E7EF007C0180F181F183F187FA218FFA25FA25F18BF1707183F170F17 -0E171E171C173C17381778177017F017E01601EE03C0A2EE0780A2EE0F005E161E5EA25E -16F85E4B5A854B5A15075E4BC7121F5D151E033FB6FC5DA292B7FC4A82DA03E0C7121FA2 -4A5A4A48140F0010131F003091C87F143E00785B007C13FC26FE01F86F7E38FF87F0D9FF -E0171CF1FE7C4A923803FFF86C4917E091C914C06C487013006C48EE00FCD80FF094C7FC -EA03C046477EC149>65 D<020EEC7FC0023E903803FFF802FE011F7F0103027F7F010F49 -B6FC011F903803F81F013F90260FC0031380903A79FC1F00010101013E7F5D4B147F9038 -03FDF002FF16005D5D187E4B14FE4990C85A604A4A5A4D5A4A4A5AEF1F80010F037EC7FC -4A495AEE0FF04AEB7FC0DB03FFC8FC011F011F13E04A4813F84B13FE92B6FC4AC66C7F01 -3F020F7F04037F4A1300717E173F49C86C7EA2170FA201FE1507A448485EA3495E000316 -0F605B00074C5A4993C7FCD9E180143E260FE7C05CD9DFE05C48B46CEB03F0D9BFFCEB0F -C09139FF80FF80D83F1FD9FFFEC8FC6D14F8D87E0714E0D8780191C9FC39E0003FF03942 -7DBF3C>II<4AB512FC -023FECFFE049B712FC0107EEFF80011F8390277FE1FC0114F02601FC01D9000F7FD803F0 -03017FD807C09238003FFE260F80036F7ED81F001607487113804883007E4A6E13C012FE -48187F00F019E000C00107163FC7FC5D191FA3140F5DA21AC0A24A5AA2F13F80A24A5A1A -0061197E4AC9FC61A2027E4B5A02FE5E18034A4B5A01015F4E5A4A4BC7FC0103163E604A -5D0107ED03F04AEC07C0EF1F80010F037EC8FC4A495A011FEC0FF04AEB7FC0DB0FFFC9FC -49B512FC90B612E04892CAFC4814F84891CBFC433E7EBD46>I<047FB612FC0307B8FC03 -1F1780157F4AB9FC912903F80FE000011300DA0FC0ED007EDA1F00167C023E17604A011F -92C7FC02FC5C495AA213034A495A495A5C0106C7FC90C848CAFCA3167E16FEA34B5AA35E -150393B612F0A24B5D614B92C8FC04E0CAFC5E151F5EA24BCBFCA25D157E15FE5DA24A5A -A24A5AA24A5AA20003495A121F486C485A127F486C48CCFCEBE03E387FFC7CEBFFF86C5B -6C13C06C5BD801FCCDFC49417FBD41>70 DI<033FB612F00207B7FC023F16E091B81280 -0103EEFE0090280FFC0007C0C7FCD91F80130F013EC7485A4992C8FC01FC5C48485C167E -484814FE01C05C90C8FCC812015E1503A34B5AA35E150FA34B5AA44B5AA44BC9FCA415FE -A35D1401A25D14035DA24A5A18704A48EB01F04D5A4A48130792C7485A023E5D4A023FC7 -FC0007B712FE001F16F8485E481680B700FCC8FC3C3E83BD32>73 -D<0507B512FE173F4CB612FC040715F0041F15C0933A7F8000F8009339FC0001F0DB03F0 -495ADB07C0495A4B48130F4BC7485A033E92C7FC4B5C03FC147E4A5A4B5C140302071401 -4B5C020F14034B5C92C7FC020C140791C85B170FA260171FA260173FA295C8FC5FA317FE -A44C5AA44C5AA44C5AA21203000F5E003F150F485EA2484B5AA24CC9FC163E6D147E5E6D -5C4B5A6C6C495A6D495A6C6C495A01FE013FCAFC391FFFC0FC6CEBFFF86C14E06C1480C6 -49CBFCEB1FF047497BBD3E>I<020EED03F0023EED1FF802FEED7FFC0103ED01FF010F92 -3807F0FE011F92381FC07E013FED7F00017903FC133E0101DA03F0133CDC07C01338DC1F -8013004A013EC8FC16FCED01F04B5A0103495A031FC9FCECF83E5D5DECF9F0903807FBE0 -4A5AA2ECFF80A2EB0FEFA381EB1FCFA214C781EB3F87A2EC83F01403137F6E7E137E13FE -6E7EA248487F157E157F497F000381151F49800007140F496E143C0307157C000F81496D -6C14F8001F810301EC01F0496D6CEB03E0003F037FEB07C09438801F8090C8393FE07E00 -486FB45A007E6F13F000786F13C000E0DB01FEC7FC3F427DBF45>I<173F933803FFC004 -0F7F043F7F93B5FC4B80ED03E092380FC03F92381F801FED3F004B130F15FE4A5A604A48 -5C020715804B91C7FC020F91C8FC5D141FA24A5AA34A5AA34ACAFCA3495AA313035CA349 -5AA3130F5CA3131F5CA25C133FA2495AF0078091C9121F01FEEE3F0018FF2601FFFE5D48 -D9FFE0130103FE5C489139FFE003F804FE5B4892B55AD81F811680263F001F92C7FC007E -010114FC00F8D9001F13F000E00201138039427DBF3F>I<4AB6FC023F15F849B712FE01 -07EEFF80011F17E090287FE1FC007F13F02601FC01020313F8D803F0030013FC2607C003 -ED3FFED80F80160FD81F00160748EF03FF484A80127E12FE488300F0130712C0C74915FE -A319FC020F15014B15F8A2F003F0A2021FED07E04B15C0F00F80F01F00183E4A485C4D5A -EF03E0EF0FC04AC7007FC7FCEE0FFE923807FFF8DA7E1F13C0DAFE3F90C8FCED7FF84BC9 -FC4948CAFCA35C1303A25C1307A25C130F5CA2131F5C133FA291CBFC5B137EA25B13F013 -C040437EBD3F>80 DI< -4AB612C0023F15FE49B812C0010717F0011F8390287FE1FC001F7F2601FC0102007FD803 -F0161FD807C0EE07FF260F800381D81F00825A4883007E5C12FE486012F000C01307C75F -4B140161611803020F4B5A4B5D4E5A4EC8FC183E4A4814FCEF01F0EF0FE0EFFF8091263F -803F90C9FCEEFFFC038113E015834A487F1500EE3FF8027E131F02FE6D7EA24A6D7E1301 -16034A80010380845C01078072EB01804A027F140F010F70EB1F00624A6E6C137E011F18 -7C4A6E6C5B72485A013F92390FFF0FE091C8ECFF80496F91C7FC017E6F13FC01786F13E0 -01E06F6CC8FC49407EBD4D>II85 DI88 D90 -D<15C04A7E4A7EA24A7EA34A7EA2EC1F3EA2EC3E1FA2EC3C0F027C7FA24A6C7EA249486C -7EA2ECE001010380A249486C7EA24948137CA249C77EA2011E141E013E141FA2496E7EA2 -496E7EA2491403000182A248486E7EA248486E7EA2491578000F167CA248C97EA2003E82 -A2003C82007C1780A248EE07C0A24816030060EE018032397BB63D>94 -D<0060EE018000F0EE03C06C1607A2007CEE0F80A2003C1700003E5EA26C163EA26C6C5D -A2000716786D15F8A26C6C4A5AA26C6C4A5AA200005E6D1407A2017C4A5AA26D4AC7FCA2 -011E141E011F143EA26D6C5BA26D6C5BA26D6C485AA201015CECF003A26D6C485AA29138 -7C0F80A2023C90C8FCEC3E1FA2EC1F3EA2EC0FFCA26E5AA36E5AA26E5A6E5A32397BB63D ->I<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F5C131F495A91C7FC -13FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F801307B3AA6D7EA26D -7E80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102 D<12FCEAFFC0EA07F0EA01 -FCEA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147FEC1FC0EC07FEEC00FFEC07 -FEEC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A133F017EC7FC485AEA07F0EA -FFC000FCC8FC205B7AC32D>I<146014F01301A214E01303A214C01307A2EB0F80A21400 -5BA2131E133EA25BA2137813F8A25B1201A25B1203A2485AA25B120FA290C7FC5AA2123E -A2123C127CA2127812F8A41278127CA2123C123EA27EA27E7FA212077FA26C7EA212017F -A212007FA21378137CA27FA2131E131FA27F1480A2EB07C0A2130314E0A2130114F0A213 -001460145A77C323>I<126012F07EA21278127CA2123C123EA27EA27E7FA212077FA26C -7EA212017FA212007FA21378137CA27FA2131E131FA27F1480A2EB07C0A2130314E0A213 -0114F0A414E01303A214C01307A2EB0F80A214005BA2131E133EA25BA2137813F8A25B12 -01A25B1203A2485AA25B120FA290C7FC5AA2123EA2123C127CA2127812F8A25A1260145A -7BC323>I<126012F0B3B3B3B3B11260045B76C319>I<1A061A0F1A1FA21A3EA21A7CA21A -F8A2F101F0A2F103E0A2F107C0A2F10F80A2F11F00A2193EA261A261A24E5AA24E5AA24E -5AA24E5AA24EC7FCA2183EA260A260A24D5AA24D5A133801F85E486C15071203D80FFE4B -5A121D00394CC8FCEAF1FF00C0163EC67F017F5D80013F5D80011F4A5A80010F4A5A8001 -074A5AA26E495A13036E49C9FC13016E133E7F6F5A147F6F5A143FEDE1F0141FEDE3E015 -F391380FF7C015FF6E5BA26E90CAFCA26E5AA26E5AA215781570485B7A834C>112 -D -114 D120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FQ cmr10 10.95 103 -/FQ 103 128 df0 D<16E04B7EA24B7EA24B7EA24B7E -A2ED1DFFA203387FA29238787FC015709238F03FE015E002016D7E15C002036D7E158002 -076D7E15004A6D7E140E021E6D7E141C023C6D7F143802786E7E147002F06E7E5C01016F -7E5C01036F7E5C01076F7E91C8FC496F7E130E011E6F7E131C013C6F7F13380178707E13 -7001F0707E5B0001717E5B0003717E5B0007717E90CAFC48717E120E001E717E001FBAFC -481980A24819C0A2BB12E0A243417CC04C>II<010FB612E0A3D900030180C7FCDA00FEC8FC -A8913807FFC0027F13FC903A03FCFE7F80D90FE0EB0FE0D93F80EB03F8D9FE00EB00FE48 -48157F4848ED3F804848ED1FC0000F17E04848ED0FF0003F17F8A24848ED07FCA200FF17 -FEA8007F17FCA26C6CED0FF8A2001F17F06C6CED1FE0000717C06C6CED3F806C6CED7F00 -6C6C15FED93F80EB03F8D90FE0EB0FE0D903FCEB7F809027007FFFFCC7FC020713C0DA00 -FEC8FCA8913803FF80010FB612E0A3373E7BBD42>8 D<49B612FCA390C7D87FF0C8FCED -1FC0A8B4EF0FF001C0163FD81FE0EE7F80000F18006D5E00075FA26D150100035FAB6C6C -5E1703A312006D4B5AA2017F5E170FD93F804A5A011F5ED90FC0143FD907E04AC7FCD903 -F014FED901F8EBC1F8D9007EEBC7F091391FDFDFC00207B5C8FC9138007FF0ED1FC0A8ED -7FF049B612FCA33C3E7BBD47>I<913801FFC0021F13FC9139FF007F80D903F8EB0FE0D9 -0FF0EB07F8D91FC0EB01FCD97F806DB4FC49C86C7E48486F7E00038348486F7E000F8349 -150F001F83491507003F83A348486F7EAA6C6C4B5AA3001F5FA26C6C4B5AA200075F6D15 -1F00035FA26C6C4B5A00005FA2017F4BC7FC6D157EA26D6C5C010F5DA26D6C495A00E0EF -0380010315E0D870019238C007006E130301001580A36C0160EC000E003C017049131E26 -3FFFF0ECFFFEA36C5FA339407CBF42>I<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1E -D901FC90383FF03FD907F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED -7F00EF003E01FE6D91C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80 -A339407FBF35>I<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E49 -4813FF49485A137F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC48 -6CECFF80007FD9FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F89038 -07F001EB0FE0EB1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF8000 -7FD9FC3F13FEA32F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C -01F80078FE003CD907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F -02005CA201FE92C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193F -B3AC486C4A6CEB7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<133E133F137F13FFA2 -EA01FEEA03FCEA07F813F0EA0FE0EA1FC01380EA3E005A5A1270122010116EBE2D>19 -D24 D<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC121EAB120CC7FCA812 -1EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33 D<001E130F397F803FC000FF13 -7F01C013E0A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114 -E04913C00003130101001380481303000EEB070048130E0018130C0038131C003013181C -1C7DBE2D>I<4B6C130C4B6C131EA20307143EA24C133CA2030F147CA293C71278A24B14 -F8A2031E5CA2033E1301A2033C5CA3037C1303A203785CA203F81307A24B5CA20201140F -007FBAFCBB1280A26C1900C72707C0003EC8FC4B133CA3020F147CA292C71278A24A14F8 -A2021E5CA3023E1301007FBAFCBB1280A26C1900C727F80007C0C8FC4A5CA20101140FA2 -4A91C9FCA301035CA24A131EA20107143EA24A133CA2010F147CA291C71278A34914F8A2 -011E5CA2013E1301A2013C5CA201186D5A41517BBE4C>I<14E0A4EB07FC90383FFF8090 -B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C1580007C14 -0316C00078141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF013FE -EA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E0138015 -7F153FED1FC0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815005D -6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0A422 -497BC32D>I<013F4C7ED9FFC04B7E2601E0E015072607C070150F48486C4B5A023E4BC7 -FC48486C5D48D90FC0EB01FE003ED90EF0EB07FCDA0F3F133E007E903A070FFFF8F8007C -0200EBC1F0EE000300FC6D6C495A604D5A171F95C8FC173E177E177C5F16015F007C4948 -485A1607007E5E003E49495A020E131F003F93C9FC6C49133E260F803C137E0238137C6C -6C485B3901E0E0016CB448485AD93F0049133F90C74848EBFFC0030F903801E0E0933980 -07C0704B4848487E4B153C033E90381F001C4B497F03FC133E4B150F4A48017E7F020314 -7C5D4A4801FCEB0380140F5D4AC7FC5C143E5C14FC5C495A13034948027CEB07005C4948 -147E011F033E5B91C8140E013E153F017E6F5B017C92380F803C4917380001706C5A4992 -3801E0E0496FB45A6C48043FC7FC41497BC34C>II<121EEA7F8012FF13C0A213E0 -A3127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE -19>I<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2 -485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37E -A27F120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00 -E014701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F137813 -7CA27FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA3 -1480A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A -5A5A145A7BC323>II<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A91506 -3C3C7BB447>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 -80120313005A120E5A1218123812300B1C798919>II<121EEA7F -80A2EAFFC0A4EA7F80A2EA1E000A0A798919>IIIIII<150E -151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2 -EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FC -A3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D -5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C -7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E0 -90C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A39 -03F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0 -ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA214 -7C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D ->III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB312 -1EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80 -A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A12 -06120E120C121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB9 -12E0BA12F0A26C18E03C167BA147>61 D63 DI<15074B7EA34B7EA34B7EA34B7EA34B -7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A -6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E -82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB5 -12F8A33D417DC044>IIIIIIIII<011FB512FCA3D9000713006E -5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C49 -5A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>IIII< -B56C91B512F88080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF0170 -7FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7E -A26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A217 -7F173FA2171F170FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD44> -III< -ED7FE0913807FFFE91391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F -49486E7E49486E7E49C86C7E498248486F7E49150300038348486F7EA2000F834981001F -1880A24848EE7FC0A3007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0 -A26C6CEEFF80A3000F18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A -6C6C48486C485A017FD9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD9 -07F1EB03FE902601FDC013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1 -E0DB0001143883711378A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715A -EF01F83D527BBF47>III< -003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703 -A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C -92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA -1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F -7EA28282153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E -6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F -7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>II<003FB712F8A391C7EA1FF013F801E0EC3FE00180 -EC7FC090C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B -5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A49 -48141CA2495A495AA2495A495A173C495AA24890C8FC485A1778485A484815F8A2484814 -0116034848140F4848143FED01FFB8FCA32E3E7BBD38>II<486C13C00003130101001380481303000EEB070048130E0018 -130C0038131C003013180070133800601330A300E01370481360A400CFEB678039FFC07F -E001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>II<1318133C137E13FF3801E7803803C3C03807 -81E0380F00F0001E137848133C48131E48130F00601306180D76BD2D>I96 DII<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007EC -FF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F00 -1F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D9 -01FEC7FC222A7DA828>IIII<167C903903F801FF903A1FFF078F -8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147F -A8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F800 -06CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7 -EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803 -F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5 -123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC0018 -5185BD1C>III<2701F801FE14 -FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000 -FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C -496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC09138 -1E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25B -B3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E -01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C8 -12FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0F -C06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901 -FC03FC00FF90381FFF8091387C0FE09039FDE003F03A03FFC001FC6C496C7E91C7127F49 -EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F -6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512 -F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8 -130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F1403 -6C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7 -FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C1 -00031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I< -90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400 -A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313 -F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C09038800780 -39F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA212011203 -1207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090 -381F8700EB07FEEB01F81B397EB723>IIIIII<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A -5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B48 -4813071207491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I< -B812F0A22C0280982D>II<01F01308D803FC131C48B4133848EB -8070391F3FF3E0393807FFC0486C138048C613000040133C1E0979BC2D>126 -D<001C130E007FEB3F8039FF807FC0A5397F003F80001CEB0E001A0977BD2D>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FR cmbx12 12 77 -/FR 77 128 df11 DI14 D19 D39 DI<12F07E127E7E -6C7E6C7E6C7E7F6C7E6C7E12007F137F80133F806D7EA26D7EA26D7EA2801303A2801301 -A280A27F1580A4EC7FC0A615E0A2143FAE147FA215C0A6ECFF80A415005BA25CA213035C -A213075CA2495AA2495AA2495A5C137F91C7FC13FE5B1201485A485A5B485A485A48C8FC -127E12F85A1B647ACA2C>I44 DIIIIIII<163FA25E -5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14 -F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E -5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01 -FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01 -C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0 -C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0 -123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F -01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F80 -90390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0 -EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039 -F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA412 -7FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C90 -38E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13 -FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15 -014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143F -A2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>III -I<007FBB1280BC12C0A4003F1A80CFFCB0003FBB1280BC12C0A46C1A804A1C7AA657>61 -D<903807FFC0013F13FC48B612804815E0260FF80013F0D81FC0EB3FF848C7EA1FFC4815 -FE01C0130F486C14FF7FA66C485B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF04A13E04A -13801600EC07FC4A5A5D4A5A5D4A5A92C7FCA2147E147CA31478AA91C8FCA814F8EB03FE -497E497FA2497FA56D5BA26D90C7FC6D5AEB00F828467AC535>63 -D<923803FFF0037FEBFF800203B612F0020F15FC913A3FFC000FFFDAFFC0010013C0D903 -FEC8EA1FF0D907F0ED03F8D91FC0ED00FE4948167F017ECAEA1F8049717E4848717E49DA -FF8013034848010F01F06D7E4848013F01FC6D7E92B6FC4848489026C07F80137C494890 -26001FC0133C484948D907E0133E001E49486D6C131E003E49480101141F023F913800FF -E0003C4A82007C017F1880007819074A5AA300F81AC04848491603AB6C6C7F12781B801A -076E7E127C003C133F003E6E1700021F4A5C001E6D6C5B001F6D6C49EBF01E6C6D6C011F -143E6D6CD9C07F6D5A6C6C6C90B5383FFFF8033FD9FC0F5B6C6C010FD9F0035B6C6C0100 -903980007F806D91CBFC6C7E137E6D7E6D6CEF7FC0D907F0EE03FFD903FE043F13009026 -00FFC0913803FFF8DA3FFC49B512C0020FB748C7FC020316E0DA007F02FCC8FC030349C9 -FC4A477AC557>IIIIIIIII -I<0107B7FCA590C7001F1300B3B3A9EA1FE0487E487EA2487EA44B5AA26C48495A495C6C -4813FF6C48485B260FFC0713C06CB65A6C4AC7FCC66C13F8010F138030457DC33A>IIIII<923807FFC092B512FE0207ECFFC0021F15F091267FFE0013FC902601 -FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F7E49486F7E01FF8348 -496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982003F19F8A3007F19FC -49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0A26C6D -4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001075B6D -01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C002004AC8FC030713C04746 -7AC454>II<923807FFC092B512FE0207ECFFC0021F15 -F091267FFE0013FC902601FFF0EB1FFF010701C0010713C04990C700017F49486E7F4948 -6F7E49486F7E49486F7E48496F7E48496F1380A248496F13C0A24819E091C97E4819F0A2 -48487013F8A3007F19FCA249177FA300FF19FEAD007F19FCA36D17FF003F19F8A3001F19 -F06D5EA26C19E06E01FE5B6C912603FF8014C06C6D486D4813804B13E06C9028E01F83F0 -0F13006C903BF01E00F81FFE90267FF83E90387C3FFC90263FFC3C6D485AD91FFE91381E -FFF0D90FFF021F5B6D01FE5D010194C7FC6D6D6CB45A023F90B512F8020703E013020200 -6F1307030713C792C7EA07F8716C130F72131F9538FF80FF96B5FC7114FEA3831AFCA272 -13F81AF0847213E07213C0721300F001FC48587AC454>III<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C7 -1607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA5 -45437CC24E>IIII<007FB6D8C003B61280 -A5D8000F01E0C7D801F8C7FC6D4C5A6F14076D6D5D6D6D4A5A4E5A6D6D143F6E6C92C8FC -6E157E705B6EEBC0016E01E05B4D5A6E6D485A6EEBF80F6E01FC5B4D5A6E6D48C9FC6F6C -5A6F137E5F6F5B815F816F7F81836F7F707E93B5FC844B805D4B8004E77FDB0FC37FED1F -83DB3F817F04007F037E137F4B8002016E7F4B6D7F4A5A4A486D7F020F6E7F4B7F4A4881 -4AC76C7F717F147E4A6F7E0101707F4A8149488349486F7F010F707FB600E00103B612FC -A54E447DC355>I<001FB812FEA59126F8000113FC028015F801FCC75A494A13F04916E0 -495C494A13C0484816805E90C84813005F003E15FF4B5B5F003C5C4B5B5F5D4B5BC85C4B -90C7FC5D5E4B5A5C5E4A5B5C5E4A5B5C5E4A90C8FC5C5D4A48140F5B5D495B5B4949141F -5D49161E495B92C8FC49163E495A5C48177E485B4A15FE481601484914034A140748160F -4849143F91C8EAFFFC48150FB9FCA538447AC344>90 D<903801FFE0011F13FE017F6D7E -48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090 -C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A5B -127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF8 -6CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48B4FC4813804813C0A24813E0A56C13 -C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520> -IIII<90277F8007FEEC0FFCB590263FFFC09038 -7FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC -0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5D -B3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF8092B512E002 -8114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35C -B3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE00 -0301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318 -F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C3 -14C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>II<90387F807FB53881FFE0028313F0028F13F8ED -8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3 -A5B612E0A5272D7DAC2E>I<90391FFC038090B51287000314FF120F381FF003383FC000 -49133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015 -F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F15 -0FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E0 -26E007FEC7FC232F7CAD2C>IIIIIII<001FB71280A49026FC001F1300 -01E0495A5B49495A90C7485A48495B123E4A5B4A5B003C495BA24A90C7FC4A5A4A5AC7FC -4A5A495B495BA2495B499038800780491300A2495A4948130F49481400A2485B48495B48 -5BA248495B4890C75A48485C15034848EB1FFEB7FCA4292C7DAB32>I127 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FS cmbx12 17.28 24 -/FS 24 118 df39 -D46 D<92B5FC020F14F8023F14FF49B712C04916F0010FD9 -C01F13FC90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0486D -826E806E82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A614C91 -C7FC604C5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F817FF -91C7003F13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A31AC0 -EA03FCEA0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485BD81F -F85F000F5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90B65A -011F16F0010716C001014BC8FCD9001F14F0020149C9FC426079DD51>51 -D55 D<4DB5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F013 -3F030F05FC137F033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C091 -38007FE74A91C9001FB5FC023F01FC16074A01F08291B54882490280824991CB7E494984 -49498449498449865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348 -491A1FA44899C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C -801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F -6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7F -F06E02FF913803FFE0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680 -DC007F02F8C9FC050191CAFC626677E375>67 D77 D80 D85 DI<9138 -03FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF8 -01017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA7 -4BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC48 -5B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF -806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F0103 -02F001011400D9001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFF -F8040FEBFF80047F14F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC00107 -7F93C76C7F4B02007F03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FC -A41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB4 -02075B4A6C6C495B9126F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F8 -4A6C15E091C7001F91C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0 -023F15FC91B77E01039039FE001FFF4901F8010113804901E0010713C04901804913E001 -7F90C7FC49484A13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7 -FC485BA4B5FCAE7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E0 -6C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC0100 -91B512F0023F5D020F1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512 -FC020FECFF80023F15E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F4949 -6D7F4990C76C7F49486E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2 -B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C -7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026 -FFC01F90C7FC6D6C90B55A021F15F8020715E0020092C8FC030713F041437CC14A>I103 D105 D<903807FF80B6FCA6C6FC7F7FB3A90503B61280A6DD003F -EB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3FF04D5A4D5A4C90 -C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF7F92B5FC838403 -FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2717F717F717FA2 -717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>107 -D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>I<902607FF80EB1F -FFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6D -D987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007 -B71280A651417BC05A>110 D<923807FFE092B6FC020715E0021F15F8027F15FE494848 -C66C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E4849 -6F13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C -19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B -13006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F -15FC020715E0020092C8FC030713E048437CC151>I114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE00148 -90C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7 -FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680 -010F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C -163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB -0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140 ->II<902607 -FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E -7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA00 -3F018002F0C7FC51427BC05A>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FT cmbx12 24.88 62 -/FT 62 128 df[<96261FFFFE93383FFFC0061FB600F0020FB512F84DB700FE91B612FE -051F9326FF80076F7E94B9D8E01F16E00407DEF87F82041F06FDB87E047F9126FC000F90 -B6D8FC037F4BB600800100DCC0077F030702F8C8003FDB000F7F4B02E092B600FC5B033F -02804A4B16804B49C804E05B92B5484B5D4A02F04B4D14C04A4A614A4A4B92C7FC4A5C66 -4A91C9FC4A5B664A49761480A27571140091B5506E5B4C827B5B75050113F0759438007F -C09FC8FCB3A4C212FCA9C702FCCA02FCCBFCB3B3B3B3A2003FB800F0013FB9FCA9>146 -144 123 271 136 11 D[<96380FFFFE060FB612E04DB712FC051F16FF94B912C0040784 -041F18F8047F9126FC001F7F4BB6008001017F030702F8C8EA3FFF4B02E0030F7F033F02 -804B7F4B49C9127F92B54893B57E4A02F05D4A4A4B804A4A5D4A4A84634A91C9FC4A5BA2 -4A5B5180755C91B5FC5EA3755CA2755C755C755CE23FFEC8FCF40FF899CAFCAF083FB612 -FCBFFCA9C702FCC912038787B3B3B3B2003FB800F0013FB812F0A9>116 -144 123 271 129 I[82 70 120 270 120 34 D[33 -70 111 270 65 39 D[<18F8EF01FC1707170FEF1FF8EF3FF0EFFFE04C13C04C13804C13 -004C5A161F4C5A4C5A4C5A4B5B5D4B5B5F5D4B90C7FC4B5A157F5E4B5A5C4A5BA24A5B5C -5E5C5E5C4A90C8FCA24A5AA25B5D5B5D5BA2495BA25B5D5BA25D5BA390B55AA25AA292C9 -FC5AA35C5AA35A5CA35AA35CA25AA65A5CA8B5FCB3A87EA8807EA67EA280A37EA3807EA3 -7E80A37E81A27EA26D7FA37F81A27F817FA26D7FA27F817F817FA26E7EA26E7F80828082 -806E7FA26E7F806F7E82153F6F7E6F7F81836F7F816F7F707E707E707E160F707E701380 -7013C07013E0EF3FF0EF1FF8EF0FFC17071701EF00F8>54 206 106 -282 90 I[<127C12FE6C7E7F6C7E6C7EEA1FFC6C7E6C7E6C7F6C7F806C7F6D7E6D7E6D7E -806D7F7F816D7F6D7F817F6E7E816E7EA26E7F82808280826E7FA26E7FA28280828183A2 -6F7FA2838183A28183A36F7FA283A28183A3811880A318C081A318E0A382A218F0A618F8 -82A818FCB3A818F8A85E18F0A618E0A293B5FCA318C0A35D1880A318005DA35F5DA25FA2 -4B5BA35F5DA25F5D5FA24B5BA294C7FC92B5FC5E5C5EA24A5BA24A5B5E5C5E5C5E4A90C8 -FCA24A5A5D4A5A5B5D495B495B5D5B4990C9FC5C495A495A495A485B5C485B4890CAFC48 -5A485AEA3FF0485A485A5B48CBFC127C>54 206 115 282 90 I -45 D[<1CFC517E517E1D8063A263A3511300A2515AA3515AA2515AA3505BA2505BA3505B -A2505BA35090C7FCA2505AA3505AA2505AA34F5BA24F5BA34F5BA26361A24F90C8FCA34F -5AA24F5AA34F5AA24E5BA34E5BA24E5BA34E5BA24E90C9FCA34E5AA24E5AA34E5AA24D5B -A34D5BA2615FA24D5BA34D90CAFCA24D5AA34D5AA24D5AA34C5BA24C5BA34C5BA24C5BA3 -4C90CBFCA24C5AA34C5AA24C5AA34B5BA25F5DA24B5BA34B5BA24B90CCFCA34B5AA24B5A -A34B5AA24A5BA34A5BA24A5BA34A5BA24A90CDFCA34A5AA24A5AA34A5AA25D5BA2495BA3 -495BA2495BA34990CEFCA2495AA3495AA2495AA3485BA2485BA3485BA2485BA34890CFFC -A2485AA3485AA2485AA35BA25B127F6C5A6C5A>89 207 115 282 -116 47 D[<93381FFFF00303B612E0033F15FC4AB812C0020717F0021F17FC027F17FF49 -BA12C0010719F049DA800F814901F8C715FE4901C0021F804948C800078149486F814801 -F00300814849708048018070804890CA6C806E70804813F002FC7080486D70158080486E -6F15C0817315E081B6836F19F0A3861DF8A56C5CA26C5CA26C5C6C91CAFC6C5B000113F8 -26007FE01AF090CCFC62A21DE0A297B6FC1DC0A24F1580A24F150064A24F5C64614F5C64 -4F5C644F91C7FC96B55A4E5C634E5C4E5C4E5C634E49C8FC4E5B4E5B95B55A4D14C0624D -91C9FC4D13FC4D5B4D5B4D13C04D5B94B5CAFC4C13FC4C5B4C5B4C49ED0FF84C13804C90 -C9FC4C5A4C48EE1FF04B5B4B13E04B5B4B5B4B90CAFCDB3FFC173F4B4818E04B5A4A5B4A -49177F4A90CBFC4A4818FF5D4A485F4A48053F13C04ABBFC91BCFC5B5B5B5B491B805B5B -90BDFC5A5A5A5A481C005A5ABEFCA464A4>93 135 117 262 116 -50 D58 -D[159 145 120 272 -176 65 D[143 142 120 269 165 I[<0803B500C0EE01F00703 -B600FEEE03F8077FDBFFE015070607B800FC150F063F05FF151F4DBA00E0143F050F07F8 -147F053F07FE14FF94BC5B04039326F8000FECC003040F4BC86CEBF007043F03C0030F6D -5A93B648C900036D5A4B03F09339007FFF3F030703C0051F90B5FC4B92CB7E033F02FC18 -034B02F08492B648844A0380193F4A92CD7E4A4A864A4A864A02F0864A4A864A8991B65A -494B874992CF7E4C885B494A885E498B494A88A2495C8D90B65A8D5A5E48217FA24892D1 -FC223FA25A5DA248211FA3485CFA0FF09FC7FCA25AA45DA3B6FCB27EA381A47EA46C80FA -07F0FA0FF87EA2817EA36C6F1D1F23F07E827E223F6D6E1EE0A26D6E1D7F23C06D6E1DFF -7F705213806D806D55130070646D6F646D6F515A6E6E1B1F6E6E515A6E6E515A6E6E1BFF -6E6E505B6E6E505B6E6F4F5B6E03E04F90C7FC6F6EF13FFE6F02FC4F5A030F02FF4E485A -6F03C005075B030103F0051F5B6F03FE057F1380043FDAFFE00303B5C8FC040F03FE033F -13FC0403DBFFF80107B55A040093B812E0053F1A80050F4FC9FC050119F8DD003F18C006 -0795CAFCDE007F16F0070393CBFCDF000314C0>141 146 115 271 -168 I[156 -142 120 269 178 I[138 141 120 268 153 I[127 141 120 268 146 I[<0803B500C0EE01F00703B600FE4C7E077FDB -FFE015070607B800FC150F063F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94 -BC5B04039326F8000FECC003040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A -4B03F09339007FFF3F030703C0051F90B5FC4B92CB7E033F02FC18034B02F08492B64884 -4A0380193F4A92CD7E4A4A864A4A864A02F0864A4A864A8991B65A494B874992CF7E4C88 -5B494A885E498B494A88A2495C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA24821 -1FA3485C7C5A9FC9FCA25AA45DA3B6FCB27EA381A20A0FBB12F8A27EA46C80A36C98C96C -02F8C7FCA2817EA36C81A27E827E827FA26D80A26D806D80A26D806D80A26D816D816E80 -6E806E806E6E97B6FC6E806E806E03C0606E816F02F8606F02FE60030F6E606F03E0173F -030103F85F6F03FF933801FFFC043F03E00307497E040F03FF033F497E040304FC0107B5 -EAE00F040093B8487E053FF20001050F07FCEB007F050107F0141FDD003F06C014070607 -95C81201DE007F04F8ED00700703048093C8FCDF000302E0CDFC>157 -146 115 271 183 I[165 142 120 269 182 I[74 142 122 269 87 I[163 142 120 269 182 75 -D[121 142 120 269 140 I[203 -142 120 269 220 I[165 142 120 269 182 I[<97B512F0077FECFFE00607B712FE -067FEEFFE00503B912FC051FF0FF80057F19E00403BB12FC040F9226E0007F14FF043F02 -FCC7000315C04C02E0DA007F804BB60080031F14F8030702FCC9000314FE4B4A70804B02 -E0706C80037F0280051F14E092B6CB6C804A4A72804A4A72804A02F00600804A4A737F4A -4A73804A8B4A4A738091B6CD6C80494A7480A2494A7480494A7480498C4C86498D4C8749 -8D494A7580A290B68B4C87488EA24892CF6C80A3488E4B88A2488EA3484A761580A34823 -C0A5484A7615E0A7B621F0B36C23E0A26F64A56C23C0A46F646C2380A36C23006F64A26C -6AA270636C6AA26C6A70636C6A70636D69A26D6E98B65AA26D6E505DA26D6E5092C7FC6D -6870626D6E505C6D686D6F4F5C6E6E4F5C6E6E4F5CA26E6E96B65A6E6E4E92C8FC6E6E4E -5C020102FF060F14F86E6F4D5C6F6E4D5C6F02F094B65A030F6E4C92C9FC6F02FE04075C -03016E6C031F14F86F03F092B65A043F02FE020715C0040FDAFFF090B7CAFC040392B812 -FC04001AF0051F198005074ECBFCDD007F17E0060F94CCFCDE007F15E0070002F0CDFC> -148 146 115 271 175 I[137 142 120 269 159 -I[<97B512F0077FECFFE00607B712FE067FEEFFE00503B912FC051FF0FF80057F19E004 -03BB12FC040F9226E0007F14FF043F4AC7000715C04C02E0DA007F804BB60080031F14F8 -03074AC9000714FE4B02F80401804B02E0706C80037F0280051F14E092B6CB6C804A4A72 -804A4A72804A02F00600804A4A737F4A8B4A4A73804A4A738091B6CD6C80494A7480A249 -4A7480494A7480498C4C86498D4C87498D494A7580A290B6487580A2488E93CF7E488EA2 -4B88488EA3484A7680A3482380A24B884823C0A54823E0A34B88A4B621F0B36C23E0A46F -64A36C23C0A56C23806F64A26C2300A36C6E525CA36C6E525CA26C6AA26C6F515CA26D6E -515CA26DDE07FE617092263FFFC05D6D95B500F06070020302FC92B6FC6D6E020F6E4A92 -C7FC6D4D6E6C5E704A6F5B6D94267FFC036D5E6D6E9227E0007FF0495C6D6EDAFF80D91F -F8495C6E6E4890C700074A5C6E4C6E6C5E05C0496F5B6EDAE0036F6C495C6E02F0496E91 -B6C8FC6E02F806815C020102FCDD7FC314F86E02FF06CF5C6F028370B65A6F02E362030F -DAF3FC6F92C9FC6F02FD610301DAFFFE18F86F6F037F5C043F03C00103B612C0040F03F0 -017F92CAFC040392B812FC04001AF0051F198005071EF0DD007F72ED01F8060F84DE007F -15E30700DAF0037F97C880776D1503A279150779150F7702C0141F7A147F0EF8903803FF -F00EFF133F9EB6FC8AA2A112E0A28AA2A112C08AA2A112808AA112008A6B8A6B8A6B785E -795D6B795D7992C7FC795C0D035C7914F0E5003F13C0E607FEC8FC>149 -184 115 271 175 I[163 -144 120 269 173 I[<93260FFFF8163E4BB600E0153F031F03FE5D037FDBFFC05C0203 -B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE000FECF01F010302C0D9007F6D5A -4991C800076D5A4901FC030090B6FC4901F0163F4949160F4901808290B5170192CBFC48 -49844849181F87484984A2484984874886A248498588A24887A388A2B58680A36E85A280 -A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15FEEEFFE017FF6C17F0F0FF806C -18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D1AE0886D866D866D1AFF6D876D -87010087806E86020F86020386020086153F030F851501DB001F19801601DC000F18C0EF -007F060717E0F0003F070316F0F1003F1A0F080315F81A00871B1F877514FCA287007F86 -486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1CE0A27F6D5013C0A26E1B806E96 -B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D5B03FE057F5BDBFFC093B55A04 -F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9F80792B75A496C19F049C66149 -011F18804901074DC8FC90C817F848031F16C048030003FCC9FC007C04011480>102 -146 115 271 129 I[<000FC312F8A6488EA304C0C7001F4AC7120103F8C8F0000F03C0 -1C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA757EA249203F49201FA349200F -A2492007A4492003007F8EA4498CA848487A1380A6CC99C7FCB3B3B3B3AA030FBD12FCA9 ->145 140 120 267 162 I[162 144 120 269 179 -I[165 -144 123 269 176 I[229 144 123 269 240 I[<001FBB92BA7EA9C893CB003F92C9FCE5007F13806F6FDE -1FFECAFC6F6F4E5A207F6F6F4E5A6F6F616F515B735F6F6F4D5B6F6F615590CBFC6F6F5F -706F5F555A706F4C5A706F16FF706F5F545B706F5D706F4B5B68706F4B90CCFC706F5D71 -6F4A5A67716F4A5A716F14FF535B716F5D716F495B715F75495B716F92CDFC716F495A1D -3F726F485A7203C05B535A7215E17203F35B7203FB5B99B55A847294CEFC65725E85735D -65735D7381A273817381858973817481A274817481A27481748150816250818A6297B87E -4F838B4F13DF4F01CF814F0187811B074F486C81073F6D814F487E50824F486D814E6F81 -4E5B506D814E496D81604E90C76C814F6E814E486E81187F4F6E814E486F814D5B4D7181 -4F6F814D496F815F4D90C96C814E70814D5A057F71814D4870814E834C49874C73814C49 -7181604C90CB6C814C73814C5A4D72814C48728104FF73814B5B4D73814B4973815D4B49 -738194CD6C814B487481153F92B57481027F02FE7381BA00C00303BB12E0A9>163 -142 122 269 176 I[169 -142 125 269 176 I[<0007C012C020E0A720C04DC9003F158094CAFC04F04D15004803 -C094B65A4BCBFC03F84D5D4B4D5D15C04B4D5D92CB485D5C4A4E5D4A4E5D5C4A4E92C7FC -664A95B6FC4A4D5D6691CB5A505D664960505D6649605092C8FC65484895B6FC4F5D6561 -4F5D65495F4F5D65614F92C9FC64CCB6FC4E5DA24E5D4E5DA24E5D4E5DA24E5D4E92CAFC -A295B65A4D5DA24D5D635F4D5D635F4D5D98CBFC5F94B65A625E4C5D625E4C5D625E4C5D -97CCFC4CF21FF093B65A615D4B5D614B1B3F4B4B18E0A24B5D4B5DA24B92CBFC92B65A1F -7F4A5D4A5DA24A5D4A4B18FFA24A5D4E19C04A634A92CBFC4D6091B6FC495D4D605B494B -604D605B494B604D605B4992CCB512804C6090B661484B180F4C604864484B95B6FC4C17 -03481B1F484B94B7FC4C1607480703B8FC4892BDFCA2C1FC2000A67E>116 -142 115 269 142 I<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE010772 -7E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B570806F6F -8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CAFC90 -CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE000023F02 -FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C485C48 -5C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C183F -6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD93FF8 -17806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F03F0 -140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[113 144 121 270 -129 I<94387FFFF0041FB612E093B712FE0307707E031F17F092B97E4A18FE020784021F -9126F8000F14804A0280010014C04A49C74814E049B500F85C494A17F0494A5C495C494A -4A14F84991C8FC5D495B90B5FC5D5A485C7314F05A4B6F14E05A7314C0487214804B9338 -3FFE00F20FF84896C8FCA4485CA5B6FCB07EA281A37EA36C80A37E6F18FE6CF201FFA26C -6E5F1CFE6C801B076C6EEF0FFC6D7F70EE1FF86DF13FF06D6E167F6D6EEEFFE06D02F84B -13C06D6E5D6D02FF030F13806D03C0023F1300023F02F0903801FFFC6E9126FF801F5B02 -0792B65A6E18C0020060033F4CC7FC030716F8030016C0041F4AC8FCDC007F13C0585F78 -DD67>I[113 144 -120 270 129 I<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C04AB912F0 -0207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E804902C06E -6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B198048855D481CC0 -86481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA77EA4817E -A37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7FF4FFC06D -6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E002035B6E -02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E003011780DB00 -3F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<95383FFF80050FB512F094B612 -FE040781041F16C0047F824BB87E0307DAF8077F031FDAC00F7F4B49C6487F4B495B92B5 -00F0814A4A5B4A5C4A93B612805F4A91C7FC5C5E5C5E5C731400A24C6E5B91B56F5BA273 -5B070313E00700138097C8FCB3A4BA12F8A9C702FCCBFCB3B3B3B3A2003FB9FCA9>81 -144 121 271 71 II[ -114 143 119 270 129 I[49 144 -119 271 65 I[112 -143 121 270 123 107 D[50 143 119 270 65 III<94381FFFF00407B6 -12C0047F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E0 -4A49C880027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C8049497080 -4949717F49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0 -A3484A7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1D -C0A26C6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B -5C6D02F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C0207 -91B812C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01 -F0CAFC675F7ADD74>I -III<92261FFFF814F80203B638C001FC023FEDFC0791B8 -121F010317FF130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F48491503484981 -4890CAFC197F4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC -14FC14FF15F06CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C -727E6C856D84011F846D841303010084023F83140F020183EC001FDB007F16801603DC00 -0F15C01700183F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D -5F7F1B006E5E6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B5 -5A01F991B7C7FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C -020349C9FC4B5F78DD5C>I[ -72 132 124 258 90 IIII<007F -B86C49B712FEA9C792C9000F02C0C7FC6E6E030101F0C8FC715F6E6E4B5B6E6E4B5B6E4E -90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E4E5A6F6E495B72495B6F6E495B6F806F6E49 -90CAFC6F4C5A72495A6F6E495A6F6E495A6F03815B705E7014C307E75B7091B5CBFC705D -705D705D6282705D715C8386718071807180837180864D814D815F4D81874D814D81DDFF -F3804C13E14C01C1804C0180814E6C804C6E804C487F4C48824C486D804C486D804B496D -804B497F73804B49834B90C86C804B486F804B48814B486F804B48844C6F804A71804A49 -6F804A49814A90CA814A487180023F7280010FB500E07080B8031FB812E0A9735C7CDB7B ->I<007FB800C04AB71280A9D800034ACA000791C7FC6D080013F0775A6D6E4E5AA26E6E -6064836E4F90C8FC836E4F5A836E4F5AA26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A -846F4D5B846F4D90C9FCA26F6E4A5AA26F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E -4A5AA2706E5C627002C091CAFC6219E0704B5A19F0704B5AA2706E485AA2706E485AA270 -02FE5B1A7F19FF704B5AA2715DA27192CBFCA2715CA2715CA3715CA2715CA2715CA2715C -A2725BA27290CCFCA3725AA2725AA24E5AA24E5AA261187FA24E5AA24D5B13FE2603FF80 -4A90CDFC000F13E0486D4A5A487F486D4A5AA260B56C141F4D5AA24D5A17FF604C5B4A49 -90CEFC6C5D4C5A6C49EB3FFC4A495A6C4948485A9026FE80075B270FFFC03F5B6C90B6CF -FC6C5D6C15F86C6C5C011F14C0010749D0FC9038007FE071857CDB7B>I<0003BC12F81C -FCA51CF80480C7123F03F0C84814F048028018E04AC9B612C04A5D02F04B15804A19004E -5C4A5D4A4B5C6391C9485C604993B65A634D5D495D98C7FC4D5C4D5C000F5E62494B5C4D -5C94B6FC624C5D4C92C8FC5EC95D4C5C5E4C5C614C5C93B6FC4B5D614B92C9FC5D4B5C60 -4B5C5D4B4AEC07FC6092B65A5C604A92C8EA0FF84A5C5C5F4A5C4A5C4A181F5F91B65A49 -5D491AF094C9123F495C5B494A167F5E494A16FF496090B65A4C5D484B5D484F13E04892 -C95A4B5E484A93B5FC481803484A151F4B0203B6FC4891BAFCBDFCA21CC0A47E565C7ADB -67>II[73 28 107 271 116 127 D E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 0 0 a @beginspecial @setspecial @endspecial 241 -299 a @beginspecial @setspecial @endspecial 165 x @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial @beginspecial -@setspecial @endspecial @beginspecial @setspecial @endspecial -@beginspecial @setspecial @endspecial @beginspecial @setspecial -@endspecial @beginspecial @setspecial @endspecial 1234 -2036 a FT(REDUCE)1361 2266 y FS(User's)53 b(and)674 2449 -y(Con)l(tributed)e(P)l(ac)l(k)-9 b(ages)53 b(Man)l(ual)1342 -2679 y(V)-13 b(ersion)52 b(3.7)1279 3145 y FR(An)m(thon)m(y)37 -b(C.)h(Hearn)1282 3262 y(San)m(ta)h(Monica,)e(CA)1273 -3378 y(and)i(Co)s(demist)d(Ltd.)1141 3604 y(Email:)48 -b(reduce@rand.org)1383 4070 y(F)-9 b(ebruary)39 b(1999)p -eop -%%Page: 2 2 -2 1 bop 664 299 a @beginspecial @setspecial @endspecial -2200 x FQ(Cop)m(yrigh)m(t)1116 2496 y(c)1091 2499 y FP(\015)p -FQ(1999)32 b(An)m(thon)m(y)f(C.)f(Hearn.)41 b(All)29 -b(righ)m(ts)h(reserv)m(ed.)664 2724 y(Registered)e(system)h(holders)d -(ma)m(y)j(repro)s(duce)e(all)g(or)i(an)m(y)f(part)g(of)g(this)g -(publication)664 2837 y(for)42 b(in)m(ternal)f(purp)s(oses,)j(pro)m -(vided)d(that)i(the)f(source)h(of)f(the)h(material)e(is)h(clearly)664 -2950 y(ac)m(kno)m(wledged,)32 b(and)d(the)i(cop)m(yrigh)m(t)g(notice)f -(is)g(retained.)p eop -%%Page: 3 3 -3 2 bop 241 299 a @beginspecial @setspecial @endspecial -2943 w FQ(3)1554 555 y FR(Preface)241 718 y FQ(This)23 -b(v)m(olume)j(has)f(b)s(een)g(prepared)f(b)m(y)i(Co)s(demist)e(Ltd.)39 -b(from)25 b(the)g(L)2609 701 y FO(A)2648 718 y FQ(T)2699 -737 y(E)2750 718 y(X)g(do)s(cumen-)241 831 y(tation)41 -b(sources)f(distributed)e(with)i(REDUCE)g(3.7.)73 b(It)41 -b(incorp)s(orates)f(the)g(User's)241 944 y(Man)m(ual,)28 -b(and)g(do)s(cumen)m(tation)g(for)g(all)e(the)j(User)f(Con)m(tributed)e -(P)m(ac)m(k)-5 b(ages)31 b(as)d(a)h(sec-)241 1057 y(ond)34 -b(P)m(art.)57 b(A)35 b(common)h(index)e(and)g(table)i(of)f(con)m(ten)m -(ts)i(has)e(b)s(een)g(prepared.)54 b(W)-8 b(e)241 1170 -y(hop)s(e)38 b(that)i(this)e(single)f(v)m(olume)i(will)d(b)s(e)j(more)g -(con)m(v)m(enien)m(t)h(for)e(REDUCE)h(users)241 1282 -y(than)26 b(ha)m(ving)f(t)m(w)m(o)j(unrelated)d(do)s(cumen)m(ts.)39 -b(P)m(articularly)24 b(in)h(P)m(art)i(2)g(the)f(text)h(of)f(the)241 -1395 y(authors)32 b(has)h(b)s(een)f(extensiv)m(ely)g(edited)g(and)g(mo) -s(di\014ed)f(and)h(so)h(the)g(resp)s(onsibilit)m(y)241 -1508 y(for)d(an)m(y)h(errors)e(rests)i(with)e(us.)241 -1671 y(P)m(arts)e(I)g(and)f(I)s(I)s(I)f(w)m(ere)i(written)f(b)m(y)g(An) -m(thon)m(y)h(C.)g(Hearn.)40 b(P)m(art)27 b(I)s(I)f(is)g(based)g(on)h -(texts)241 1784 y(b)m(y:)241 1897 y(W)-8 b(erner)33 b(An)m(t)m(w)m -(eiler,)h(Victor)f(Adamc)m(hik,)h(Joac)m(him)f(Ap)s(el,)g(Alan)f -(Barnes,)i(Andreas)241 2010 y(Bernig,)28 b(Y)-8 b(u.)28 -b(A.)g(Blink)m(o)m(v,)g(Russell)d(Bradford,)j(Chris)d(Cannam,)j(Hub)s -(ert)f(Caprasse,)241 2123 y(C.)39 b(Dicrescenzo,)j(Alain)c(Dresse,)k -(Ladisla)m(v)c(Drsk)-5 b(a,)42 b(James)d(W.)g(East)m(w)m(o)s(o)s(d,)j -(John)241 2236 y(Fitc)m(h,)58 b(Kerry)51 b(Gask)m(ell,)57 -b(Barbara)c(L.)e(Gates,)59 b(Karin)51 b(Gatermann,)58 -b(Hans-Gert)241 2348 y(Gr\177)-45 b(ab)s(e,)29 b(Da)m(vid)g(Harp)s(er,) -g(Da)m(vid)h(Hartley)-8 b(,)30 b(An)m(thon)m(y)g(C.)f(Hearn,)g(J.)g(A.) -h(v)-5 b(an)29 b(Hulzen,)241 2461 y(V.)47 b(Ilyin,)i(Stanley)d(L.)h -(Kamen)m(y)-8 b(,)51 b(F)-8 b(ujio)47 b(Kak)m(o,)52 b(C.)46 -b(Kazaso)m(v,)53 b(W)-8 b(olfram)47 b(Ko)s(epf,)241 2574 -y(A.)21 b(Kryuk)m(o)m(v,)i(Ric)m(hard)d(Lisk)-5 b(a,)23 -b(Kevin)d(McIsaac,)k(Malcolm)d(A.)h(H.)f(MacCallum,)h(Her-)241 -2687 y(b)s(ert)33 b(Melenk,)h(H.)g(M.)g(M\177)-45 b(oller,)34 -b(Winfried)d(Neun,)j(Julian)d(P)m(adget,)36 b(Matt)f(Rebb)s(ec)m(k,)241 -2800 y(F.)52 b(Ric)m(hard-Jung,)j(A.)d(Ro)s(diono)m(v,)k(Carsten)51 -b(and)g(F)-8 b(ranzisk)j(a)52 b(Sc)m(h\177)-45 b(ob)s(el,)55 -b(Rainer)241 2913 y(Sc)m(h\177)-45 b(opf,)50 b(Stephen)c(Sco)m(w)m -(croft,)52 b(Eb)s(erhard)45 b(Sc)m(hr)s(\177)-48 b(ufer,)49 -b(F)-8 b(ritz)47 b(Sc)m(h)m(w)m(arz,)52 b(M.)47 b(Spiri-)241 -3026 y(dono)m(v)-5 b(a,)40 b(A.)d(T)-8 b(arano)m(v,)40 -b(Lisa)c(T)-8 b(emme,)40 b(W)-8 b(alter)38 b(Tietze,)h(V.)f(T)-8 -b(omo)m(v,)40 b(E.)d(T)-8 b(ournier,)241 3139 y(Philip)54 -b(A.)k(T)-8 b(uc)m(k)m(ey)g(,)67 b(G.)1216 3116 y(\177)1205 -3139 y(U\030)-40 b(coluk,)64 b(Mathias)58 b(W)-8 b(arns,)65 -b(Thomas)58 b(W)-8 b(olf,)65 b(F)-8 b(rancis)241 3252 -y(J.)30 b(W)-8 b(righ)m(t)31 b(and)f(A.)g(Y)-8 b(u.)31 -b(Zhark)m(o)m(v.)2660 3414 y(F)-8 b(ebruary)30 b(1999)241 -3527 y(Co)s(demist)f(Ltd)241 3640 y(\\Alta",)i(Horsecom)m(b)s(e)h(V)-8 -b(ale)241 3753 y(Com)m(b)s(e)30 b(Do)m(wn)241 3866 y(Bath,)h(England)p -eop -%%Page: 4 4 -4 3 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(4)p eop -%%Page: 5 5 -5 4 bop 241 299 a @beginspecial @setspecial @endspecial -970 x FT(Con)-6 b(ten)g(ts)241 1764 y @beginspecial @setspecial -@endspecial FR(I)112 b(REDUCE)36 b(User's)i(Man)m(ual)1494 -b(29)241 2018 y @beginspecial @setspecial @endspecial -FN(Abstract)2484 b(33)241 2271 y @beginspecial @setspecial -@endspecial(1)84 b(In)m(tro)s(ductory)35 b(Information)1582 -b(37)241 2525 y @beginspecial @setspecial @endspecial(2)84 -b(Structure)35 b(of)g(Programs)1717 b(43)377 2688 y @beginspecial -@setspecial @endspecial FQ(2.1)94 b(The)30 b(REDUCE)g(Standard)g -(Character)g(Set)h(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)93 b(43)377 2850 y @beginspecial @setspecial @endspecial(2.2)h(Num)m -(b)s(ers)27 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(44)377 3013 y @beginspecial @setspecial @endspecial(2.3)h(Iden)m -(ti\014ers)59 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(45)377 3176 y @beginspecial @setspecial @endspecial(2.4)h(V)-8 -b(ariables)90 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(46)377 3339 y @beginspecial @setspecial @endspecial(2.5)h(Strings)34 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(47)377 3501 y @beginspecial @setspecial @endspecial(2.6)h(Commen)m -(ts)33 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(48)377 3664 y @beginspecial @setspecial @endspecial(2.7)h(Op)s -(erators)57 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(48)241 3918 y @beginspecial @setspecial @endspecial -FN(3)84 b(Expressions)2213 b(53)377 4080 y @beginspecial -@setspecial @endspecial FQ(3.1)94 b(Scalar)30 b(Expressions)69 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(53)377 4243 y @beginspecial -@setspecial @endspecial(3.2)h(In)m(teger)32 b(Expressions)h(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)93 b(54)377 4406 y @beginspecial -@setspecial @endspecial(3.3)h(Bo)s(olean)31 b(Expressions)62 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)93 b(55)377 4568 y @beginspecial -@setspecial @endspecial(3.4)h(Equations)56 b(.)46 b(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)93 b(57)377 4731 y @beginspecial -@setspecial @endspecial(3.5)h(Prop)s(er)29 b(Statemen)m(ts)j(as)f -(Expressions)91 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)93 b(58)1712 5187 y(5)p eop -%%Page: 6 6 -6 5 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(6)2428 b FM(CONTENTS)664 555 y @beginspecial @setspecial -@endspecial FN(4)85 b(Lists)2532 b(59)801 718 y @beginspecial -@setspecial @endspecial FQ(4.1)94 b(Op)s(erations)29 -b(on)h(Lists)24 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(59)1010 -881 y @beginspecial @setspecial @endspecial(4.1.1)106 -b(LIST)27 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(60)1010 1043 y @beginspecial @setspecial @endspecial(4.1.2)106 -b(FIRST)29 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(60)1010 1206 y @beginspecial @setspecial @endspecial(4.1.3)106 -b(SECOND)59 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(60)1010 -1369 y @beginspecial @setspecial @endspecial(4.1.4)106 -b(THIRD)73 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(60)1010 -1532 y @beginspecial @setspecial @endspecial(4.1.5)106 -b(REST)59 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(60)1010 1694 y @beginspecial @setspecial @endspecial(4.1.6)106 -b FL(:)30 b FQ(\(Cons\))h(Op)s(erator)84 b(.)46 b(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(60)1010 1857 y @beginspecial @setspecial @endspecial(4.1.7)106 -b(APPEND)55 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(61)1010 -2020 y @beginspecial @setspecial @endspecial(4.1.8)106 -b(REVERSE)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(61)1010 -2182 y @beginspecial @setspecial @endspecial(4.1.9)106 -b(List)29 b(Argumen)m(ts)i(of)f(Other)g(Op)s(erators)23 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(61)1010 -2345 y @beginspecial @setspecial @endspecial(4.1.10)61 -b(Ca)m(v)m(eats)32 b(and)e(Examples)39 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(61)664 -2599 y @beginspecial @setspecial @endspecial FN(5)85 -b(Statemen)m(ts)2235 b(63)801 2762 y @beginspecial @setspecial -@endspecial FQ(5.1)94 b(Assignmen)m(t)30 b(Statemen)m(ts)88 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)93 b(64)1010 2924 y @beginspecial @setspecial -@endspecial(5.1.1)106 b(Set)30 b(Statemen)m(t)d(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)93 b(65)801 3087 y @beginspecial @setspecial -@endspecial(5.2)h(Group)29 b(Statemen)m(ts)84 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)93 b(65)801 3250 y @beginspecial -@setspecial @endspecial(5.3)h(Conditional)28 b(Statemen)m(ts)84 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)93 b(66)801 3412 y @beginspecial @setspecial -@endspecial(5.4)h(F)m(OR)30 b(Statemen)m(ts)72 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(67)801 3575 y @beginspecial -@setspecial @endspecial(5.5)h(WHILE)30 b(.)15 b(.)h(.)f(DO)63 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(69)801 3738 -y @beginspecial @setspecial @endspecial(5.6)h(REPEA)-8 -b(T)30 b(.)15 b(.)h(.)f(UNTIL)57 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(70)801 3901 y @beginspecial @setspecial @endspecial(5.7)h(Comp)s -(ound)28 b(Statemen)m(ts)42 b(.)j(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(70)1010 -4063 y @beginspecial @setspecial @endspecial(5.7.1)106 -b(Comp)s(ound)28 b(Statemen)m(ts)j(with)f(GO)g(TO)51 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(72)1010 -4226 y @beginspecial @setspecial @endspecial(5.7.2)106 -b(Lab)s(els)29 b(and)g(GO)i(TO)e(Statemen)m(ts)52 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(73)1010 -4389 y @beginspecial @setspecial @endspecial(5.7.3)106 -b(RETURN)30 b(Statemen)m(ts)72 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(73)664 4642 y -@beginspecial @setspecial @endspecial FN(6)85 b(Commands)33 -b(and)h(Declarations)1432 b(75)801 4805 y @beginspecial -@setspecial @endspecial FQ(6.1)94 b(Arra)m(y)30 b(Declarations)54 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(75)p eop -%%Page: 7 7 -7 6 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2425 b FQ(7)377 555 y @beginspecial @setspecial -@endspecial(6.2)94 b(Mo)s(de)31 b(Handling)d(Declarations)c(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)93 b(76)377 718 y @beginspecial @setspecial @endspecial(6.3)h(END)44 -b(.)i(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(77)377 881 y @beginspecial @setspecial @endspecial(6.4)h(BYE)31 -b(Command)h(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(77)377 -1043 y @beginspecial @setspecial @endspecial(6.5)h(SHO)m(WTIME)31 -b(Command)56 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(78)377 1206 y @beginspecial -@setspecial @endspecial(6.6)h(DEFINE)31 b(Command)85 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)93 b(78)241 1460 y @beginspecial -@setspecial @endspecial FN(7)84 b(Built-in)35 b(Pre\014x)h(Op)s -(erators)1590 b(79)377 1622 y @beginspecial @setspecial -@endspecial FQ(7.1)94 b(Numerical)29 b(Op)s(erators)44 -b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)93 b(79)586 1785 y @beginspecial -@setspecial @endspecial(7.1.1)106 b(ABS)52 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)93 b(80)586 1948 y @beginspecial @setspecial -@endspecial(7.1.2)106 b(CEILING)57 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(80)586 2111 y @beginspecial @setspecial @endspecial(7.1.3)106 -b(CONJ)54 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(80)586 2273 y @beginspecial @setspecial @endspecial(7.1.4)106 -b(F)-10 b(A)m(CTORIAL)46 b(.)g(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(80)586 -2436 y @beginspecial @setspecial @endspecial(7.1.5)106 -b(FIX)75 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(81)586 2599 y @beginspecial @setspecial @endspecial(7.1.6)106 -b(FLOOR)51 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(81)586 -2762 y @beginspecial @setspecial @endspecial(7.1.7)106 -b(IMP)-8 b(AR)g(T)84 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(81)586 2924 y @beginspecial @setspecial @endspecial(7.1.8)106 -b(MAX/MIN)70 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(81)586 -3087 y @beginspecial @setspecial @endspecial(7.1.9)106 -b(NEXTPRIME)88 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(82)586 3250 y -@beginspecial @setspecial @endspecial(7.1.10)61 b(RANDOM)92 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(82)586 3412 y @beginspecial -@setspecial @endspecial(7.1.11)61 b(RANDOM)p 1308 3412 -28 4 v 34 w(NEW)p 1565 3412 V 33 w(SEED)53 b(.)45 b(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 b(82)586 -3575 y @beginspecial @setspecial @endspecial(7.1.12)61 -b(REP)-8 b(AR)g(T)71 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(83)586 3738 y @beginspecial @setspecial @endspecial(7.1.13)61 -b(R)m(OUND)36 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(83)586 3901 y @beginspecial @setspecial @endspecial(7.1.14)61 -b(SIGN)83 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(83)377 4063 y @beginspecial @setspecial @endspecial(7.2)h -(Mathematical)32 b(F)-8 b(unctions)56 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(83)377 4226 y @beginspecial @setspecial @endspecial(7.3)h(DF)31 -b(Op)s(erator)76 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(87)586 4389 y @beginspecial @setspecial @endspecial(7.3.1)106 -b(Adding)29 b(Di\013eren)m(tiation)h(Rules)79 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(87)377 4551 y @beginspecial @setspecial @endspecial(7.4)h(INT)30 -b(Op)s(erator)38 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(88)586 4714 y @beginspecial @setspecial @endspecial(7.4.1)106 -b(Options)61 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(89)586 4877 y @beginspecial @setspecial @endspecial(7.4.2)106 -b(Adv)-5 b(anced)30 b(Use)25 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)93 -b(90)p eop -%%Page: 8 8 -8 7 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(8)2428 b FM(CONTENTS)1010 555 y @beginspecial @setspecial -@endspecial FQ(7.4.3)106 b(References)28 b(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)93 b(90)801 718 y @beginspecial @setspecial @endspecial(7.5)h -(LENGTH)30 b(Op)s(erator)24 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(90)801 881 y @beginspecial @setspecial @endspecial(7.6)h(MAP)30 -b(Op)s(erator)62 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(91)801 1043 y @beginspecial @setspecial @endspecial(7.7)h(MKID)30 -b(Op)s(erator)89 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(92)801 1206 y @beginspecial @setspecial @endspecial(7.8)h(PF)30 -b(Op)s(erator)83 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(93)801 1369 y @beginspecial @setspecial @endspecial(7.9)h(SELECT)28 -b(Op)s(erator)54 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(93)801 -1532 y @beginspecial @setspecial @endspecial(7.10)49 -b(SOL)-10 b(VE)29 b(Op)s(erator)47 b(.)f(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 -b(94)1010 1694 y @beginspecial @setspecial @endspecial(7.10.1)61 -b(Handling)28 b(of)i(Undetermined)f(Solutions)53 b(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(96)1010 1857 -y @beginspecial @setspecial @endspecial(7.10.2)61 b(Solutions)28 -b(of)j(Equations)e(In)m(v)m(olving)h(Cubics)e(and)i(Quartics)123 -b(97)1010 2020 y @beginspecial @setspecial @endspecial(7.10.3)61 -b(Other)29 b(Options)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)93 b(99)1010 -2182 y @beginspecial @setspecial @endspecial(7.10.4)61 -b(P)m(arameters)31 b(and)f(V)-8 b(ariable)30 b(Dep)s(endency)79 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(100)801 2345 -y @beginspecial @setspecial @endspecial(7.11)h(Ev)m(en)30 -b(and)g(Odd)f(Op)s(erators)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(104)801 -2508 y @beginspecial @setspecial @endspecial(7.12)h(Linear)29 -b(Op)s(erators)55 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(105)801 -2671 y @beginspecial @setspecial @endspecial(7.13)h(Non-Comm)m(uting)30 -b(Op)s(erators)72 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)j(106)801 2833 y @beginspecial -@setspecial @endspecial(7.14)h(Symmetric)29 b(and)h(An)m(tisymmetric)f -(Op)s(erators)76 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(106) -801 2996 y @beginspecial @setspecial @endspecial(7.15)h(Declaring)30 -b(New)g(Pre\014x)g(Op)s(erators)c(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(107)801 3159 y @beginspecial -@setspecial @endspecial(7.16)h(Declaring)30 b(New)g(In\014x)f(Op)s -(erators)81 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(108)801 3321 y @beginspecial @setspecial -@endspecial(7.17)h(Creating/Remo)m(ving)30 b(V)-8 b(ariable)30 -b(Dep)s(endency)70 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(109)664 3575 y @beginspecial @setspecial @endspecial -FN(8)85 b(Displa)m(y)35 b(and)g(Structuring)g(of)g(Expressions)902 -b(111)801 3738 y @beginspecial @setspecial @endspecial -FQ(8.1)94 b(Kernels)84 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(111)801 3901 y @beginspecial @setspecial @endspecial(8.2)94 -b(The)30 b(Expression)e(W)-8 b(orkspace)90 b(.)45 b(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(113)801 -4063 y @beginspecial @setspecial @endspecial(8.3)94 b(Output)29 -b(of)h(Expressions)57 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(114)1010 -4226 y @beginspecial @setspecial @endspecial(8.3.1)106 -b(LINELENGTH)30 b(Op)s(erator)79 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(114)1010 4389 y @beginspecial -@setspecial @endspecial(8.3.2)106 b(Output)29 b(Declarations)54 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(115)1010 4551 y @beginspecial @setspecial @endspecial(8.3.3) -106 b(Output)29 b(Con)m(trol)h(Switc)m(hes)87 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(116)1010 -4714 y @beginspecial @setspecial @endspecial(8.3.4)106 -b(WRITE)30 b(Command)39 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(120)1010 4877 y -@beginspecial @setspecial @endspecial(8.3.5)106 b(Suppression)27 -b(of)j(Zeros)54 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)j(122)p eop -%%Page: 9 9 -9 8 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2425 b FQ(9)586 555 y @beginspecial @setspecial -@endspecial(8.3.6)106 b(F)m(OR)-8 b(TRAN)31 b(St)m(yle)g(Output)e(Of)h -(Expressions)87 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)h(122)586 -718 y @beginspecial @setspecial @endspecial(8.3.7)106 -b(Sa)m(ving)30 b(Expressions)f(for)h(Later)h(Use)f(as)h(Input)41 -b(.)k(.)h(.)g(.)g(.)f(.)h(.)h(125)586 881 y @beginspecial -@setspecial @endspecial(8.3.8)106 b(Displa)m(ying)29 -b(Expression)f(Structure)83 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)h(126)377 1043 y @beginspecial @setspecial @endspecial(8.4)94 -b(Changing)29 b(the)i(In)m(ternal)f(Order)f(of)h(V)-8 -b(ariables)87 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(128)377 -1206 y @beginspecial @setspecial @endspecial(8.5)94 b(Obtaining)29 -b(P)m(arts)h(of)h(Algebraic)f(Expressions)79 b(.)46 b(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)h(128)586 1369 y @beginspecial -@setspecial @endspecial(8.5.1)106 b(COEFF)30 b(Op)s(erator)92 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)h(128)586 1532 y @beginspecial @setspecial -@endspecial(8.5.2)106 b(COEFFN)31 b(Op)s(erator)23 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(129)586 1694 y @beginspecial @setspecial @endspecial(8.5.3)106 -b(P)-8 b(AR)g(T)31 b(Op)s(erator)90 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(130)586 -1857 y @beginspecial @setspecial @endspecial(8.5.4)106 -b(Substituting)28 b(for)i(P)m(arts)h(of)f(Expressions)36 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(131)241 -2111 y @beginspecial @setspecial @endspecial FN(9)84 -b(P)m(olynomials)36 b(and)e(Rationals)1477 b(133)377 -2273 y @beginspecial @setspecial @endspecial FQ(9.1)94 -b(Con)m(trolling)29 b(the)h(Expansion)f(of)i(Expressions)79 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(134)377 -2436 y @beginspecial @setspecial @endspecial(9.2)94 b(F)-8 -b(actorization)32 b(of)f(P)m(olynomials)23 b(.)46 b(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(134)377 -2599 y @beginspecial @setspecial @endspecial(9.3)94 b(Cancellation)29 -b(of)i(Common)f(F)-8 b(actors)68 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(137)586 2762 y @beginspecial -@setspecial @endspecial(9.3.1)106 b(Determining)29 b(the)i(GCD)g(of)f -(Tw)m(o)h(P)m(olynomials)81 b(.)46 b(.)g(.)g(.)f(.)h(.)h(138)377 -2924 y @beginspecial @setspecial @endspecial(9.4)94 b(W)-8 -b(orking)31 b(with)e(Least)i(Common)f(Multiples)76 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(138)377 -3087 y @beginspecial @setspecial @endspecial(9.5)94 b(Con)m(trolling)29 -b(Use)h(of)h(Common)f(Denominators)e(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)h(139)377 3250 y @beginspecial @setspecial -@endspecial(9.6)94 b(REMAINDER)31 b(Op)s(erator)49 b(.)d(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(139) -377 3412 y @beginspecial @setspecial @endspecial(9.7)94 -b(RESUL)-8 b(T)g(ANT)30 b(Op)s(erator)72 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(140)377 -3575 y @beginspecial @setspecial @endspecial(9.8)94 b(DECOMPOSE)29 -b(Op)s(erator)k(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(141)377 3738 y @beginspecial -@setspecial @endspecial(9.9)94 b(INTERPOL)29 b(op)s(erator)f(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(142)377 3901 y @beginspecial @setspecial -@endspecial(9.10)i(Obtaining)29 b(P)m(arts)h(of)h(P)m(olynomials)e(and) -h(Rationals)f(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(142)586 -4063 y @beginspecial @setspecial @endspecial(9.10.1)61 -b(DEG)31 b(Op)s(erator)64 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(143)586 -4226 y @beginspecial @setspecial @endspecial(9.10.2)61 -b(DEN)31 b(Op)s(erator)67 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(143)586 -4389 y @beginspecial @setspecial @endspecial(9.10.3)61 -b(LCOF)30 b(Op)s(erator)85 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(144)586 -4551 y @beginspecial @setspecial @endspecial(9.10.4)61 -b(LPO)m(WER)31 b(Op)s(erator)69 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(145)586 4714 -y @beginspecial @setspecial @endspecial(9.10.5)61 b(L)-8 -b(TERM)30 b(Op)s(erator)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(145)586 4877 -y @beginspecial @setspecial @endspecial(9.10.6)61 b(MAINV)-10 -b(AR)31 b(Op)s(erator)i(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(146)p eop -%%Page: 10 10 -10 9 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(10)2383 b FM(CONTENTS)1010 555 y @beginspecial @setspecial -@endspecial FQ(9.10.7)61 b(NUM)31 b(Op)s(erator)47 b(.)e(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(146)1010 718 y @beginspecial @setspecial @endspecial(9.10.8)61 -b(REDUCT)30 b(Op)s(erator)81 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(146)801 881 -y @beginspecial @setspecial @endspecial(9.11)h(P)m(olynomial)29 -b(Co)s(e\016cien)m(t)h(Arithmetic)87 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(147)1010 1043 y @beginspecial -@setspecial @endspecial(9.11.1)61 b(Rational)29 b(Co)s(e\016cien)m(ts)i -(in)e(P)m(olynomials)63 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(147)1010 1206 y @beginspecial @setspecial @endspecial(9.11.2)61 -b(Real)30 b(Co)s(e\016cien)m(ts)g(in)f(P)m(olynomials)84 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(148)1010 -1369 y @beginspecial @setspecial @endspecial(9.11.3)61 -b(Mo)s(dular)28 b(Num)m(b)s(er)i(Co)s(e\016cien)m(ts)g(in)f(P)m -(olynomials)67 b(.)45 b(.)h(.)g(.)f(.)j(149)1010 1532 -y @beginspecial @setspecial @endspecial(9.11.4)61 b(Complex)29 -b(Num)m(b)s(er)g(Co)s(e\016cien)m(ts)h(in)g(P)m(olynomials)54 -b(.)45 b(.)h(.)g(.)f(.)j(150)664 1785 y @beginspecial -@setspecial @endspecial FN(10)33 b(Substitution)h(Commands)1585 -b(151)801 1948 y @beginspecial @setspecial @endspecial -FQ(10.1)49 b(SUB)30 b(Op)s(erator)92 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(151)801 2111 y @beginspecial @setspecial @endspecial(10.2)h(LET) -29 b(Rules)91 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(152)1010 -2273 y @beginspecial @setspecial @endspecial(10.2.1)61 -b(F)m(OR)30 b(ALL)g(.)16 b(.)f(.)h(LET)57 b(.)46 b(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(155)1010 -2436 y @beginspecial @setspecial @endspecial(10.2.2)61 -b(F)m(OR)30 b(ALL)g(.)16 b(.)f(.)h(SUCH)29 b(THA)-8 b(T)31 -b(.)15 b(.)h(.)f(LET)70 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(156)1010 2599 y @beginspecial @setspecial @endspecial(10.2.3)61 -b(Remo)m(ving)30 b(Assignmen)m(ts)g(and)g(Substitution)d(Rules)62 -b(.)46 b(.)g(.)f(.)j(156)1010 2762 y @beginspecial @setspecial -@endspecial(10.2.4)61 b(Ov)m(erlapping)28 b(LET)i(Rules)62 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -j(157)1010 2924 y @beginspecial @setspecial @endspecial(10.2.5)61 -b(Substitutions)27 b(for)j(General)h(Expressions)76 b(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(157)801 3087 y @beginspecial -@setspecial @endspecial(10.3)h(Rule)29 b(Lists)52 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(160)801 -3250 y @beginspecial @setspecial @endspecial(10.4)h(Asymptotic)30 -b(Commands)84 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(166)664 3503 y @beginspecial -@setspecial @endspecial FN(11)33 b(File)h(Handling)h(Commands)1525 -b(169)801 3666 y @beginspecial @setspecial @endspecial -FQ(11.1)49 b(IN)30 b(Command)55 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)j(169)801 3829 y @beginspecial @setspecial @endspecial(11.2)h(OUT)29 -b(Command)23 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(170)801 -3991 y @beginspecial @setspecial @endspecial(11.3)h(SHUT)29 -b(Command)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(171)664 -4245 y @beginspecial @setspecial @endspecial FN(12)33 -b(Commands)g(for)i(In)m(teractiv)m(e)f(Use)1291 b(173)801 -4408 y @beginspecial @setspecial @endspecial FQ(12.1)49 -b(Referencing)30 b(Previous)f(Results)74 b(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(174)801 -4571 y @beginspecial @setspecial @endspecial(12.2)h(In)m(teractiv)m(e) -31 b(Editing)58 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(174)801 -4733 y @beginspecial @setspecial @endspecial(12.3)h(In)m(teractiv)m(e) -31 b(File)f(Con)m(trol)84 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(176)p eop -%%Page: 11 11 -11 10 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(11)241 555 y @beginspecial @setspecial -@endspecial FN(13)32 b(Matrix)j(Calculations)1782 b(177)377 -718 y @beginspecial @setspecial @endspecial FQ(13.1)49 -b(MA)-8 b(T)31 b(Op)s(erator)65 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(177)377 881 y @beginspecial @setspecial @endspecial(13.2)i(Matrix)31 -b(V)-8 b(ariables)69 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(178)377 -1043 y @beginspecial @setspecial @endspecial(13.3)i(Matrix)31 -b(Expressions)38 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(178)377 -1206 y @beginspecial @setspecial @endspecial(13.4)i(Op)s(erators)30 -b(with)f(Matrix)h(Argumen)m(ts)72 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(179)586 1369 y @beginspecial -@setspecial @endspecial(13.4.1)61 b(DET)30 b(Op)s(erator)70 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)h(179)586 1532 y @beginspecial @setspecial -@endspecial(13.4.2)61 b(MA)-8 b(TEIGEN)31 b(Op)s(erator)44 -b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)h(180)586 1694 y @beginspecial @setspecial @endspecial(13.4.3)61 -b(TP)30 b(Op)s(erator)68 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(181)586 -1857 y @beginspecial @setspecial @endspecial(13.4.4)61 -b(T)-8 b(race)31 b(Op)s(erator)47 b(.)f(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(181)586 -2020 y @beginspecial @setspecial @endspecial(13.4.5)61 -b(Matrix)30 b(Cofactors)51 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(181)586 -2182 y @beginspecial @setspecial @endspecial(13.4.6)61 -b(NULLSP)-8 b(A)m(CE)30 b(Op)s(erator)73 b(.)45 b(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(182)586 -2345 y @beginspecial @setspecial @endspecial(13.4.7)61 -b(RANK)30 b(Op)s(erator)64 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(183)377 -2508 y @beginspecial @setspecial @endspecial(13.5)i(Matrix)31 -b(Assignmen)m(ts)78 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(183)377 -2671 y @beginspecial @setspecial @endspecial(13.6)i(Ev)-5 -b(aluating)30 b(Matrix)g(Elemen)m(ts)37 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(184)241 -2924 y @beginspecial @setspecial @endspecial FN(14)32 -b(Pro)s(cedures)2185 b(185)377 3087 y @beginspecial @setspecial -@endspecial FQ(14.1)49 b(Pro)s(cedure)30 b(Heading)49 -b(.)c(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(186)377 3250 y @beginspecial -@setspecial @endspecial(14.2)i(Pro)s(cedure)30 b(Bo)s(dy)93 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(187)377 3412 y @beginspecial -@setspecial @endspecial(14.3)i(Using)30 b(LET)f(Inside)g(Pro)s(cedures) -57 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(189)377 3575 y @beginspecial @setspecial @endspecial(14.4)i -(LET)30 b(Rules)f(as)i(Pro)s(cedures)76 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(190)377 -3738 y @beginspecial @setspecial @endspecial(14.5)i(REMEMBER)31 -b(Statemen)m(t)k(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(192)241 3991 y @beginspecial -@setspecial @endspecial FN(15)32 b(User)k(Con)m(tributed)e(P)m(ac)m(k) --6 b(ages)1452 b(193)241 4245 y @beginspecial @setspecial -@endspecial(16)32 b(Sym)m(b)s(olic)j(Mo)s(de)1986 b(197)377 -4408 y @beginspecial @setspecial @endspecial FQ(16.1)49 -b(Sym)m(b)s(olic)29 b(In\014x)g(Op)s(erators)90 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(200)377 4571 y @beginspecial @setspecial @endspecial(16.2)i -(Sym)m(b)s(olic)29 b(Expressions)91 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(200)377 -4733 y @beginspecial @setspecial @endspecial(16.3)i(Quoted)30 -b(Expressions)89 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(200)377 -4896 y @beginspecial @setspecial @endspecial(16.4)i(Lam)m(b)s(da)30 -b(Expressions)57 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(201)p eop -%%Page: 12 12 -12 11 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(12)2383 b FM(CONTENTS)801 555 y @beginspecial @setspecial -@endspecial FQ(16.5)49 b(Sym)m(b)s(olic)28 b(Assignmen)m(t)i(Statemen)m -(ts)51 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)j(202)801 718 y @beginspecial @setspecial @endspecial(16.6)h(F)m(OR) -30 b(EA)m(CH)h(Statemen)m(t)e(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(202)801 -881 y @beginspecial @setspecial @endspecial(16.7)h(Sym)m(b)s(olic)28 -b(Pro)s(cedures)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(202)801 1043 -y @beginspecial @setspecial @endspecial(16.8)h(Standard)29 -b(Lisp)g(Equiv)-5 b(alen)m(t)29 b(of)h(Reduce)h(Input)37 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(203)801 -1206 y @beginspecial @setspecial @endspecial(16.9)h(Comm)m(unicating)29 -b(with)g(Algebraic)h(Mo)s(de)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)j(203)1010 1369 y @beginspecial @setspecial -@endspecial(16.9.1)61 b(P)m(assing)30 b(Algebraic)f(Mo)s(de)i(V)-8 -b(alues)30 b(to)h(Sym)m(b)s(olic)e(Mo)s(de)73 b(.)45 -b(.)j(204)1010 1532 y @beginspecial @setspecial @endspecial(16.9.2)61 -b(P)m(assing)30 b(Sym)m(b)s(olic)e(Mo)s(de)j(V)-8 b(alues)30 -b(to)h(Algebraic)f(Mo)s(de)73 b(.)45 b(.)j(207)1010 1694 -y @beginspecial @setspecial @endspecial(16.9.3)61 b(Complete)30 -b(Example)43 b(.)j(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)j(208)1010 1857 y @beginspecial -@setspecial @endspecial(16.9.4)61 b(De\014ning)29 b(Pro)s(cedures)g -(for)i(In)m(termo)s(de)f(Comm)m(unication)35 b(.)45 b(.)j(208)801 -2020 y @beginspecial @setspecial @endspecial(16.10)t(Rlisp)28 -b('88)35 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(209) -801 2182 y @beginspecial @setspecial @endspecial(16.11)t(References)37 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(210)664 -2436 y @beginspecial @setspecial @endspecial FN(17)33 -b(Calculations)h(in)h(High)g(Energy)h(Ph)m(ysics)1023 -b(211)801 2599 y @beginspecial @setspecial @endspecial -FQ(17.1)49 b(High)29 b(Energy)h(Ph)m(ysics)g(Op)s(erators)48 -b(.)e(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(211)1010 2762 y @beginspecial @setspecial @endspecial(17.1.1)61 -b(.)40 b(\(Cons\))31 b(Op)s(erator)74 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(211)1010 -2924 y @beginspecial @setspecial @endspecial(17.1.2)61 -b(G)30 b(Op)s(erator)g(for)g(Gamma)h(Matrices)49 b(.)c(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)j(212)1010 3087 y @beginspecial -@setspecial @endspecial(17.1.3)61 b(EPS)29 b(Op)s(erator)93 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)j(213)801 3250 y @beginspecial @setspecial -@endspecial(17.2)h(V)-8 b(ector)32 b(V)-8 b(ariables)84 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(214)801 3412 y @beginspecial -@setspecial @endspecial(17.3)h(Additional)28 b(Expression)g(T)m(yp)s -(es)80 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)j(214)1010 3575 y @beginspecial @setspecial -@endspecial(17.3.1)61 b(V)-8 b(ector)32 b(Expressions)45 -b(.)h(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)j(214)1010 3738 y @beginspecial @setspecial -@endspecial(17.3.2)61 b(Dirac)30 b(Expressions)87 b(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)j(215)801 3901 y @beginspecial @setspecial @endspecial(17.4)h(T) --8 b(race)31 b(Calculations)66 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(215)801 -4063 y @beginspecial @setspecial @endspecial(17.5)h(Mass)30 -b(Declarations)84 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(216)801 -4226 y @beginspecial @setspecial @endspecial(17.6)h(Example)36 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(216)801 -4389 y @beginspecial @setspecial @endspecial(17.7)h(Extensions)29 -b(to)i(More)g(Than)f(F)-8 b(our)30 b(Dimensions)81 b(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(218)664 4642 y -@beginspecial @setspecial @endspecial FN(18)33 b(REDUCE)h(and)h(Rlisp)h -(Utilities)1369 b(219)801 4805 y @beginspecial @setspecial -@endspecial FQ(18.1)49 b(The)30 b(Standard)f(Lisp)f(Compiler)87 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(219)p eop -%%Page: 13 13 -13 12 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(13)377 555 y @beginspecial @setspecial -@endspecial(18.2)49 b(F)-8 b(ast)32 b(Loading)e(Co)s(de)g(Generation)g -(Program)58 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(220) -377 718 y @beginspecial @setspecial @endspecial(18.3)i(The)30 -b(Standard)f(Lisp)g(Cross)h(Reference)h(Program)82 b(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(221)586 881 y @beginspecial -@setspecial @endspecial(18.3.1)61 b(Restrictions)45 b(.)g(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)h(222)586 1043 y @beginspecial @setspecial @endspecial(18.3.2) -61 b(Usage)72 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(222)586 -1206 y @beginspecial @setspecial @endspecial(18.3.3)61 -b(Options)g(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(223)377 -1369 y @beginspecial @setspecial @endspecial(18.4)i(Prett)m(yprin)m -(ting)29 b(Reduce)i(Expressions)58 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(223)377 1532 y @beginspecial -@setspecial @endspecial(18.5)i(Prett)m(yprin)m(ting)29 -b(Standard)h(Lisp)e(S-Expressions)58 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)h(224)241 1785 y @beginspecial @setspecial -@endspecial FN(19)32 b(Main)m(taining)j(REDUCE)1657 b(225)241 -2152 y @beginspecial @setspecial @endspecial FR(I)s(I)111 -b(Additional)36 b(REDUCE)g(Do)s(cumen)m(tation)791 b(227)241 -2406 y @beginspecial @setspecial @endspecial FN(20)32 -b(ALGINT:)i(In)m(tegration)h(of)g(square)g(ro)s(ots)987 -b(231)241 2660 y @beginspecial @setspecial @endspecial(21)32 -b(APPL)-9 b(YSYM:)37 b(In\014nitesimal)c(symmetries)915 -b(235)241 2913 y @beginspecial @setspecial @endspecial(22)32 -b(ARNUM:)k(An)f(algebraic)g(n)m(um)m(b)s(er)g(pac)m(k)-6 -b(age)862 b(239)377 3076 y @beginspecial @setspecial -@endspecial FQ(22.1)49 b(DEFPOL)-8 b(Y)86 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)h(239)377 3239 y @beginspecial @setspecial -@endspecial(22.2)i(SPLIT)p 860 3239 28 4 v 32 w(FIELD)86 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(241)241 3492 y -@beginspecial @setspecial @endspecial FN(23)32 b(ASSIST:)j(V)-9 -b(arious)35 b(Useful)h(Utilities)1196 b(243)377 3655 -y @beginspecial @setspecial @endspecial FQ(23.1)49 b(Con)m(trol)30 -b(of)h(Switc)m(hes)h(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(243)377 -3818 y @beginspecial @setspecial @endspecial(23.2)i(Manipulation)28 -b(of)j(the)f(List)g(Structure)63 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(244)377 3981 y @beginspecial -@setspecial @endspecial(23.3)i(The)30 b(Bag)i(Structure)d(and)h(its)g -(Asso)s(ciated)g(F)-8 b(unctions)89 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)h -(246)377 4143 y @beginspecial @setspecial @endspecial(23.4)i(Sets)31 -b(and)e(their)h(Manipulation)e(F)-8 b(unctions)51 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(249)377 -4306 y @beginspecial @setspecial @endspecial(23.5)i(General)30 -b(Purp)s(ose)g(Utilit)m(y)f(F)-8 b(unctions)76 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(249)377 -4469 y @beginspecial @setspecial @endspecial(23.6)i(Prop)s(erties)29 -b(and)h(Flags)52 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(253)377 -4631 y @beginspecial @setspecial @endspecial(23.7)i(Con)m(trol)30 -b(F)-8 b(unctions)92 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(254)377 -4794 y @beginspecial @setspecial @endspecial(23.8)i(Handling)29 -b(of)h(P)m(olynomials)43 b(.)j(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(256)377 4957 -y @beginspecial @setspecial @endspecial(23.9)i(Handling)29 -b(of)h(T)-8 b(ranscenden)m(tal)30 b(F)-8 b(unctions)74 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(258)p -eop -%%Page: 14 14 -14 13 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(14)2383 b FM(CONTENTS)801 555 y @beginspecial @setspecial -@endspecial FQ(23.10)t(Co)s(ercion)29 b(from)h(lists)f(to)i(arra)m(ys)g -(and)f(con)m(v)m(erse)51 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)j(259)801 718 y @beginspecial @setspecial @endspecial(23.11)t -(Handling)28 b(of)j(n{dimensional)c(V)-8 b(ectors)62 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(259) -801 881 y @beginspecial @setspecial @endspecial(23.12)t(Handling)28 -b(of)j(Grassmann)e(Op)s(erators)76 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)j(259)801 1043 y @beginspecial -@setspecial @endspecial(23.13)t(Handling)28 b(of)j(Matrices)43 -b(.)j(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)j(260)664 1297 y @beginspecial -@setspecial @endspecial FN(24)33 b(A)-9 b(TENSOR:)34 -b(T)-9 b(ensor)35 b(Simpli\014cation)1156 b(265)801 1460 -y @beginspecial @setspecial @endspecial FQ(24.1)49 b(Basic)30 -b(tensors)h(and)e(tensor)i(expressions)69 b(.)46 b(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(265)801 1622 y @beginspecial -@setspecial @endspecial(24.2)h(Op)s(erators)29 b(for)i(tensors)i(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)j(266)801 1785 y @beginspecial @setspecial -@endspecial(24.3)h(Switc)m(hes)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(267)664 2039 y @beginspecial @setspecial -@endspecial FN(25)33 b(A)-12 b(VECTOR:)34 b(V)-9 b(ector)35 -b(Algebra)1416 b(269)801 2202 y @beginspecial @setspecial -@endspecial FQ(25.1)49 b(V)-8 b(ector)32 b(declaration)e(and)f -(initialisation)82 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)j(269)801 2364 y @beginspecial @setspecial @endspecial(25.2)h(V) --8 b(ector)32 b(algebra)91 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(270) -801 2527 y @beginspecial @setspecial @endspecial(25.3)h(V)-8 -b(ector)32 b(calculus)64 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(271) -801 2690 y @beginspecial @setspecial @endspecial(25.4)h(V)-8 -b(olume)30 b(and)g(Line)f(In)m(tegration)85 b(.)46 b(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(274)664 -2943 y @beginspecial @setspecial @endspecial FN(26)33 -b(BOOLEAN:)g(A)i(pac)m(k)-6 b(age)36 b(for)f(b)s(o)s(olean)g(algebra) -723 b(277)801 3106 y @beginspecial @setspecial @endspecial -FQ(26.1)49 b(En)m(tering)29 b(b)s(o)s(olean)h(expressions)76 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(277)801 3269 y @beginspecial @setspecial @endspecial(26.2)h -(Normal)30 b(forms)49 b(.)d(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(278)801 -3431 y @beginspecial @setspecial @endspecial(26.3)h(Ev)-5 -b(aluation)29 b(of)i(a)f(b)s(o)s(olean)g(expression)60 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(280) -664 3685 y @beginspecial @setspecial @endspecial FN(27)33 -b(CALI:)g(Comm)m(utativ)m(e)g(Algebra)1361 b(283)664 -3939 y @beginspecial @setspecial @endspecial(28)33 b(CAMAL:)h -(Celestial)g(Mec)m(hanics)1337 b(285)801 4101 y @beginspecial -@setspecial @endspecial FQ(28.1)49 b(Op)s(erators)29 -b(for)i(F)-8 b(ourier)29 b(Series)52 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(285)801 -4264 y @beginspecial @setspecial @endspecial(28.2)h(A)30 -b(Short)g(Example)43 b(.)j(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(287)664 -4518 y @beginspecial @setspecial @endspecial FN(29)33 -b(CGB:)h(Comprehensiv)m(e)h(Gr\177)-52 b(obner)35 b(Bases)992 -b(289)801 4681 y @beginspecial @setspecial @endspecial -FQ(29.1)49 b(In)m(tro)s(duction)26 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(289)801 4843 y @beginspecial @setspecial @endspecial(29.2)h -(Using)29 b(the)i(REDLOG)f(P)m(ac)m(k)-5 b(age)79 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(290)p eop -%%Page: 15 15 -15 14 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(15)377 555 y @beginspecial @setspecial -@endspecial(29.3)49 b(T)-8 b(erm)30 b(Ordering)f(Mo)s(de)j(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(290)377 718 y @beginspecial @setspecial -@endspecial(29.4)i(CGB:)31 b(Comprehensiv)m(e)e(Gr\177)-45 -b(obner)30 b(Basis)60 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)h(290)377 881 y @beginspecial @setspecial -@endspecial(29.5)i(GSYS:)30 b(Gr\177)-45 b(obner)30 b(System)79 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)h(291)586 1043 y @beginspecial @setspecial -@endspecial(29.5.1)61 b(Switc)m(h)30 b(CGBGEN:)h(Only)e(the)h(Generic)g -(Case)64 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)h(292)377 1206 -y @beginspecial @setspecial @endspecial(29.6)i(GSYS2CGB:)31 -b(Gr\177)-45 b(obner)30 b(System)g(to)h(CGB)56 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(292)377 -1369 y @beginspecial @setspecial @endspecial(29.7)i(Switc)m(h)30 -b(CGBREAL:)g(Computing)f(o)m(v)m(er)j(the)e(Real)h(Num)m(b)s(ers)24 -b(.)46 b(.)f(.)h(.)h(293)377 1532 y @beginspecial @setspecial -@endspecial(29.8)i(Switc)m(hes)43 b(.)i(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)h(294)241 1785 y @beginspecial @setspecial -@endspecial FN(30)32 b(CHANGEVR:)j(Change)f(of)h(V)-9 -b(ariables)35 b(in)g(DEs)742 b(295)377 1948 y @beginspecial -@setspecial @endspecial FQ(30.1)49 b(An)30 b(example:)41 -b(the)30 b(2-D)i(Laplace)e(Equation)87 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(296)241 2202 y @beginspecial @setspecial -@endspecial FN(31)32 b(COMP)-9 b(A)m(CT:)34 b(Compacting)h(expressions) -992 b(297)241 2455 y @beginspecial @setspecial @endspecial(32)32 -b(CRA)m(CK:)j(Ov)m(erdetermined)e(systems)h(of)h(DEs)772 -b(299)241 2709 y @beginspecial @setspecial @endspecial(33)32 -b(CVIT:Dirac)i(gamma)f(matrix)h(traces)1142 b(303)241 -2962 y @beginspecial @setspecial @endspecial(34)32 b(DEFINT:)i -(De\014nite)h(In)m(tegration)f(for)h(REDUCE)668 b(305)241 -3216 y @beginspecial @setspecial @endspecial(35)32 b(DESIR:)j(Linear)g -(Homogeneous)g(DEs)1124 b(309)241 3470 y @beginspecial -@setspecial @endspecial(36)32 b(DFP)-9 b(AR)g(T:)36 b(Deriv)-6 -b(ativ)m(es)36 b(of)f(generic)g(functions)762 b(313)377 -3632 y @beginspecial @setspecial @endspecial FQ(36.1)49 -b(Generic)30 b(F)-8 b(unctions)89 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(313) -377 3795 y @beginspecial @setspecial @endspecial(36.2)i(P)m(artial)30 -b(Deriv)-5 b(ativ)m(es)66 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(314)377 -3958 y @beginspecial @setspecial @endspecial(36.3)i(Substitutions)68 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(316)241 4211 -y @beginspecial @setspecial @endspecial FN(37)32 b(DUMMY:)k -(Expressions)g(with)e(dumm)m(y)g(v)-6 b(ars)823 b(319)241 -4465 y @beginspecial @setspecial @endspecial(38)32 b(EDS:)j(Exterior)g -(di\013eren)m(tial)f(systems)1129 b(323)377 4628 y @beginspecial -@setspecial @endspecial FQ(38.1)49 b(In)m(tro)s(duction)27 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(323)377 -4791 y @beginspecial @setspecial @endspecial(38.2)i(Data)32 -b(Structures)e(and)f(Concepts)d(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(324)586 4953 y @beginspecial -@setspecial @endspecial(38.2.1)61 b(EDS)53 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)h(324)p eop -%%Page: 16 16 -16 15 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(16)2383 b FM(CONTENTS)1010 555 y @beginspecial @setspecial -@endspecial FQ(38.2.2)61 b(Coframing)28 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)j(324)1010 718 y @beginspecial @setspecial @endspecial(38.2.3)61 -b(Systems)30 b(and)f(bac)m(kground)h(coframing)c(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(324)1010 881 -y @beginspecial @setspecial @endspecial(38.2.4)61 b(In)m(tegral)30 -b(elemen)m(ts)50 b(.)c(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(325)1010 1043 y @beginspecial -@setspecial @endspecial(38.2.5)61 b(Prop)s(erties)29 -b(and)g(normal)h(form)45 b(.)g(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)j(325)801 1206 y @beginspecial @setspecial -@endspecial(38.3)h(The)30 b(EDS)g(P)m(ac)m(k)-5 b(age)95 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(326)1010 1369 y @beginspecial -@setspecial @endspecial(38.3.1)61 b(Constructing)29 b(EDS)h(ob)5 -b(jects)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(326)1010 1532 y @beginspecial @setspecial @endspecial(38.3.2)61 -b(Insp)s(ecting)28 b(EDS)j(ob)5 b(jects)80 b(.)46 b(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(327)1010 -1694 y @beginspecial @setspecial @endspecial(38.3.3)61 -b(Manipulating)28 b(EDS)i(ob)5 b(jects)28 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(328)1010 1857 -y @beginspecial @setspecial @endspecial(38.3.4)61 b(Analysing)28 -b(and)i(T)-8 b(esting)30 b(exterior)h(systems)82 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)j(329)1010 2020 y @beginspecial -@setspecial @endspecial(38.3.5)61 b(Switc)m(hes)34 b(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(330)1010 2182 y @beginspecial -@setspecial @endspecial(38.3.6)61 b(Auxilliary)27 b(functions)81 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(330)1010 2345 y @beginspecial @setspecial @endspecial(38.3.7) -61 b(Exp)s(erimen)m(tal)28 b(F)-8 b(unctions)62 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(330) -664 2599 y @beginspecial @setspecial @endspecial FN(39)33 -b(EX)m(CALC:)g(Di\013eren)m(tial)i(Geometry)1188 b(333)801 -2762 y @beginspecial @setspecial @endspecial FQ(39.1)49 -b(Declarations)31 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(334) -801 2924 y @beginspecial @setspecial @endspecial(39.2)h(Exterior)29 -b(Multiplication)e(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(335)801 3087 -y @beginspecial @setspecial @endspecial(39.3)h(P)m(artial)30 -b(Di\013eren)m(tiation)73 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(336)801 -3250 y @beginspecial @setspecial @endspecial(39.4)h(Exterior)29 -b(Di\013eren)m(tiation)88 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(336)801 -3412 y @beginspecial @setspecial @endspecial(39.5)h(Inner)29 -b(Pro)s(duct)k(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(337)801 -3575 y @beginspecial @setspecial @endspecial(39.6)h(Lie)29 -b(Deriv)-5 b(ativ)m(e)39 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(338)801 3738 y @beginspecial @setspecial @endspecial(39.7)h(Ho)s -(dge-*)31 b(Dualit)m(y)f(Op)s(erator)44 b(.)i(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(338)801 -3901 y @beginspecial @setspecial @endspecial(39.8)h(V)-8 -b(ariational)30 b(Deriv)-5 b(ativ)m(e)75 b(.)45 b(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(339) -801 4063 y @beginspecial @setspecial @endspecial(39.9)h(Handling)28 -b(of)j(Indices)36 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(340)801 -4226 y @beginspecial @setspecial @endspecial(39.10)t(Metric)30 -b(Structures)36 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(341)801 -4389 y @beginspecial @setspecial @endspecial(39.11)t(Riemannian)28 -b(Connections)g(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(343)801 4551 y @beginspecial -@setspecial @endspecial(39.12)t(Ordering)28 b(and)i(Structuring)73 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(343)664 4805 y @beginspecial @setspecial -@endspecial FN(40)33 b(FIDE:)h(Finite)g(di\013erences)i(for)f(PDEs)1133 -b(345)p eop -%%Page: 17 17 -17 16 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(17)241 555 y @beginspecial @setspecial -@endspecial FN(41)32 b(FPS:)j(F)-9 b(ormal)35 b(p)s(o)m(w)m(er)f -(series)1524 b(349)241 809 y @beginspecial @setspecial -@endspecial(42)32 b(GENTRAN:)j(A)g(co)s(de)g(generation)g(pac)m(k)-6 -b(age)864 b(351)377 972 y @beginspecial @setspecial @endspecial -FQ(42.1)49 b(Simple)28 b(Use)84 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(352)377 1134 y @beginspecial @setspecial @endspecial(42.2)i -(Precision)23 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(353)586 1297 y @beginspecial @setspecial @endspecial(42.2.1)61 -b(The)30 b(EV)-10 b(AL)30 b(F)-8 b(unction)59 b(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)h(353)586 1460 y @beginspecial @setspecial @endspecial(42.2.2)61 -b(The)30 b(:=:)41 b(Op)s(erator)90 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(354)586 -1622 y @beginspecial @setspecial @endspecial(42.2.3)61 -b(The)30 b(::=)h(Op)s(erator)e(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(354)586 -1785 y @beginspecial @setspecial @endspecial(42.2.4)61 -b(The)30 b(::=:)41 b(Op)s(erator)65 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(355)377 -1948 y @beginspecial @setspecial @endspecial(42.3)i(Explicit)28 -b(T)m(yp)s(e)i(Declarations)91 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(356)377 2111 -y @beginspecial @setspecial @endspecial(42.4)i(Expression)29 -b(Segmen)m(tation)24 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(357)377 2273 -y @beginspecial @setspecial @endspecial(42.5)i(T)-8 b(emplate)31 -b(Pro)s(cessing)57 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(358)377 -2436 y @beginspecial @setspecial @endspecial(42.6)i(Output)29 -b(Redirection)g(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(361)241 -2690 y @beginspecial @setspecial @endspecial FN(43)32 -b(GEOMETR)-9 b(Y:)35 b(Plane)g(geometry)1294 b(363)377 -2852 y @beginspecial @setspecial @endspecial FQ(43.1)49 -b(In)m(tro)s(duction)27 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(363)377 3015 y @beginspecial @setspecial @endspecial(43.2)i(Basic)31 -b(Data)h(T)m(yp)s(es)e(and)f(Constructors)89 b(.)46 b(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(364)377 3178 y @beginspecial -@setspecial @endspecial(43.3)i(Pro)s(cedures)86 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(364)377 3341 -y @beginspecial @setspecial @endspecial(43.4)i(Examples)71 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(368)241 -3594 y @beginspecial @setspecial @endspecial FN(44)32 -b(GNUPLOT:)j(Plotting)g(F)-9 b(unctions)1254 b(371)241 -3848 y @beginspecial @setspecial @endspecial(45)32 b(GR)m(OEBNER:)j(A)g -(Gr\177)-52 b(obner)36 b(basis)f(pac)m(k)-6 b(age)883 -b(375)377 4011 y @beginspecial @setspecial @endspecial -FQ(45.1)80 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)h(375)586 4173 y @beginspecial @setspecial -@endspecial(45.1.1)61 b(T)-8 b(erm)30 b(Ordering)63 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)h(376)377 4336 y @beginspecial @setspecial -@endspecial(45.2)i(The)30 b(Basic)h(Op)s(erators)52 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(376)586 4499 y @beginspecial @setspecial -@endspecial(45.2.1)61 b(T)-8 b(erm)30 b(Ordering)f(Mo)s(de)24 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)h(376)586 4661 y @beginspecial @setspecial @endspecial(45.2.2) -61 b(GR)m(OEBNER:)31 b(Calculation)e(of)i(a)f(Gr\177)-45 -b(obner)30 b(Basis)45 b(.)h(.)g(.)f(.)h(.)h(377)586 4824 -y @beginspecial @setspecial @endspecial(45.2.3)61 b(GZER)m(ODIM?:)41 -b(T)-8 b(est)31 b(of)g(dim)23 b(=)i(0)57 b(.)45 b(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(378)p eop -%%Page: 18 18 -18 17 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(18)2383 b FM(CONTENTS)1010 555 y @beginspecial @setspecial -@endspecial FQ(45.2.4)61 b(GDIMENSION,)30 b(GINDEPENDENT)p -2730 555 28 4 v 34 w(SETS)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)j(378)1010 -718 y @beginspecial @setspecial @endspecial(45.2.5)61 -b(GLEX)m(CONVER)-8 b(T:)30 b(Con)m(v)m(ersion)g(to)h(a)g(Lexical)f -(Base)80 b(.)46 b(.)f(.)j(379)1010 881 y @beginspecial -@setspecial @endspecial(45.2.6)61 b(GR)m(OEBNERF:)31 -b(F)-8 b(actorizing)31 b(Gr\177)-45 b(obner)30 b(Bases)94 -b(.)46 b(.)f(.)h(.)g(.)f(.)j(380)1010 1043 y @beginspecial -@setspecial @endspecial(45.2.7)61 b(GREDUCE,)30 b(PREDUCE:)h(Reduction) -e(of)i(P)m(olynomials)89 b(.)48 b(383)801 1206 y @beginspecial -@setspecial @endspecial(45.3)h(Ideal)29 b(Decomp)s(osition)h(&)g -(Equation)g(System)g(Solving)66 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)j(384) -664 1460 y @beginspecial @setspecial @endspecial FN(46)33 -b(IDEALS:)h(Arithmetic)g(for)h(p)s(olynomial)g(ideals)750 -b(385)801 1622 y @beginspecial @setspecial @endspecial -FQ(46.1)49 b(Initialization)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -j(385)801 1785 y @beginspecial @setspecial @endspecial(46.2)h(Bases)92 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(386)1010 -1948 y @beginspecial @setspecial @endspecial(46.2.1)61 -b(Op)s(erators)48 b(.)e(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(386)664 -2202 y @beginspecial @setspecial @endspecial FN(47)33 -b(INEQ:)g(Supp)s(ort)i(for)g(solving)h(inequalities)927 -b(387)664 2455 y @beginspecial @setspecial @endspecial(48)33 -b(INVBASE:)h(In)m(v)m(olutiv)m(e)h(Bases)1405 b(389)801 -2618 y @beginspecial @setspecial @endspecial FQ(48.1)49 -b(The)30 b(Basic)g(Op)s(erators)53 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(389)1010 -2781 y @beginspecial @setspecial @endspecial(48.1.1)61 -b(T)-8 b(erm)30 b(Ordering)63 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(389)1010 -2943 y @beginspecial @setspecial @endspecial(48.1.2)61 -b(Computing)28 b(In)m(v)m(olutiv)m(e)j(Bases)j(.)45 b(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(390)664 3197 -y @beginspecial @setspecial @endspecial FN(49)33 b(LAPLA)m(CE:)h -(Laplace)h(transforms)f(etc.)1066 b(393)664 3451 y @beginspecial -@setspecial @endspecial(50)33 b(LIE:)h(Classi\014cation)h(of)g(Lie)g -(algebras)1156 b(397)801 3613 y @beginspecial @setspecial -@endspecial FQ(50.1)49 b(liendmc1)29 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)j(397)801 3776 y @beginspecial @setspecial -@endspecial(50.2)h(lie1234)41 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)j(398)664 4030 y @beginspecial @setspecial -@endspecial FN(51)33 b(LIMITS:)h(A)h(pac)m(k)-6 b(age)35 -b(for)g(\014nding)h(limits)990 b(399)801 4192 y @beginspecial -@setspecial @endspecial FQ(51.1)49 b(Normal)30 b(en)m(try)g(p)s(oin)m -(ts)72 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(399)801 4355 y @beginspecial -@setspecial @endspecial(51.2)h(Direction-dep)s(enden)m(t)29 -b(limits)g(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)j(400)664 4609 y @beginspecial -@setspecial @endspecial FN(52)33 b(LINALG:)h(Linear)h(algebra)f(pac)m -(k)-6 b(age)1178 b(403)801 4771 y @beginspecial @setspecial -@endspecial FQ(52.1)49 b(In)m(tro)s(duction)26 b(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(403)1010 4934 -y @beginspecial @setspecial @endspecial(52.1.1)61 b(Basic)30 -b(matrix)g(handling)58 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)j(403)p eop -%%Page: 19 19 -19 18 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(19)586 555 y @beginspecial @setspecial -@endspecial(52.1.2)61 b(Constructors)76 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(404) -586 718 y @beginspecial @setspecial @endspecial(52.1.3)61 -b(High)30 b(lev)m(el)g(algorithms)23 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(404)586 -881 y @beginspecial @setspecial @endspecial(52.1.4)61 -b(Predicates)36 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(404)377 -1043 y @beginspecial @setspecial @endspecial(52.2)i(Explanations)76 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(404)377 1206 -y @beginspecial @setspecial @endspecial(52.3)i(Basic)31 -b(matrix)f(handling)66 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(405)377 -1369 y @beginspecial @setspecial @endspecial(52.4)i(Constructors)85 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(407)377 1532 -y @beginspecial @setspecial @endspecial(52.5)i(Higher)30 -b(Algorithms)69 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(411)377 -1694 y @beginspecial @setspecial @endspecial(52.6)i(F)-8 -b(ast)32 b(Linear)d(Algebra)85 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(413)241 -1948 y @beginspecial @setspecial @endspecial FN(53)32 -b(MA)-9 b(THML)35 b(:)g(MathML)g(In)m(terface)f(for)h(REDUCE)613 -b(415)241 2202 y @beginspecial @setspecial @endspecial(54)32 -b(MODSR:)j(Mo)s(dular)h(solv)m(e)f(and)g(ro)s(ots)1118 -b(419)241 2455 y @beginspecial @setspecial @endspecial(55)32 -b(MR)-12 b(VLIMIT:)35 b(Limits)f(of)h(\\exp-log")g(functions)740 -b(421)241 2709 y @beginspecial @setspecial @endspecial(56)32 -b(NCPOL)-9 b(Y:)35 b(Ideals)f(in)h(non{comm)g(case)1053 -b(425)377 2872 y @beginspecial @setspecial @endspecial -FQ(56.1)49 b(Setup,)30 b(Clean)m(up)57 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(426)377 3034 y @beginspecial @setspecial @endspecial(56.2)i(Left) -31 b(and)f(righ)m(t)g(ideals)67 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(427)377 -3197 y @beginspecial @setspecial @endspecial(56.3)i(Gr\177)-45 -b(obner)30 b(bases)f(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(428)377 -3360 y @beginspecial @setspecial @endspecial(56.4)i(Left)31 -b(or)f(righ)m(t)g(p)s(olynomial)e(division)73 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(429)377 -3522 y @beginspecial @setspecial @endspecial(56.5)i(Left)31 -b(or)f(righ)m(t)g(p)s(olynomial)e(reduction)78 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(429)377 -3685 y @beginspecial @setspecial @endspecial(56.6)i(F)-8 -b(actorisation)81 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(429)377 -3848 y @beginspecial @setspecial @endspecial(56.7)i(Output)29 -b(of)i(expressions)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(430)241 -4101 y @beginspecial @setspecial @endspecial FN(57)32 -b(NORMF)m(ORM:)j(matrix)f(normal)g(forms)1023 b(431)377 -4264 y @beginspecial @setspecial @endspecial FQ(57.1)49 -b(Smithex)58 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(432)377 4427 y @beginspecial @setspecial @endspecial(57.2)i(Smithex)p -918 4427 28 4 v 32 w(in)m(t)58 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(432)377 4590 y @beginspecial @setspecial @endspecial(57.3)i(F)-8 -b(rob)s(enius)65 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(432)377 4752 y @beginspecial @setspecial @endspecial(57.4)i(Ratjordan) -j(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(433)377 -4915 y @beginspecial @setspecial @endspecial(57.5)i(Jordansym)m(b)s -(olic)44 b(.)i(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(433)p eop -%%Page: 20 20 -20 19 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(20)2383 b FM(CONTENTS)801 555 y @beginspecial @setspecial -@endspecial FQ(57.6)49 b(Jordan)38 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)j(434)664 809 y @beginspecial @setspecial -@endspecial FN(58)33 b(NUMERIC:)h(Solving)i(n)m(umerical)f(problems)840 -b(437)801 972 y @beginspecial @setspecial @endspecial -FQ(58.1)49 b(Syn)m(tax)38 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(437)1010 1134 y @beginspecial @setspecial -@endspecial(58.1.1)61 b(In)m(terv)-5 b(als,)30 b(Starting)g(P)m(oin)m -(ts)83 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)j(437)1010 1297 y @beginspecial @setspecial @endspecial(58.1.2)61 -b(Accuracy)31 b(Con)m(trol)e(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(438)801 -1460 y @beginspecial @setspecial @endspecial(58.2)h(Minima)77 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(438)801 -1622 y @beginspecial @setspecial @endspecial(58.3)h(Ro)s(ots)31 -b(of)f(F)-8 b(unctions/)30 b(Solutions)f(of)h(Equations)75 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(439)801 -1785 y @beginspecial @setspecial @endspecial(58.4)h(In)m(tegrals)40 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(440)801 -1948 y @beginspecial @setspecial @endspecial(58.5)h(Ordinary)28 -b(Di\013eren)m(tial)h(Equations)39 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(441)801 2111 y @beginspecial -@setspecial @endspecial(58.6)h(Bounds)29 b(of)i(a)f(F)-8 -b(unction)94 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(442)801 2273 y @beginspecial -@setspecial @endspecial(58.7)h(Cheb)m(yshev)29 b(Curv)m(e)h(Fitting)89 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(443)801 2436 y @beginspecial @setspecial -@endspecial(58.8)h(General)30 b(Curv)m(e)g(Fitting)66 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)j(444)801 2599 y @beginspecial @setspecial -@endspecial(58.9)h(F)-8 b(unction)30 b(Bases)66 b(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(446)664 2852 y @beginspecial -@setspecial @endspecial FN(59)33 b(ODESOL)-12 b(VE:)33 -b(Ordinary)i(di\013eren)m(tial)g(eqns)889 b(449)801 3015 -y @beginspecial @setspecial @endspecial FQ(59.1)49 b(Use)28 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(450) -801 3178 y @beginspecial @setspecial @endspecial(59.2)h(Commen)m(tary) -81 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(451)664 -3431 y @beginspecial @setspecial @endspecial FN(60)33 -b(OR)-9 b(THO)m(VEC:)33 b(scalars)j(and)e(v)m(ectors)1168 -b(453)801 3594 y @beginspecial @setspecial @endspecial -FQ(60.1)49 b(Initialisation)90 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -j(453)801 3757 y @beginspecial @setspecial @endspecial(60.2)h -(Input-Output)i(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(454)801 -3920 y @beginspecial @setspecial @endspecial(60.3)h(Algebraic)29 -b(Op)s(erations)34 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(454)801 -4082 y @beginspecial @setspecial @endspecial(60.4)h(Di\013eren)m(tial) -29 b(Op)s(erations)38 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(456)801 -4245 y @beginspecial @setspecial @endspecial(60.5)h(In)m(tegral)30 -b(Op)s(erations)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(458)664 -4499 y @beginspecial @setspecial @endspecial FN(61)33 -b(PHYSOP:)i(Op)s(erator)f(Calculus)1351 b(461)801 4661 -y @beginspecial @setspecial @endspecial FQ(61.1)49 b(The)30 -b(NONCOM2)g(P)m(ac)m(k)-5 b(age)88 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(461)801 -4824 y @beginspecial @setspecial @endspecial(61.2)h(The)30 -b(PHYSOP)f(pac)m(k)-5 b(age)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(462)p -eop -%%Page: 21 21 -21 20 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(21)586 555 y @beginspecial @setspecial -@endspecial(61.2.1)61 b(T)m(yp)s(e)30 b(declaration)g(commands)f(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(462)586 -718 y @beginspecial @setspecial @endspecial(61.2.2)61 -b(Ordering)28 b(of)j(op)s(erators)g(in)e(an)h(expression)46 -b(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(463)586 881 y @beginspecial -@setspecial @endspecial(61.2.3)61 b(Arithmetic)30 b(op)s(erations)f(on) -h(op)s(erators)k(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(464)586 -1043 y @beginspecial @setspecial @endspecial(61.2.4)61 -b(Sp)s(ecial)29 b(functions)56 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(466)241 -1297 y @beginspecial @setspecial @endspecial FN(62)32 -b(PM:)k(A)f(REDUCE)f(pattern)g(matc)m(her)1115 b(469)377 -1460 y @beginspecial @setspecial @endspecial FQ(62.1)49 -b(The)30 b(Matc)m(h)i(F)-8 b(unction)59 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(470) -377 1622 y @beginspecial @setspecial @endspecial(62.2)i(Quali\014ed)28 -b(Matc)m(hing)47 b(.)e(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(471)377 -1785 y @beginspecial @setspecial @endspecial(62.3)i(Substituting)28 -b(for)i(replacemen)m(ts)60 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(471)377 1948 y @beginspecial -@setspecial @endspecial(62.4)i(Programming)30 b(with)f(P)m(atterns)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(472)241 2202 y @beginspecial @setspecial @endspecial -FN(63)32 b(QSUM:)j FK(q)p FN(-h)m(yp)s(ergeometric)g(sums)1254 -b(475)377 2364 y @beginspecial @setspecial @endspecial -FQ(63.1)49 b(Elemen)m(tary)31 b FM(q)p FQ(-F)-8 b(unctions)70 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)h(475)377 2527 y @beginspecial @setspecial -@endspecial(63.2)i(The)30 b FJ(QGOSPER)e FQ(op)s(erator)63 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)h(477)377 2690 y @beginspecial @setspecial -@endspecial(63.3)i(The)30 b FJ(QSUMRECURSION)d FQ(op)s(erator)59 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(477)377 2852 y @beginspecial @setspecial @endspecial(63.4)i -(Global)30 b(V)-8 b(ariables)29 b(and)h(Switc)m(hes)c(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(478)241 3106 y @beginspecial @setspecial @endspecial -FN(64)32 b(RANDPOL)-9 b(Y:)36 b(Random)e(p)s(olynomials)1065 -b(481)377 3269 y @beginspecial @setspecial @endspecial -FQ(64.1)49 b(Optional)29 b(argumen)m(ts)88 b(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(482)377 3431 y @beginspecial @setspecial @endspecial(64.2)i(Adv)-5 -b(anced)30 b(use)g(of)h(RANDPOL)-8 b(Y)31 b(.)46 b(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(482)377 -3594 y @beginspecial @setspecial @endspecial(64.3)i(Examples)71 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(484)241 -3848 y @beginspecial @setspecial @endspecial FN(65)32 -b(RA)-9 b(T)g(APRX:)37 b(Rational)e(Appro)m(ximations)956 -b(487)377 4011 y @beginspecial @setspecial @endspecial -FQ(65.1)80 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)h(487)586 4173 y @beginspecial @setspecial -@endspecial(65.1.1)61 b(P)m(erio)s(dic)29 b(Represen)m(tation)63 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -h(488)586 4336 y @beginspecial @setspecial @endspecial(65.1.2)61 -b(Con)m(tin)m(ued)30 b(F)-8 b(ractions)66 b(.)46 b(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(488)586 -4499 y @beginspecial @setspecial @endspecial(65.1.3)61 -b(P)m(ad)m(\023)-43 b(e)32 b(Appro)m(ximation)45 b(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(490)241 -4752 y @beginspecial @setspecial @endspecial FN(66)32 -b(REA)m(CTEQN:)i(Chemical)f(reaction)j(equations)736 -b(493)p eop -%%Page: 22 22 -22 21 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(22)2383 b FM(CONTENTS)664 555 y @beginspecial @setspecial -@endspecial FN(67)33 b(REDLOG:)h(Logic)i(System)1572 -b(495)801 718 y @beginspecial @setspecial @endspecial -FQ(67.1)49 b(In)m(tro)s(duction)26 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(495)1010 881 y @beginspecial @setspecial @endspecial(67.1.1) -61 b(Con)m(texts)93 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(495)1010 -1043 y @beginspecial @setspecial @endspecial(67.1.2)61 -b(Ov)m(erview)74 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(496)801 -1206 y @beginspecial @setspecial @endspecial(67.2)h(Con)m(text)31 -b(Selection)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(497)801 -1369 y @beginspecial @setspecial @endspecial(67.3)h(F)-8 -b(ormat)31 b(and)f(Handling)f(of)h(F)-8 b(orm)m(ulas)91 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(497) -1010 1532 y @beginspecial @setspecial @endspecial(67.3.1)61 -b(First-order)29 b(Op)s(erators)84 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(497)1010 1694 -y @beginspecial @setspecial @endspecial(67.3.2)61 b(OFSF)30 -b(Op)s(erators)61 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(498)1010 1857 y -@beginspecial @setspecial @endspecial(67.3.3)61 b(D)m(VFSF)31 -b(Op)s(erators)68 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(498)1010 2020 y @beginspecial -@setspecial @endspecial(67.3.4)61 b(A)m(CFSF)30 b(Op)s(erators)72 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(499)1010 2182 y @beginspecial @setspecial -@endspecial(67.3.5)61 b(Extended)29 b(Built-in)f(Commands)34 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(499)1010 -2345 y @beginspecial @setspecial @endspecial(67.3.6)61 -b(Global)29 b(Switc)m(hes)24 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(499)801 -2508 y @beginspecial @setspecial @endspecial(67.4)h(Simpli\014cation)e -(.)f(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(499)1010 2671 y -@beginspecial @setspecial @endspecial(67.4.1)61 b(Standard)29 -b(Simpli\014er)23 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(499)1010 2833 y @beginspecial -@setspecial @endspecial(67.4.2)61 b(T)-8 b(ableau)30 -b(Simpli\014er)71 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(500)1010 2996 y @beginspecial -@setspecial @endspecial(67.4.3)61 b(Gr\177)-45 b(obner)29 -b(Simpli\014er)58 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(500)801 3159 y @beginspecial -@setspecial @endspecial(67.5)h(Normal)30 b(F)-8 b(orms)26 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(500)1010 3321 -y @beginspecial @setspecial @endspecial(67.5.1)61 b(Bo)s(olean)30 -b(Normal)g(F)-8 b(orms)93 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)j(501)1010 3484 y @beginspecial -@setspecial @endspecial(67.5.2)61 b(Miscellaneous)29 -b(Normal)h(F)-8 b(orms)80 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)j(501)801 3647 y @beginspecial @setspecial -@endspecial(67.6)h(Quan)m(ti\014er)29 b(Elimination)e(and)j(V)-8 -b(arian)m(ts)79 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)j(501)1010 3810 y @beginspecial @setspecial @endspecial(67.6.1)61 -b(Quan)m(ti\014er)29 b(Elimination)40 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(501)1010 -3972 y @beginspecial @setspecial @endspecial(67.6.2)61 -b(Generic)30 b(Quan)m(ti\014er)f(Elimination)60 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(502)1010 -4135 y @beginspecial @setspecial @endspecial(67.6.3)61 -b(Linear)29 b(Optimization)60 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(503)664 4389 -y @beginspecial @setspecial @endspecial FN(68)33 b(RESET:)h(Reset)h -(REDUCE)g(to)g(its)f(initial)h(state)711 b(505)664 4642 -y @beginspecial @setspecial @endspecial(69)33 b(RESIDUE:)i(A)f(residue) -i(pac)m(k)-6 b(age)1331 b(507)664 4896 y @beginspecial -@setspecial @endspecial(70)33 b(RLFI:)h(REDUCE)h(LaT)-9 -b(eX)34 b(form)m(ula)h(in)m(terface)781 b(509)p eop -%%Page: 23 23 -23 22 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(23)241 555 y @beginspecial @setspecial -@endspecial FN(71)32 b(R)m(OOTS:)i(A)h(REDUCE)g(ro)s(ot)g(\014nding)h -(pac)m(k)-6 b(age)741 b(513)377 718 y @beginspecial @setspecial -@endspecial FQ(71.1)49 b(T)-8 b(op)31 b(Lev)m(el)f(F)-8 -b(unctions)70 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(513)586 881 -y @beginspecial @setspecial @endspecial(71.1.1)61 b(F)-8 -b(unctions)30 b(that)h(refer)f(to)h(real)f(ro)s(ots)h(only)66 -b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(513)586 1043 -y @beginspecial @setspecial @endspecial(71.1.2)61 b(F)-8 -b(unctions)30 b(that)h(return)e(b)s(oth)h(real)g(and)g(complex)g(ro)s -(ots)57 b(.)46 b(.)h(514)586 1206 y @beginspecial @setspecial -@endspecial(71.1.3)61 b(Other)30 b(top)h(lev)m(el)f(functions)88 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(515)377 1369 y @beginspecial @setspecial @endspecial(71.2)i(Switc)m -(hes)30 b(Used)g(in)f(Input)d(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(516)377 -1532 y @beginspecial @setspecial @endspecial(71.3)i(Ro)s(ot)31 -b(P)m(ac)m(k)-5 b(age)33 b(Switc)m(hes)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(517)241 -1785 y @beginspecial @setspecial @endspecial FN(72)32 -b(RSOL)-12 b(VE:)35 b(Rational)g(p)s(olynomial)g(solv)m(er)990 -b(519)377 1948 y @beginspecial @setspecial @endspecial -FQ(72.1)49 b(Examples)71 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(520)241 2202 y @beginspecial @setspecial @endspecial -FN(73)32 b(SCOPE:)i(Source)i(co)s(de)f(optimisation)g(pac)m(k)-6 -b(age)741 b(521)241 2455 y @beginspecial @setspecial -@endspecial(74)32 b(SETS:)j(A)f(basic)i(set)f(theory)g(pac)m(k)-6 -b(age)1151 b(525)377 2618 y @beginspecial @setspecial -@endspecial FQ(74.1)49 b(In\014x)29 b(op)s(erator)i(precedence)84 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)h(525)377 2781 y @beginspecial @setspecial -@endspecial(74.2)i(Explicit)28 b(set)j(represen)m(tation)g(and)f(MKSET) -68 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(526)377 -2943 y @beginspecial @setspecial @endspecial(74.3)i(Union)29 -b(and)h(in)m(tersection)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(526)377 -3106 y @beginspecial @setspecial @endspecial(74.4)i(Sym)m(b)s(olic)29 -b(set)i(expressions)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(526)377 3269 y -@beginspecial @setspecial @endspecial(74.5)i(Set)31 b(di\013erence)63 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(527)377 3431 -y @beginspecial @setspecial @endspecial(74.6)i(Predicates)31 -b(on)f(sets)94 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(527)586 -3594 y @beginspecial @setspecial @endspecial(74.6.1)61 -b(Set)31 b(mem)m(b)s(ership)90 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(528)586 -3757 y @beginspecial @setspecial @endspecial(74.6.2)61 -b(Set)31 b(inclusion)79 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(528)586 -3920 y @beginspecial @setspecial @endspecial(74.6.3)61 -b(Set)31 b(equalit)m(y)45 b(.)g(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(530)241 -4173 y @beginspecial @setspecial @endspecial FN(75)32 -b(SP)-9 b(ARSE:)36 b(Sparse)f(Matrices)1495 b(531)377 -4336 y @beginspecial @setspecial @endspecial FQ(75.1)49 -b(In)m(tro)s(duction)27 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(531)377 4499 y @beginspecial @setspecial @endspecial(75.2)i(Sparse)30 -b(Matrix)g(Calculations)78 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(531)377 4661 y @beginspecial -@setspecial @endspecial(75.3)i(Linear)30 b(Algebra)g(P)m(ac)m(k)-5 -b(age)33 b(for)d(Sparse)g(Matrices)57 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)h(532)586 4824 y @beginspecial @setspecial -@endspecial(75.3.1)61 b(Basic)31 b(matrix)f(handling)58 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(532)p eop -%%Page: 24 24 -24 23 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(24)2383 b FM(CONTENTS)1010 555 y @beginspecial @setspecial -@endspecial FQ(75.3.2)61 b(Constructors)76 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(532)1010 718 y @beginspecial @setspecial @endspecial(75.3.3)61 -b(High)29 b(lev)m(el)h(algorithms)24 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(532)1010 -881 y @beginspecial @setspecial @endspecial(75.3.4)61 -b(Predicates)35 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(533)664 -1134 y @beginspecial @setspecial @endspecial FN(76)33 -b(SPDE:)i(Symmetry)e(groups)j(of)f(PDE's)1095 b(535)801 -1297 y @beginspecial @setspecial @endspecial FQ(76.1)49 -b(System)30 b(F)-8 b(unctions)30 b(and)f(V)-8 b(ariables)30 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -j(535)664 1551 y @beginspecial @setspecial @endspecial -FN(77)33 b(SPECFN:)h(P)m(ac)m(k)-6 b(age)36 b(for)f(sp)s(ecial)g -(functions)895 b(539)801 1713 y @beginspecial @setspecial -@endspecial FQ(77.1)49 b(Simpli\014cation)26 b(and)k(Appro)m(ximation) -22 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j -(541)801 1876 y @beginspecial @setspecial @endspecial(77.2)h(Constan)m -(ts)58 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(541)801 -2039 y @beginspecial @setspecial @endspecial(77.3)h(F)-8 -b(unctions)69 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(541) -664 2292 y @beginspecial @setspecial @endspecial FN(78)33 -b(SPECFN2:)46 b(Sp)s(ecial)35 b(sp)s(ecial)g(functions)1034 -b(545)801 2455 y @beginspecial @setspecial @endspecial -FQ(78.1)49 b(REDUCE)30 b(op)s(erator)h(HYPER)m(GEOMETRIC)g(.)46 -b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(545)801 2618 -y @beginspecial @setspecial @endspecial(78.2)h(Enlarging)28 -b(the)j(HYPER)m(GEOMETRIC)f(op)s(erator)c(.)45 b(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(546)664 2872 y @beginspecial @setspecial @endspecial -FN(79)33 b(SUM:)i(A)g(pac)m(k)-6 b(age)36 b(for)f(series)g(summation) -939 b(547)664 3125 y @beginspecial @setspecial @endspecial(80)33 -b(SUSY2:)47 b(Sup)s(er)35 b(Symmetry)1513 b(551)801 3288 -y @beginspecial @setspecial @endspecial FQ(80.1)49 b(Op)s(erators)57 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(551)1010 -3451 y @beginspecial @setspecial @endspecial(80.1.1)61 -b(Op)s(erators)29 b(for)h(constructing)g(Ob)5 b(jects)43 -b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(552)1010 -3613 y @beginspecial @setspecial @endspecial(80.1.2)61 -b(Commands)71 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(553)801 -3776 y @beginspecial @setspecial @endspecial(80.2)h(Options)69 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(555)664 -4030 y @beginspecial @setspecial @endspecial FN(81)33 -b(SYMMETR)-9 b(Y:)35 b(Symmetric)f(matrices)1089 b(557)801 -4192 y @beginspecial @setspecial @endspecial FQ(81.1)49 -b(Op)s(erators)29 b(for)i(linear)d(represen)m(tations)e(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(557)801 -4355 y @beginspecial @setspecial @endspecial(81.2)h(Displa)m(y)29 -b(Op)s(erators)83 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(559)664 -4609 y @beginspecial @setspecial @endspecial FN(82)33 -b(T)-9 b(A)g(YLOR:)35 b(Manipulation)g(of)g(T)-9 b(a)m(ylor)35 -b(series)855 b(561)664 4862 y @beginspecial @setspecial -@endspecial(83)33 b(TPS:)i(A)g(truncated)f(p)s(o)m(w)m(er)h(series)g -(pac)m(k)-6 b(age)891 b(567)p eop -%%Page: 25 25 -25 24 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(25)377 555 y @beginspecial @setspecial -@endspecial(83.1)49 b(Basic)31 b(T)-8 b(runcated)30 b(P)m(o)m(w)m(er)i -(Series)53 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)h(568)586 718 y @beginspecial @setspecial -@endspecial(83.1.1)61 b(PS)30 b(Op)s(erator)83 b(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(568)586 881 y @beginspecial @setspecial -@endspecial(83.1.2)61 b(PSORDLIM)30 b(Op)s(erator)57 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(569)377 1043 y @beginspecial @setspecial @endspecial(83.2)i(Con)m -(trolling)29 b(P)m(o)m(w)m(er)i(Series)43 b(.)j(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(570)586 -1206 y @beginspecial @setspecial @endspecial(83.2.1)61 -b(PSTERM)30 b(Op)s(erator)88 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(570)586 1369 -y @beginspecial @setspecial @endspecial(83.2.2)61 b(PSORDER)30 -b(Op)s(erator)g(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)h(570)586 1532 y @beginspecial -@setspecial @endspecial(83.2.3)61 b(PSSETORDER)29 b(Op)s(erator)64 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(570)586 1694 y @beginspecial @setspecial @endspecial(83.2.4)61 -b(PSDEPV)-10 b(AR)30 b(Op)s(erator)51 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(571)586 -1857 y @beginspecial @setspecial @endspecial(83.2.5)61 -b(PSEXP)-8 b(ANSIONPT)29 b(op)s(erator)76 b(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(571)586 2020 y @beginspecial -@setspecial @endspecial(83.2.6)61 b(PSFUNCTION)30 b(Op)s(erator)79 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h -(571)586 2182 y @beginspecial @setspecial @endspecial(83.2.7)61 -b(PSCHANGEV)-10 b(AR)30 b(Op)s(erator)53 b(.)46 b(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(571)586 2345 y @beginspecial -@setspecial @endspecial(83.2.8)61 b(PSREVERSE)29 b(Op)s(erator)70 -b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -h(572)586 2508 y @beginspecial @setspecial @endspecial(83.2.9)61 -b(PSCOMPOSE)28 b(Op)s(erator)44 b(.)h(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(572)586 2671 y @beginspecial -@setspecial @endspecial(83.2.10)16 b(PSSUM)30 b(Op)s(erator)23 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)h(573)586 2833 y @beginspecial @setspecial -@endspecial(83.2.11)16 b(Arithmetic)30 b(Op)s(erations)40 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)h(574)586 2996 y @beginspecial @setspecial @endspecial(83.2.12)16 -b(Di\013eren)m(tiation)84 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(575)377 -3159 y @beginspecial @setspecial @endspecial(83.3)i(Restrictions)30 -b(and)g(Kno)m(wn)f(Bugs)47 b(.)f(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(575)241 3412 y @beginspecial -@setspecial @endspecial FN(84)32 b(TRI:)j(T)-9 b(eX)35 -b(REDUCE)f(in)m(terface)1336 b(577)377 3575 y @beginspecial -@setspecial @endspecial FQ(84.1)49 b(Switc)m(hes)30 b(for)g(TRI)61 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(577)586 3738 y @beginspecial -@setspecial @endspecial(84.1.1)61 b(Adding)29 b(T)-8 -b(ranslations)60 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(578)377 3901 y @beginspecial -@setspecial @endspecial(84.2)i(Examples)30 b(of)g(Use)77 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(579)241 4154 y @beginspecial -@setspecial @endspecial FN(85)32 b(TRIGSIMP:)j(T)-9 b(rigonometric)36 -b(simpli\014cation)801 b(583)377 4317 y @beginspecial -@setspecial @endspecial FQ(85.1)49 b(Simpli\014ying)26 -b(trigonometric)k(expressions)73 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(583)377 4480 y @beginspecial @setspecial -@endspecial(85.2)i(F)-8 b(actorising)31 b(trigonometric)f(expressions) -38 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(585)377 -4642 y @beginspecial @setspecial @endspecial(85.3)i(GCDs)31 -b(of)f(trigonometric)h(expressions)57 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(586)241 4896 y @beginspecial -@setspecial @endspecial FN(86)32 b(WU:)k(W)-9 b(u)35 -b(algorithm)f(for)h(p)s(oly)g(systems)1025 b(587)p eop -%%Page: 26 26 -26 25 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(26)2383 b FM(CONTENTS)664 555 y @beginspecial @setspecial -@endspecial FN(87)33 b(X)m(COLOR:)g(Color)i(factor)g(in)g(gauge)h -(theory)879 b(589)664 809 y @beginspecial @setspecial -@endspecial(88)33 b(XIDEAL:)h(Gr\177)-52 b(obner)35 b(for)h(exterior)e -(algebra)915 b(593)801 972 y @beginspecial @setspecial -@endspecial FQ(88.1)49 b(Op)s(erators)57 b(.)45 b(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)j(594)801 1134 y @beginspecial @setspecial -@endspecial(88.2)h(Switc)m(hes)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)j(595)801 1297 y @beginspecial @setspecial -@endspecial(88.3)h(Examples)71 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(596)664 1551 y @beginspecial @setspecial @endspecial -FN(89)33 b(ZEILBER)m(G:)h(Indef)h(&)g(de\014nite)g(summation)828 -b(599)801 1713 y @beginspecial @setspecial @endspecial -FQ(89.1)49 b(The)30 b(GOSPER)f(summation)g(op)s(erator)39 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(599) -801 1876 y @beginspecial @setspecial @endspecial(89.2)h(EXTENDED)p -1541 1876 28 4 v 33 w(GOSPER)29 b(op)s(erator)66 b(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(600)801 -2039 y @beginspecial @setspecial @endspecial(89.3)h(SUMRECURSION)29 -b(op)s(erator)42 b(.)j(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)j(601)801 2202 y @beginspecial -@setspecial @endspecial(89.4)h(HYPERRECURSION)29 b(op)s(erator)58 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -j(601)801 2364 y @beginspecial @setspecial @endspecial(89.5)h(HYPERSUM) -30 b(op)s(erator)55 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(602)801 2527 -y @beginspecial @setspecial @endspecial(89.6)h(SUMTOHYPER)29 -b(op)s(erator)60 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(603)801 2690 y @beginspecial -@setspecial @endspecial(89.7)h(Simpli\014cation)26 b(Op)s(erators)47 -b(.)f(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)j(604)664 2943 y @beginspecial @setspecial -@endspecial FN(90)33 b(ZTRANS:)h FL(Z)7 b FN(-transform)34 -b(pac)m(k)-6 b(age)1259 b(607)664 3311 y @beginspecial -@setspecial @endspecial FR(I)s(I)s(I)112 b(Standard)38 -b(Lisp)g(Rep)s(ort)1504 b(611)664 3564 y @beginspecial -@setspecial @endspecial FN(91)33 b(The)h(Standard)h(Lisp)g(Rep)s(ort) -1480 b(613)801 3727 y @beginspecial @setspecial @endspecial -FQ(91.1)49 b(In)m(tro)s(duction)26 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)j(613)801 3890 y @beginspecial @setspecial @endspecial(91.2)h -(Preliminaries)70 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(615)1010 -4052 y @beginspecial @setspecial @endspecial(91.2.1)61 -b(Primitiv)m(e)28 b(Data)k(T)m(yp)s(es)74 b(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(615)1010 -4215 y @beginspecial @setspecial @endspecial(91.2.2)61 -b(Classes)29 b(of)i(Primitiv)m(e)d(Data)k(T)m(yp)s(es)81 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(619)1010 -4378 y @beginspecial @setspecial @endspecial(91.2.3)61 -b(Structures)35 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(619)1010 -4541 y @beginspecial @setspecial @endspecial(91.2.4)61 -b(F)-8 b(unction)30 b(Descriptions)70 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(620)1010 -4703 y @beginspecial @setspecial @endspecial(91.2.5)61 -b(F)-8 b(unction)30 b(T)m(yp)s(es)38 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(621)1010 -4866 y @beginspecial @setspecial @endspecial(91.2.6)61 -b(Error)29 b(and)h(W)-8 b(arning)30 b(Messages)73 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)j(622)p -eop -%%Page: 27 27 -27 26 bop 241 299 a @beginspecial @setspecial @endspecial -FM(CONTENTS)2380 b FQ(27)586 555 y @beginspecial @setspecial -@endspecial(91.2.7)61 b(Commen)m(ts)25 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -h(622)377 718 y @beginspecial @setspecial @endspecial(91.3)i(F)-8 -b(unctions)69 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(622) -586 881 y @beginspecial @setspecial @endspecial(91.3.1)61 -b(Elemen)m(tary)30 b(Predicates)45 b(.)h(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(622)586 1043 y -@beginspecial @setspecial @endspecial(91.3.2)61 b(F)-8 -b(unctions)30 b(on)g(Dotted-P)m(airs)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(625)586 1206 y @beginspecial -@setspecial @endspecial(91.3.3)61 b(Iden)m(ti\014ers)51 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(627)586 1369 y @beginspecial -@setspecial @endspecial(91.3.4)61 b(Prop)s(ert)m(y)30 -b(List)g(F)-8 b(unctions)60 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(629)586 1532 y @beginspecial -@setspecial @endspecial(91.3.5)61 b(F)-8 b(unction)30 -b(De\014nition)d(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)h(631)586 1694 y @beginspecial -@setspecial @endspecial(91.3.6)61 b(V)-8 b(ariables)30 -b(and)g(Bindings)91 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)h(633)586 1857 y @beginspecial @setspecial -@endspecial(91.3.7)61 b(Program)31 b(F)-8 b(eature)31 -b(F)-8 b(unctions)63 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)h(635)586 2020 y @beginspecial @setspecial -@endspecial(91.3.8)61 b(Error)30 b(Handling)51 b(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)h(638)586 2182 y @beginspecial @setspecial -@endspecial(91.3.9)61 b(V)-8 b(ectors)84 b(.)46 b(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)h(639)586 2345 y @beginspecial @setspecial @endspecial(91.3.10) -16 b(Bo)s(olean)31 b(F)-8 b(unctions)30 b(and)g(Conditionals)62 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(640)586 -2508 y @beginspecial @setspecial @endspecial(91.3.11)16 -b(Arithmetic)30 b(F)-8 b(unctions)22 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(641)586 -2671 y @beginspecial @setspecial @endspecial(91.3.12)16 -b(MAP)31 b(Comp)s(osite)e(F)-8 b(unctions)72 b(.)46 b(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(646)586 2833 -y @beginspecial @setspecial @endspecial(91.3.13)16 b(Comp)s(osite)30 -b(F)-8 b(unctions)32 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(648)586 2996 y @beginspecial -@setspecial @endspecial(91.3.14)16 b(The)30 b(In)m(terpreter)42 -b(.)k(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)h(653)586 3159 y @beginspecial @setspecial -@endspecial(91.3.15)16 b(Input)29 b(and)h(Output)80 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)h(655)586 3321 y @beginspecial @setspecial @endspecial(91.3.16) -16 b(LISP)29 b(Reader)77 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(660)377 -3484 y @beginspecial @setspecial @endspecial(91.4)i(System)30 -b(GLOBAL)h(V)-8 b(ariables)62 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(660)377 3647 -y @beginspecial @setspecial @endspecial(91.5)i(The)30 -b(Extended)g(Syn)m(tax)80 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(662)586 -3810 y @beginspecial @setspecial @endspecial(91.5.1)61 -b(De\014nition)53 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(662)586 -3972 y @beginspecial @setspecial @endspecial(91.5.2)61 -b(The)30 b(Extended)g(Syn)m(tax)g(Rules)k(.)46 b(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)h(664)241 4340 y @beginspecial -@setspecial @endspecial FR(IV)111 b(App)s(endix)2104 -b(667)241 4593 y @beginspecial @setspecial @endspecial -FN(A)57 b(Reserv)m(ed)36 b(Iden)m(ti\014ers)1783 b(669)241 -4847 y @beginspecial @setspecial @endspecial(Index)2573 -b(671)p eop -%%Page: 28 28 -28 27 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(28)2383 b FM(CONTENTS)p eop -%%Page: 29 29 -29 28 bop 241 299 a @beginspecial @setspecial @endspecial -1483 x @beginspecial @setspecial @endspecial 1479 2040 -a FI(P)-5 b(art)65 b(I)461 2505 y FT(REDUCE)77 b(User's)e(Man)-6 -b(ual)1690 5187 y FQ(29)p eop -%%Page: 30 30 -30 29 bop 664 299 a @beginspecial @setspecial @endspecial -eop -%%Page: 31 31 -31 30 bop 241 299 a @beginspecial @setspecial @endspecial -2898 w FQ(31)1234 2036 y FT(REDUCE)1226 2266 y FS(User's)52 -b(Man)l(ual)1342 2474 y(V)-13 b(ersion)52 b(3.7)1279 -2940 y FR(An)m(thon)m(y)37 b(C.)h(Hearn)1132 3056 y(San)m(ta)g(Monica,) -g(CA,)f(USA)1141 3282 y(Email:)48 b(reduce@rand.org)1447 -3748 y(Marc)m(h)38 b(1999)p eop -%%Page: 32 32 -32 31 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(32)664 2518 y(Cop)m(yrigh)m(t)1116 2515 y(c)1091 2518 -y FP(\015)p FQ(1999)32 b(An)m(thon)m(y)f(C.)f(Hearn.)41 -b(All)29 b(righ)m(ts)h(reserv)m(ed.)664 2744 y(Registered)e(system)h -(holders)d(ma)m(y)j(repro)s(duce)e(all)g(or)i(an)m(y)f(part)g(of)g -(this)g(publication)664 2857 y(for)42 b(in)m(ternal)f(purp)s(oses,)j -(pro)m(vided)d(that)i(the)f(source)h(of)f(the)h(material)e(is)h -(clearly)664 2970 y(ac)m(kno)m(wledged,)32 b(and)d(the)i(cop)m(yrigh)m -(t)g(notice)f(is)g(retained.)p eop -%%Page: 33 33 -33 32 bop 241 299 a @beginspecial @setspecial @endspecial -970 x FT(Abstract)241 1764 y FQ(This)37 b(do)s(cumen)m(t)j(pro)m(vides) -e(the)h(user)g(with)f(a)i(description)d(of)j(the)g(algebraic)f(pro-)241 -1877 y(gramming)29 b(system)i(REDUCE.)f(The)g(capabilities)e(of)j(this) -e(system)i(include:)241 1982 y @beginspecial @setspecial -@endspecial 352 2114 a(1.)46 b(expansion)29 b(and)h(ordering)f(of)i(p)s -(olynomials)c(and)j(rational)g(functions,)241 2169 y -@beginspecial @setspecial @endspecial 352 2302 a(2.)46 -b(substitutions)28 b(and)i(pattern)g(matc)m(hing)h(in)e(a)h(wide)g(v)-5 -b(ariet)m(y)30 b(of)h(forms,)241 2357 y @beginspecial -@setspecial @endspecial 352 2490 a(3.)46 b(automatic)31 -b(and)f(user)g(con)m(trolled)g(simpli\014cation)d(of)j(expressions,)241 -2545 y @beginspecial @setspecial @endspecial 352 2677 -a(4.)46 b(calculations)29 b(with)h(sym)m(b)s(olic)e(matrices,)241 -2732 y @beginspecial @setspecial @endspecial 352 2865 -a(5.)46 b(arbitrary)29 b(precision)g(in)m(teger)h(and)g(real)g -(arithmetic,)241 2920 y @beginspecial @setspecial @endspecial -352 3053 a(6.)46 b(facilities)29 b(for)h(de\014ning)e(new)i(functions)f -(and)h(extending)f(program)i(syn)m(tax,)241 3108 y @beginspecial -@setspecial @endspecial 352 3240 a(7.)46 b(analytic)30 -b(di\013eren)m(tiation)f(and)h(in)m(tegration,)241 3295 -y @beginspecial @setspecial @endspecial 352 3428 a(8.)46 -b(factorization)31 b(of)g(p)s(olynomials,)241 3483 y -@beginspecial @setspecial @endspecial 352 3615 a(9.)46 -b(facilities)29 b(for)h(the)g(solution)f(of)i(a)g(v)-5 -b(ariet)m(y)30 b(of)h(algebraic)f(equations,)241 3670 -y @beginspecial @setspecial @endspecial 306 3803 a(10.)47 -b(facilities)29 b(for)h(the)g(output)g(of)h(expressions)e(in)g(a)i(v)-5 -b(ariet)m(y)30 b(of)h(formats,)241 3858 y @beginspecial -@setspecial @endspecial 306 3991 a(11.)47 b(facilities)29 -b(for)h(generating)g(n)m(umerical)f(programs)h(from)g(sym)m(b)s(olic)f -(input,)241 4046 y @beginspecial @setspecial @endspecial -306 4178 a(12.)47 b(Dirac)31 b(matrix)e(calculations)h(of)g(in)m -(terest)h(to)g(high)e(energy)i(ph)m(ysicists.)1690 5187 -y(33)p eop -%%Page: 34 34 -34 33 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(34)p eop -%%Page: 35 35 -35 34 bop 241 299 a @beginspecial @setspecial @endspecial -970 x FT(Ac)-6 b(kno)g(wledgmen)g(t)241 1764 y FQ(The)41 -b(pro)s(duction)f(of)j(this)e(v)m(ersion)g(of)i(the)f(man)m(ual)f(has)h -(b)s(een)g(the)g(result)f(of)h(the)241 1877 y(con)m(tributions)27 -b(of)h(a)h(large)g(n)m(um)m(b)s(er)e(of)h(individuals)c(who)k(ha)m(v)m -(e)i(tak)m(en)f(the)g(time)f(and)241 1990 y(e\013ort)35 -b(to)g(suggest)h(impro)m(v)m(emen)m(ts)f(to)g(previous)e(v)m(ersions,)i -(and)f(to)h(draft)g(new)f(sec-)241 2103 y(tions.)77 b(P)m(articular)42 -b(thanks)g(are)i(due)e(to)h(Gerry)g(Ra)m(yna,)k(who)42 -b(pro)m(vided)g(a)h(draft)241 2216 y(rewrite)26 b(of)g(most)h(of)g(the) -g(\014rst)e(half)h(of)h(the)f(man)m(ual.)39 b(Other)26 -b(p)s(eople)g(who)g(ha)m(v)m(e)h(made)241 2329 y(signi\014can)m(t)k -(con)m(tributions)g(ha)m(v)m(e)i(included)d(John)h(Fitc)m(h,)i(Martin)f -(Griss,)g(Stan)g(Ka-)241 2441 y(men)m(y)-8 b(,)25 b(Jed)d(Marti,)i -(Herb)s(ert)e(Melenk,)i(Don)f(Morrison,)g(Arth)m(ur)e(Norman,)k(Eb)s -(erhard)241 2554 y(Sc)m(hr)s(\177)-48 b(ufer,)31 b(Larry)g(Sew)m(ard)h -(and)f(W)-8 b(alter)33 b(Tietze.)46 b(Finally)-8 b(,)31 -b(Ric)m(hard)g(Hitt)h(pro)s(duced)241 2667 y(a)i(T)371 -2687 y(E)421 2667 y(X)f(v)m(ersion)g(of)h(the)g(REDUCE)f(3.3)i(man)m -(ual,)f(whic)m(h)e(has)i(b)s(een)f(a)h(useful)d(guide)241 -2780 y(for)f(the)g(pro)s(duction)f(of)h(the)h(L)1283 -2763 y FO(A)1322 2780 y FQ(T)1373 2800 y(E)1423 2780 -y(X)g(v)m(ersion)f(of)g(this)f(man)m(ual.)1690 5187 y(35)p -eop -%%Page: 36 36 -36 35 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(36)p eop -%%Page: 37 37 -37 36 bop 241 299 a @beginspecial @setspecial @endspecial -165 x @beginspecial @setspecial @endspecial 764 x FI(Chapter)64 -b(1)241 1693 y FT(In)-6 b(tro)6 b(ductory)78 b(Information)241 -2187 y FQ(REDUCE)36 b(is)f(a)i(system)f(for)h(carrying)e(out)i -(algebraic)f(op)s(erations)f(accurately)-8 b(,)40 b(no)241 -2300 y(matter)d(ho)m(w)f(complicated)f(the)i(expressions)d(b)s(ecome.) -59 b(It)36 b(can)g(manipulate)f(p)s(oly-)241 2413 y(nomials)c(in)g(a)j -(v)-5 b(ariet)m(y)33 b(of)g(forms,)g(b)s(oth)f(expanding)f(and)h -(factoring)h(them,)h(and)e(ex-)241 2526 y(tract)39 b(v)-5 -b(arious)37 b(parts)h(of)g(them)g(as)g(required.)62 b(REDUCE)37 -b(can)i(also)f(do)f(di\013eren)m(ti-)241 2639 y(ation)k(and)g(in)m -(tegration,)j(but)d(w)m(e)h(shall)e(only)g(sho)m(w)h(trivial)f -(examples)h(of)g(this)g(in)241 2752 y(this)26 b(in)m(tro)s(duction.)38 -b(Other)26 b(topics)h(not)g(considered)f(include)f(the)j(use)f(of)g -(arra)m(ys,)h(the)241 2865 y(de\014nition)f(of)j(pro)s(cedures)f(and)g -(op)s(erators,)i(the)f(sp)s(eci\014c)e(routines)h(for)h(high)e(energy) -241 2978 y(ph)m(ysics)j(calculations,)i(the)g(use)g(of)g(\014les)f(to)h -(eliminate)f(rep)s(etitious)f(t)m(yping)h(and)h(for)241 -3091 y(sa)m(ving)d(results,)f(and)h(the)h(editing)e(of)h(the)h(input)d -(text.)241 3253 y(Also)40 b(not)h(considered)f(in)f(an)m(y)j(detail)e -(in)f(this)h(in)m(tro)s(duction)f(are)i(the)g(man)m(y)g(opt-)241 -3366 y(ions)28 b(that)h(are)h(a)m(v)-5 b(ailable)28 b(for)h(v)-5 -b(arying)28 b(computational)h(pro)s(cedures,)f(output)h(forms,)241 -3479 y(n)m(um)m(b)s(er)g(systems)h(used,)g(and)g(so)g(on.)241 -3642 y(REDUCE)44 b(is)g(designed)f(to)j(b)s(e)e(an)g(in)m(teractiv)m(e) -i(system,)i(so)d(that)g(the)g(user)f(can)241 3755 y(input)25 -b(an)h(algebraic)h(expression)e(and)h(see)i(its)e(v)-5 -b(alue)26 b(b)s(efore)h(mo)m(ving)f(on)h(to)g(the)g(next)241 -3868 y(calculation.)59 b(F)-8 b(or)37 b(those)h(systems)e(that)i(do)e -(not)h(supp)s(ort)e(in)m(teractiv)m(e)j(use,)g(or)f(for)241 -3981 y(those)c(calculations,)g(esp)s(ecially)e(long)h(ones,)i(for)f -(whic)m(h)e(a)i(standard)f(script)g(can)h(b)s(e)241 4094 -y(de\014ned,)28 b(REDUCE)g(can)h(also)g(b)s(e)f(used)f(in)h(batc)m(h)h -(mo)s(de.)40 b(In)27 b(this)h(case,)i(a)f(sequence)241 -4207 y(of)35 b(commands)g(can)g(b)s(e)g(giv)m(en)g(to)h(REDUCE)f(and)g -(results)e(obtained)i(without)f(an)m(y)241 4319 y(user)29 -b(in)m(teraction)i(during)d(the)i(computation.)241 4469 -y(In)35 b(this)g(in)m(tro)s(duction,)h(w)m(e)g(shall)e(limit)g(ourselv) -m(es)i(to)h(the)f(in)m(teractiv)m(e)h(use)e(of)h(RE-)241 -4568 y(DUCE,)28 b(since)g(this)f(illustrates)g(most)h(completely)g(the) -h(capabilities)d(of)j(the)f(system.)241 4668 y(When)i(REDUCE)g(is)g -(called,)f(it)h(b)s(egins)f(b)m(y)h(prin)m(ting)f(a)h(banner)g(message) -h(lik)m(e:)459 4874 y FH(REDUCE)41 b(3.7,)h(15-Jan-99)e(...)1690 -5187 y FQ(37)p eop -%%Page: 38 38 -38 37 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(38)793 b FM(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTOR)-8 -b(Y)30 b(INF)m(ORMA)-8 b(TION)664 555 y FQ(where)25 b(the)g(v)m(ersion) -f(n)m(um)m(b)s(er)g(and)g(the)h(system)g(release)h(date)f(will)e(c)m -(hange)j(from)e(time)664 655 y(to)31 b(time.)41 b(It)30 -b(then)g(prompts)g(the)g(user)g(for)g(input)e(b)m(y:)882 -861 y FH(1:)664 1067 y FQ(Y)-8 b(ou)43 b(can)f(no)m(w)g(t)m(yp)s(e)g(a) -h(REDUCE)f(statemen)m(t,)47 b(terminated)41 b(b)m(y)h(a)h(semicolon)e -(to)664 1166 y(indicate)30 b(the)g(end)g(of)g(the)h(expression,)e(for)i -(example:)882 1372 y FH(\(x+y+z\)^2;)664 1597 y FQ(This)23 -b(expression)g(w)m(ould)g(normally)g(b)s(e)g(follo)m(w)m(ed)i(b)m(y)f -(another)g(c)m(haracter)i(\(a)p 3340 1508 314 4 v 3340 -1621 4 113 v 54 w FG(Return)p 3650 1621 V 3340 1624 314 -4 v 664 1696 a FQ(on)34 b(an)f(ASCI)s(I)f(k)m(eyb)s(oard\))h(to)i(\\w)m -(ak)m(e)g(up")e(the)h(system,)g(whic)m(h)e(w)m(ould)h(then)g(input)664 -1796 y(the)e(expression,)e(ev)-5 b(aluate)31 b(it,)f(and)g(return)f -(the)i(result:)969 2002 y FH(2)872 b(2)522 b(2)926 2101 -y(X)86 b(+)44 b(2*X*Y)d(+)i(2*X*Z)f(+)h(Y)87 b(+)43 b(2*Y*Z)e(+)j(Z)664 -2320 y FQ(Let)30 b(us)e(review)g(this)g(simple)f(example)i(to)g(learn)f -(a)i(little)d(more)j(ab)s(out)e(the)h(w)m(a)m(y)h(that)664 -2433 y(REDUCE)37 b(w)m(orks.)61 b(First,)38 b(w)m(e)g(note)f(that)h -(REDUCE)f(deals)f(with)g(v)-5 b(ariables,)38 b(and)664 -2546 y(constan)m(ts)23 b(lik)m(e)f(other)g(computer)g(languages,)j(but) -c(that)i(in)e(ev)-5 b(aluating)22 b(the)g(former,)i(a)664 -2659 y(v)-5 b(ariable)21 b(can)g(stand)g(for)h(itself.)36 -b(Expression)20 b(ev)-5 b(aluation)21 b(normally)f(follo)m(ws)h(the)g -(rules)664 2772 y(of)33 b(high)e(sc)m(ho)s(ol)i(algebra,)g(so)g(the)f -(only)g(surprise)e(in)h(the)i(ab)s(o)m(v)m(e)h(example)e(migh)m(t)h(b)s -(e)664 2885 y(that)28 b(the)g(expression)e(w)m(as)i(expanded.)39 -b(REDUCE)28 b(normally)e(expands)g(expressions)664 2998 -y(where)k(p)s(ossible,)e(collecting)i(lik)m(e)f(terms)h(and)g(ordering) -f(the)h(v)-5 b(ariables)29 b(in)g(a)h(sp)s(eci\014c)664 -3111 y(manner.)60 b(Ho)m(w)m(ev)m(er,)41 b(expansion,)c(ordering)f(of)h -(v)-5 b(ariables,)38 b(format)f(of)g(output)g(and)664 -3224 y(so)32 b(on)g(is)e(under)h(con)m(trol)h(of)g(the)f(user,)h(and)f -(v)-5 b(arious)31 b(declarations)g(are)h(a)m(v)-5 b(ailable)31 -b(to)664 3337 y(manipulate)e(these.)664 3499 y(Another)c(c)m -(haracteristic)g(of)f(the)h(ab)s(o)m(v)m(e)g(example)g(is)e(the)i(use)f -(of)g(lo)m(w)m(er)h(case)h(on)e(input)664 3612 y(and)i(upp)s(er)f(case) -i(on)f(output.)40 b(In)25 b(fact,)k(input)24 b(ma)m(y)j(b)s(e)f(in)f -(either)h(mo)s(de,)h(but)f(output)664 3725 y(is)33 b(usually)e(in)h(lo) -m(w)m(er)h(case.)51 b(T)-8 b(o)34 b(mak)m(e)h(the)e(di\013erence)g(b)s -(et)m(w)m(een)h(input)d(and)i(output)664 3838 y(more)23 -b(distinct)e(in)g(this)h(man)m(ual,)i(all)d(expressions)h(in)m(tended)f -(for)i(input)d(will)g(b)s(e)j(sho)m(wn)664 3951 y(in)34 -b(lo)m(w)m(er)i(case)g(and)e(output)h(in)f(upp)s(er)f(case.)57 -b(Ho)m(w)m(ev)m(er,)38 b(for)d(st)m(ylistic)g(reasons,)h(w)m(e)664 -4064 y(represen)m(t)31 b(all)e(single)g(iden)m(ti\014ers)f(in)h(the)i -(text)g(in)e(upp)s(er)g(case.)664 4227 y(Finally)-8 b(,)29 -b(the)i(n)m(umerical)e(prompt)g(can)i(b)s(e)f(used)f(to)i(reference)g -(the)g(result)e(in)g(a)i(later)664 4340 y(computation.)664 -4489 y(As)g(a)f(further)f(illustration)f(of)i(the)h(system)f(features,) -h(the)g(user)f(should)e(try:)882 4695 y FH(for)42 b(i:=)h(1:40)f -(product)e(i;)664 4901 y FQ(The)30 b(result)f(in)g(this)h(case)h(is)e -(the)i(v)-5 b(alue)30 b(of)g(40!,)p eop -%%Page: 39 39 -39 38 bop 241 299 a @beginspecial @setspecial @endspecial -2898 w FQ(39)459 555 y FH(815915283247897)o(734)o(34)o(561)o(12)o(695)o -(96)o(11)o(589)o(42)o(720)o(00)o(00)o(000)o(0)241 761 -y FQ(Y)-8 b(ou)31 b(can)f(also)h(get)g(the)g(same)f(result)g(b)m(y)g -(sa)m(ying)459 967 y FH(factorial)40 b(40;)241 1186 y -FQ(Since)24 b(w)m(e)h(w)m(an)m(t)h(exact)g(results)e(in)f(algebraic)i -(calculations,)g(it)f(is)g(essen)m(tial)h(that)g(in)m(te-)241 -1299 y(ger)h(arithmetic)f(b)s(e)h(p)s(erformed)e(to)j(arbitrary)e -(precision,)g(as)h(in)f(the)h(ab)s(o)m(v)m(e)i(example.)241 -1412 y(F)-8 b(urthermore,)28 b(the)f FJ(FOR)g FQ(statemen)m(t)i(in)c -(the)j(ab)s(o)m(v)m(e)g(is)f(illustrativ)m(e)e(of)i(a)h(whole)e(range) -241 1525 y(of)h(com)m(bining)e(forms)i(that)g(REDUCE)g(supp)s(orts)e -(for)i(the)g(con)m(v)m(enience)i(of)e(the)g(user.)241 -1688 y(Among)k(the)h(man)m(y)f(options)g(in)f(REDUCE)h(is)f(the)h(use)g -(of)h(other)f(n)m(um)m(b)s(er)f(systems,)241 1801 y(suc)m(h)d(as)i(m)m -(ultiple)c(precision)h(\015oating)i(p)s(oin)m(t)f(with)g(an)m(y)h(sp)s -(eci\014ed)e(n)m(um)m(b)s(er)h(of)h(digits)241 1913 y(|)i(of)h(use)f -(if)f(roundo\013)g(in,)h(sa)m(y)-8 b(,)31 b(the)g(100)1665 -1880 y FF(th)1767 1913 y FQ(digit)e(is)g(all)h(that)h(can)f(b)s(e)g -(tolerated.)241 2063 y(In)35 b(man)m(y)h(cases,)j(it)d(is)f(necessary)i -(to)f(use)g(the)h(results)e(of)h(one)g(calculation)g(in)e(suc-)241 -2163 y(ceeding)27 b(calculations.)38 b(One)27 b(w)m(a)m(y)h(to)f(do)g -(this)f(is)g(via)h(an)g(assignmen)m(t)f(for)h(a)g(v)-5 -b(ariable,)241 2262 y(suc)m(h)30 b(as)459 2468 y FH(u)43 -b(:=)g(\(x+y+z\)^2;)241 2687 y FQ(If)29 b(w)m(e)h(no)m(w)g(use)f -FJ(U)g FQ(in)g(later)g(calculations,)h(the)f(v)-5 b(alue)30 -b(of)f(the)h(righ)m(t-hand)f(side)f(of)i(the)241 2800 -y(ab)s(o)m(v)m(e)h(will)d(b)s(e)i(used.)241 2963 y(The)44 -b(results)f(of)i(a)f(giv)m(en)h(calculation)f(are)g(also)h(sa)m(v)m(ed) -g(in)f(the)g(v)-5 b(ariable)44 b FJ(WS)f FQ(\(for)241 -3076 y(W)-8 b(orkSpace\),)30 b(so)f(this)f(can)h(b)s(e)f(used)g(in)f -(the)i(next)g(calculation)f(for)g(further)g(pro)s(cess-)241 -3189 y(ing.)241 3338 y(F)-8 b(or)31 b(example,)f(the)h(expression)459 -3544 y FH(df\(ws,x\);)241 3750 y FQ(follo)m(wing)d(the)i(previous)e(ev) --5 b(aluation)29 b(will)e(calculate)i(the)h(deriv)-5 -b(ativ)m(e)29 b(of)h FJ(\(x+y+z\)^2)241 3850 y FQ(with)f(resp)s(ect)h -(to)h FJ(X)p FQ(.)g(Alternativ)m(ely)-8 b(,)459 4055 -y FH(int\(ws,y\);)241 4275 y FQ(w)m(ould)29 b(calculate)i(the)f(in)m -(tegral)g(of)h(the)f(same)h(expression)e(with)g(resp)s(ect)i(to)g(y)-8 -b(.)241 4424 y(REDUCE)30 b(is)f(also)i(capable)f(of)h(handling)c(sym)m -(b)s(olic)i(matrices.)41 b(F)-8 b(or)31 b(example,)459 -4630 y FH(matrix)41 b(m\(2,2\);)241 4836 y FQ(declares)30 -b(m)g(to)h(b)s(e)f(a)h(t)m(w)m(o)g(b)m(y)g(t)m(w)m(o)g(matrix,)f(and)p -eop -%%Page: 40 40 -40 39 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(40)793 b FM(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTOR)-8 -b(Y)30 b(INF)m(ORMA)-8 b(TION)882 555 y FH(m)43 b(:=)g -(mat\(\(a,b\),\(c,d\)\))o(;)664 774 y FQ(giv)m(es)d(its)f(elemen)m(ts)h -(v)-5 b(alues.)67 b(Expressions)38 b(that)i(include)e -FJ(M)h FQ(and)g(mak)m(e)h(algebraic)664 887 y(sense)32 -b(ma)m(y)g(no)m(w)g(b)s(e)f(ev)-5 b(aluated,)33 b(suc)m(h)e(as)h -FJ(1/m)f FQ(to)i(giv)m(e)f(the)g(in)m(v)m(erse,)g FJ(2*m)47 -b(-)g(u*m^2)664 1000 y FQ(to)31 b(giv)m(e)g(us)f(another)g(matrix)g -(and)g FJ(det\(m\))f FQ(to)i(giv)m(e)g(us)e(the)i(determinan)m(t)f(of)g -FJ(M)p FQ(.)664 1150 y(REDUCE)i(has)f(a)h(wide)f(range)h(of)f -(substitution)f(capabilities.)42 b(The)31 b(system)h(kno)m(ws)664 -1249 y(ab)s(out)22 b(elemen)m(tary)h(functions,)g(but)f(do)s(es)g(not)g -(automatically)h(in)m(v)m(ok)m(e)g(man)m(y)f(of)h(their)664 -1349 y(w)m(ell-kno)m(wn)33 b(prop)s(erties.)48 b(F)-8 -b(or)35 b(example,)f(pro)s(ducts)e(of)i(trigonometrical)f(functions)664 -1449 y(are)i(not)f(con)m(v)m(erted)h(automatically)f(in)m(to)g(m)m -(ultiple)e(angle)i(expressions,)f(but)h(if)f(the)664 -1548 y(user)d(w)m(an)m(ts)h(this,)e(he)i(can)f(sa)m(y)-8 -b(,)32 b(for)e(example:)882 1754 y FH(\(sin\(a+b\)+cos\(a+)o(b\)\))o -(*\()o(sin)o(\(a)o(-b\))o(-c)o(os)o(\(a-)o(b\))o(\))1056 -1854 y(where)42 b(cos\(~x\)*cos\(~y\))37 b(=)44 b(\(cos\(x+y\)+cos\(x)o -(-y)o(\)\)/)o(2,)1318 1953 y(cos\(~x\)*sin\(~y\))37 b(=)44 -b(\(sin\(x+y\)-sin\(x)o(-y)o(\)\)/)o(2,)1318 2053 y -(sin\(~x\)*sin\(~y\))37 b(=)44 b(\(cos\(x-y\)-cos\(x)o(+y)o(\)\)/)o(2;) -664 2259 y FQ(where)c(the)h(tilde)e(in)h(fron)m(t)g(of)h(the)g(v)-5 -b(ariables)39 b FJ(X)i FQ(and)f FJ(Y)g FQ(indicates)f(that)j(the)e -(rules)664 2358 y(apply)29 b(for)h(all)g(v)-5 b(alues)29 -b(of)i(those)g(v)-5 b(ariables.)39 b(The)30 b(result)f(of)i(this)e -(calculation)h(is)1013 2564 y FH(-\(COS\(2*A\))39 b(+)k(SIN\(2*B\)\)) -664 2784 y FQ(See)22 b(also)f(the)g(user-con)m(tributed)f(pac)m(k)-5 -b(ages)24 b(ASSIST)19 b(\(c)m(hapter)j @beginspecial -@setspecial @endspecial(23)q(\),)i(CAMAL)d(\(c)m(hap-)664 -2896 y(ter)31 b @beginspecial @setspecial @endspecial(28)q(\))f(and)g -(TRIGSIMP)g(\(c)m(hapter)h @beginspecial @setspecial -@endspecial(85)q(\).)664 3059 y(Another)k(v)m(ery)g(commonly)f(used)g -(capabilit)m(y)f(of)i(the)g(system,)h(and)e(an)h(illustration)664 -3172 y(of)44 b(one)f(of)h(the)g(man)m(y)f(output)g(mo)s(des)g(of)h -(REDUCE,)f(is)g(the)g(abilit)m(y)f(to)i(output)664 3285 -y(results)31 b(in)g(a)i(F)m(OR)-8 b(TRAN)33 b(compatible)f(form.)46 -b(Suc)m(h)31 b(results)g(can)i(then)f(b)s(e)g(used)f(in)664 -3398 y(a)k(F)m(OR)-8 b(TRAN)36 b(based)e(n)m(umerical)f(calculation.)54 -b(This)32 b(is)i(particularly)f(useful)g(as)i(a)664 3511 -y(w)m(a)m(y)40 b(of)f(generating)h(algebraic)e(form)m(ulas)g(to)i(b)s -(e)f(used)f(as)h(the)g(basis)f(of)h(extensiv)m(e)664 -3624 y(n)m(umerical)29 b(calculations.)664 3773 y(F)-8 -b(or)31 b(example,)g(the)f(statemen)m(ts)882 3979 y FH(on)43 -b(fort;)882 4079 y(df\(log\(x\)*\(sin\(x)o(\)+c)o(os)o(\(x\))o(\)/)o -(sqr)o(t\()o(x\))o(,x,)o(2\))o(;)664 4285 y FQ(will)28 -b(result)h(in)g(the)i(output)926 4490 y FH(ANS=\(-4.*LOG\(X\))o(*CO)o -(S\()o(X\)*)o(X*)o(*2-)o(4.)o(*L)o(OG\()o(X\))o(*CO)o(S\()o(X\))o(*X+)o -(3.)o(*)926 4590 y(.)43 b(LOG\(X\)*COS\(X\)-4.)o(*L)o(OG\()o(X\))o(*SI) -o(N\()o(X\))o(*X*)o(*2)o(+4.)o(*L)o(OG)o(\(X\))o(*)926 -4690 y(.)g(SIN\(X\)*X+3.*LOG\()o(X\))o(*SI)o(N\()o(X\)+)o(8.)o(*C)o -(OS\()o(X\))o(*X-)o(8.)o(*C)o(OS\()o(X\))o(-8.)926 4789 -y(.)g(*SIN\(X\)*X-8.*SIN)o(\(X)o(\)\)/)o(\(4)o(.*S)o(QR)o(T\()o(X\)*)o -(X*)o(*2\))p eop -%%Page: 41 41 -41 40 bop 241 299 a @beginspecial @setspecial @endspecial -2898 w FQ(41)241 555 y(These)37 b(algebraic)g(manipulations)e -(illustrate)h(the)h(algebraic)h(mo)s(de)f(of)g(REDUCE.)241 -655 y(REDUCE)29 b(is)f(based)i(on)f(Standard)f(Lisp.)39 -b(A)29 b(sym)m(b)s(olic)f(mo)s(de)h(is)g(also)g(a)m(v)-5 -b(ailable)29 b(for)241 754 y(executing)h(Lisp)e(statemen)m(ts.)42 -b(These)30 b(statemen)m(ts)h(follo)m(w)e(the)h(syn)m(tax)h(of)f(Lisp,)e -(e.g.)328 960 y FH(symbolic)40 b(car)j('\(a\);)241 1180 -y FQ(Comm)m(unication)29 b(b)s(et)m(w)m(een)i(the)f(t)m(w)m(o)i(mo)s -(des)e(is)f(p)s(ossible.)241 1342 y(With)j(this)g(simple)g(in)m(tro)s -(duction,)g(y)m(ou)h(are)h(no)m(w)f(in)f(a)h(p)s(osition)f(to)h(study)g -(the)g(ma-)241 1455 y(terial)e(in)f(the)h(full)f(REDUCE)h(man)m(ual)g -(in)f(order)h(to)h(learn)f(just)g(ho)m(w)g(extensiv)m(e)h(the)241 -1568 y(range)g(of)h(facilities)d(really)h(is.)45 b(If)32 -b(further)e(tutorial)i(material)f(is)g(desired,)h(the)g(sev)m(en)241 -1681 y(REDUCE)37 b(In)m(teractiv)m(e)i(Lessons)f(b)m(y)f(Da)m(vid)h(R.) -g(Stoutem)m(y)m(er)h(are)f(recommended.)241 1794 y(These)30 -b(are)h(normally)d(distributed)g(with)h(the)h(system.)p -eop -%%Page: 42 42 -42 41 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(42)793 b FM(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTOR)-8 -b(Y)30 b(INF)m(ORMA)-8 b(TION)p eop -%%Page: 43 43 -43 42 bop 241 299 a @beginspecial @setspecial @endspecial -165 x @beginspecial @setspecial @endspecial 764 x FI(Chapter)64 -b(2)241 1693 y FT(Structure)78 b(of)g(Programs)241 2187 -y FQ(A)38 b(REDUCE)g(program)g(consists)f(of)h(a)h(set)f(of)g -(functional)f(commands)g(whic)m(h)g(are)241 2300 y(ev)-5 -b(aluated)26 b(sequen)m(tially)g(b)m(y)g(the)h(computer.)39 -b(These)26 b(commands)g(are)h(built)e(up)g(from)241 2413 -y(declarations,)46 b(statemen)m(ts)g(and)d(expressions.)79 -b(Suc)m(h)43 b(en)m(tities)g(are)h(comp)s(osed)f(of)241 -2526 y(sequences)32 b(of)g(n)m(um)m(b)s(ers,)g(v)-5 b(ariables,)31 -b(op)s(erators,)i(strings,)f(reserv)m(ed)g(w)m(ords)g(and)f(de-)241 -2639 y(limiters)f(\(suc)m(h)j(as)g(commas)g(and)f(paren)m(theses\),)j -(whic)m(h)c(in)h(turn)f(are)i(sequences)g(of)241 2752 -y(basic)d(c)m(haracters.)241 2888 y @beginspecial @setspecial -@endspecial 199 x FE(2.1)135 b(The)45 b(REDUCE)h(Standard)f(Character)g -(Set)241 3340 y FQ(The)c(basic)h(c)m(haracters)h(whic)m(h)e(are)i(used) -e(to)i(build)c(REDUCE)j(sym)m(b)s(ols)f(are)h(the)241 -3452 y(follo)m(wing:)241 3551 y @beginspecial @setspecial -@endspecial 352 3682 a(1.)k(The)30 b(26)h(letters)g FJ(a)f -FQ(through)f FJ(z)241 3736 y @beginspecial @setspecial -@endspecial 352 3867 a FQ(2.)46 b(The)30 b(10)h(decimal)e(digits)g -FJ(0)h FQ(through)g FJ(9)241 3920 y @beginspecial @setspecial -@endspecial 352 4051 a FQ(3.)46 b(The)24 b(sp)s(ecial)f(c)m(haracters)p -1371 4051 28 4 v 1404 4051 V 115 w(!)39 b(")25 b($)f(\045)g(')h(\()f -(\))h(*)g(+)f(,)h(-)g(.)38 b(/)25 b(:)38 b(;)26 b FL(<)e(>)g -FQ(=)g FP(f)h(g)f FL(<)p FQ(blank)p FL(>)241 4281 y FQ(With)37 -b(the)h(exception)g(of)g(strings)f(and)g(c)m(haracters)i(preceded)f(b)m -(y)g(an)f(exclamation)241 4394 y(mark,)d(the)g(case)h(of)f(c)m -(haracters)h(is)e(ignored:)47 b(dep)s(ending)31 b(of)j(the)g -(underlying)d(LISP)241 4507 y(they)k(will)e(all)h(b)s(e)h(con)m(v)m -(erted)h(in)m(ternally)e(in)m(to)h(lo)m(w)m(er)g(case)i(or)e(upp)s(er)e -(case:)52 b FJ(ALPHA)p FQ(,)241 4620 y FJ(Alpha)32 b -FQ(and)g FJ(alpha)g FQ(represen)m(t)h(the)h(same)f(sym)m(b)s(ol.)48 -b(Most)34 b(implemen)m(tations)e(allo)m(w)241 4733 y(y)m(ou)25 -b(to)h(switc)m(h)f(this)f(con)m(v)m(ersion)i(o\013.)39 -b(The)25 b(op)s(erating)f(instructions)g(for)h(a)g(particular)241 -4846 y(implemen)m(tation)j(should)h(b)s(e)g(consulted)g(on)h(this)f(p)s -(oin)m(t.)40 b(F)-8 b(or)31 b(p)s(ortabilit)m(y)-8 b(,)29 -b(w)m(e)h(shall)241 4959 y(limit)e(ourselv)m(es)i(to)h(the)g(standard)e -(c)m(haracter)j(set)f(in)e(this)g(exp)s(osition.)1690 -5187 y(43)p eop -%%Page: 44 44 -44 43 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(44)964 b FM(CHAPTER)30 b(2.)71 b(STR)m(UCTURE)29 b(OF)i(PR)m(OGRAMS) -664 464 y @beginspecial @setspecial @endspecial 91 x -FE(2.2)136 b(Num)l(b)t(ers)664 795 y FQ(There)26 b(are)h(sev)m(eral)g -(di\013eren)m(t)f(t)m(yp)s(es)h(of)g(n)m(um)m(b)s(ers)e(a)m(v)-5 -b(ailable)26 b(in)f(REDUCE.)i(In)m(tegers)664 894 y(consist)h(of)h(a)g -(signed)e(or)i(unsigned)d(sequence)j(of)g(decimal)e(digits)g(written)h -(without)g(a)664 994 y(decimal)i(p)s(oin)m(t,)f(for)h(example:)1013 -1200 y FH(-2,)42 b(5396,)g(+32)664 1419 y FQ(In)36 b(principle,)f -(there)i(is)f(no)g(practical)h(limit)d(on)j(the)g(n)m(um)m(b)s(er)e(of) -i(digits)e(p)s(ermitted)664 1532 y(as)e(exact)g(arithmetic)e(is)h(used) -f(in)g(most)h(implemen)m(tations.)44 b(\(Y)-8 b(ou)33 -b(should)e(ho)m(w)m(ev)m(er)664 1645 y(c)m(hec)m(k)f(the)e(sp)s -(eci\014c)e(instructions)g(for)i(y)m(our)f(particular)g(system)h -(implemen)m(tation)e(to)664 1758 y(mak)m(e)34 b(sure)f(that)g(this)f -(is)g(true.\))49 b(F)-8 b(or)34 b(example,)g(if)e(y)m(ou)h(ask)g(for)g -(the)g(v)-5 b(alue)33 b(of)g(2)3507 1725 y FO(2000)664 -1871 y FQ(y)m(ou)e(get)g(it)f(displa)m(y)m(ed)e(as)j(a)f(n)m(um)m(b)s -(er)f(of)h(603)i(decimal)d(digits,)g(taking)h(up)f(nine)g(lines)664 -1984 y(of)37 b(output)f(on)h(an)g(in)m(teractiv)m(e)g(displa)m(y)-8 -b(.)59 b(It)36 b(should)f(b)s(e)h(b)s(orne)g(in)f(mind)g(of)i(course) -664 2096 y(that)31 b(computations)f(with)f(suc)m(h)h(long)g(n)m(um)m(b) -s(ers)f(can)i(b)s(e)f(quite)g(slo)m(w.)664 2259 y(Num)m(b)s(ers)e(that) -i(aren't)g(in)m(tegers)f(are)h(usually)d(represen)m(ted)i(as)g(the)h -(quotien)m(t)f(of)h(t)m(w)m(o)664 2372 y(in)m(tegers,)h(in)e(lo)m(w)m -(est)i(terms:)41 b(that)31 b(is,)f(as)g(rational)g(n)m(um)m(b)s(ers.) -664 2535 y(In)39 b(essen)m(tially)g(all)f(v)m(ersions)h(of)h(REDUCE)f -(it)g(is)g(also)g(p)s(ossible)e(\(but)j(not)f(alw)m(a)m(ys)664 -2648 y(desirable!\))k(to)32 b(ask)g(REDUCE)g(to)g(w)m(ork)f(with)g -(\015oating)g(p)s(oin)m(t)g(appro)m(ximations)f(to)664 -2761 y(n)m(um)m(b)s(ers)35 b(again,)i(to)g(an)m(y)f(precision.)55 -b(Suc)m(h)35 b(n)m(um)m(b)s(ers)g(are)h(called)f FD(r)-5 -b(e)g(al)p FQ(.)58 b(They)36 b(can)664 2874 y(b)s(e)30 -b(input)e(in)h(t)m(w)m(o)j(w)m(a)m(ys:)664 2978 y @beginspecial -@setspecial @endspecial 775 3111 a(1.)46 b(as)28 b(a)f(signed)f(or)h -(unsigned)e(sequence)j(of)f(an)m(y)g(n)m(um)m(b)s(er)f(of)h(decimal)g -(digits)e(with)891 3224 y(an)31 b(em)m(b)s(edded)e(or)h(trailing)f -(decimal)g(p)s(oin)m(t.)664 3279 y @beginspecial @setspecial -@endspecial 775 3412 a(2.)46 b(as)31 b(in)f(1.)42 b(follo)m(w)m(ed)30 -b(b)m(y)h(a)g(decimal)e(exp)s(onen)m(t)i(whic)m(h)e(is)h(written)g(as)h -(the)g(letter)891 3524 y FJ(E)f FQ(follo)m(w)m(ed)g(b)m(y)h(a)g(signed) -e(or)h(unsigned)e(in)m(teger.)664 3762 y(e.g.)42 b FJ(32.)95 -b(+32.0)46 b(0.32E2)29 b FQ(and)g FJ(320.E-1)g FQ(are)i(all)e(represen) -m(tations)h(of)h(32.)664 3925 y(The)g(declaration)f FJ(SCIENTIFIC)p -1808 3925 29 4 v 32 w(NOTATION)f FQ(con)m(trols)i(the)h(output)e -(format)i(of)f(\015oat-)664 4038 y(ing)38 b(p)s(oin)m(t)g(n)m(um)m(b)s -(ers.)64 b(A)m(t)40 b(the)f(default)f(settings,)j(an)m(y)e(n)m(um)m(b)s -(er)e(with)h(\014v)m(e)h(or)g(less)664 4150 y(digits)j(b)s(efore)h(the) -g(decimal)f(p)s(oin)m(t)g(is)h(prin)m(ted)e(in)h(a)i(\014xed-p)s(oin)m -(t)d(notation,)47 b(e.g.,)664 4263 y FJ(12345.6)p FQ(.)55 -b(Num)m(b)s(ers)34 b(with)h(more)g(than)h(\014v)m(e)g(digits)e(are)i -(prin)m(ted)e(in)h(scien)m(ti\014c)g(no-)664 4376 y(tation,)41 -b(e.g.,)i FJ(1.234567E+5)p FQ(.)62 b(Similarly)-8 b(,)38 -b(b)m(y)h(default,)h(an)m(y)f(n)m(um)m(b)s(er)e(with)h(elev)m(en)664 -4489 y(or)f(more)g(zeros)h(after)f(the)g(decimal)f(p)s(oin)m(t)g(is)g -(prin)m(ted)g(in)f(scien)m(ti\014c)i(notation.)60 b(T)-8 -b(o)664 4602 y(c)m(hange)23 b(these)f(defaults,)g FJ(SCIENTIFIC)p -2025 4602 V 32 w(NOTATION)d FQ(can)j(b)s(e)f(used)f(in)h(one)g(of)h(t)m -(w)m(o)h(w)m(a)m(ys.)664 4715 y FJ(SCIENTIFIC)p 1150 -4715 V 32 w(NOTATION)33 b FD(m)p FQ(;,)38 b(where)d FD(m)43 -b FQ(is)35 b(a)h(p)s(ositiv)m(e)e(in)m(teger,)k(sets)e(the)g(prin)m -(ting)664 4828 y(format)29 b(so)g(that)g(a)g(n)m(um)m(b)s(er)e(with)g -(more)i(than)f FD(m)36 b FQ(digits)27 b(b)s(efore)h(the)h(decimal)f(p)s -(oin)m(t,)664 4941 y(or)i FD(m)36 b FQ(or)30 b(more)f(zeros)h(after)g -(the)g(decimal)e(p)s(oin)m(t,)h(is)g(prin)m(ted)f(in)g(scien)m(ti\014c) -g(notation.)p eop -%%Page: 45 45 -45 44 bop 241 299 a @beginspecial @setspecial @endspecial -FM(2.3.)72 b(IDENTIFIERS)2083 b FQ(45)241 555 y FJ(SCIENTIFIC)p -727 555 29 4 v 31 w(NOTATION)25 b FP(f)p FD(m,n)p FP(g)p -FQ(,)k(with)c FD(m)34 b FQ(and)26 b FD(n)34 b FQ(b)s(oth)26 -b(p)s(ositiv)m(e)f(in)m(tegers,)j(sets)f(the)241 668 -y(format)i(so)f(that)i(a)e(n)m(um)m(b)s(er)g(with)f(more)i(than)f -FD(m)36 b FQ(digits)27 b(b)s(efore)h(the)h(decimal)e(p)s(oin)m(t,)241 -781 y(or)j FD(n)38 b FQ(or)30 b(more)g(zeros)h(after)g(the)g(decimal)e -(p)s(oin)m(t)h(is)f(prin)m(ted)g(in)g(scien)m(ti\014c)h(notation.)241 -944 y FD(CA)n(UTION:)k FQ(The)i(unsigned)f(part)h(of)g(an)m(y)h(n)m(um) -m(b)s(er)e(ma)m(y)i FD(not)46 b FQ(b)s(egin)35 b(with)g(a)i(dec-)241 -1057 y(imal)c(p)s(oin)m(t,)i(as)g(this)f(causes)h(confusion)f(with)f -(the)i FJ(CONS)f FQ(\(.\))54 b(op)s(erator,)37 b(i.e.,)f(NOT)241 -1170 y(ALLO)m(WED:)31 b FJ(.5)47 b(-.23)g(+.12)p FQ(;)29 -b(use)h FJ(0.5)47 b(-0.23)g(+0.12)29 b FQ(instead.)241 -1324 y @beginspecial @setspecial @endspecial 182 x FE(2.3)135 -b(Iden)l(ti\014ers)241 1745 y FQ(Iden)m(ti\014ers)27 -b(in)f(REDUCE)i(consist)g(of)g(one)h(or)f(more)g(alphan)m(umeric)e(c)m -(haracters)k(\(i.e.)241 1845 y(alphab)s(etic)j(letters)i(or)f(decimal)g -(digits\))f(the)i(\014rst)f(of)h(whic)m(h)e(m)m(ust)i(b)s(e)f(alphab)s -(etic.)241 1945 y(The)d(maxim)m(um)g(n)m(um)m(b)s(er)g(of)h(c)m -(haracters)h(allo)m(w)m(ed)f(is)f(implemen)m(tation)f(dep)s(enden)m(t,) -241 2044 y(although)39 b(t)m(w)m(en)m(t)m(y-four)j(is)d(p)s(ermitted)f -(in)h(most)h(implemen)m(tations.)68 b(In)39 b(addition,)241 -2144 y(the)26 b(underscore)g(c)m(haracter)i(\()p 1278 -2144 28 4 v 33 w(\))f(is)e(considered)g(a)i(letter)g(if)e(it)h(is)g -FD(within)h FQ(an)f(iden)m(ti\014er.)241 2243 y(F)-8 -b(or)31 b(example,)589 2449 y FH(a)44 b(az)e(p1)h(q23p)86 -b(a_very_long_var)o(iab)o(le)241 2655 y FQ(are)31 b(all)e(iden)m -(ti\014ers,)f(whereas)589 2861 y FH(_a)241 3080 y FQ(is)h(not.)241 -3243 y(A)j(sequence)g(of)g(alphan)m(umeric)d(c)m(haracters)34 -b(in)c(whic)m(h)h(the)g(\014rst)g(is)g(a)h(digit)f(is)g(in)m(ter-)241 -3356 y(preted)k(as)g(a)h(pro)s(duct.)54 b(F)-8 b(or)35 -b(example,)i FJ(2ab3c)c FQ(is)i(in)m(terpreted)f(as)i -FJ(2*ab3c)p FQ(.)53 b(There)241 3469 y(is)31 b(one)h(exception)g(to)h -(this:)42 b(If)32 b(the)g(\014rst)f(letter)h(after)g(a)h(digit)d(is)h -FJ(E)p FQ(,)h(the)g(system)g(will)241 3582 y(try)f(to)i(in)m(terpret)e -(that)h(part)g(of)g(the)g(sequence)g(as)g(a)g(real)f(n)m(um)m(b)s(er,)g -(whic)m(h)g(ma)m(y)h(fail)241 3695 y(in)39 b(some)i(cases.)73 -b(F)-8 b(or)42 b(example,)h FJ(2E12)c FQ(is)h(the)h(real)f(n)m(um)m(b)s -(er)g(2)p FL(:)p FQ(0)28 b FP(\003)g FQ(10)2793 3662 -y FO(12)2868 3695 y FQ(,)44 b FJ(2e3c)39 b FQ(is)241 -3808 y(2000.0*C,)33 b(and)d FJ(2ebc)f FQ(giv)m(es)i(an)f(error.)241 -3957 y(Sp)s(ecial)g(c)m(haracters,)j(suc)m(h)f(as)g FP(\000)p -FQ(,)g(*,)g(and)f(blank,)g(ma)m(y)h(b)s(e)g(used)e(in)h(iden)m -(ti\014ers)f(to)s(o,)241 4057 y(ev)m(en)37 b(as)g(the)f(\014rst)g(c)m -(haracter,)k(but)c(eac)m(h)h(m)m(ust)g(b)s(e)e(preceded)i(b)m(y)f(an)g -(exclamation)241 4156 y(mark)30 b(in)f(input.)39 b(F)-8 -b(or)31 b(example:)589 4362 y FH(light!-years)170 b(d!*!*n)390 -b(good!)41 b(morning)589 4462 y(!$sign)434 b(!5goldrings)241 -4681 y FD(CA)n(UTION:)38 b FQ(Man)m(y)i(system)g(iden)m(ti\014ers)e(ha) -m(v)m(e)j(suc)m(h)e(sp)s(ecial)g(c)m(haracters)i(in)d(their)241 -4794 y(names)32 b(\(esp)s(ecially)g(*)h(and)f(=\).)47 -b(If)33 b(the)f(user)g(acciden)m(tally)h(pic)m(ks)f(the)h(name)f(of)h -(one)241 4907 y(of)d(them)f(for)h(his)e(o)m(wn)i(purp)s(oses)e(it)h(ma) -m(y)h(ha)m(v)m(e)h(catastrophic)f(consequences)g(for)g(his)p -eop -%%Page: 46 46 -46 45 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(46)964 b FM(CHAPTER)30 b(2.)71 b(STR)m(UCTURE)29 b(OF)i(PR)m(OGRAMS) -664 555 y FQ(REDUCE)f(run.)40 b(Users)30 b(are)h(therefore)f(advised)g -(to)h(a)m(v)m(oid)g(suc)m(h)f(names.)664 718 y(Iden)m(ti\014ers)k(are)i -(used)e(as)i(v)-5 b(ariables,)35 b(lab)s(els)f(and)g(to)j(name)e(arra)m -(ys,)i(op)s(erators)f(and)664 831 y(pro)s(cedures.)664 -1124 y FR(Restrictions)664 1346 y FQ(The)29 b(reserv)m(ed)g(w)m(ords)g -(listed)f(in)g(another)h(section)h(ma)m(y)g(not)f(b)s(e)g(used)f(as)i -(iden)m(ti\014ers.)664 1458 y(No)c(spaces)g(ma)m(y)h(app)s(ear)e -(within)e(an)i(iden)m(ti\014er,)g(and)g(an)h(iden)m(ti\014er)e(ma)m(y)i -(not)g(extend)664 1571 y(o)m(v)m(er)33 b(a)e(line)f(of)h(text.)44 -b(\(Hyphenation)31 b(of)g(an)g(iden)m(ti\014er,)f(b)m(y)h(using)e(a)j -(reserv)m(ed)f(c)m(har-)664 1684 y(acter)26 b(as)f(a)g(h)m(yphen)e(b)s -(efore)h(an)h(end-of-line)e(c)m(haracter)j(is)e(p)s(ossible)e(in)i -(some)h(v)m(ersions)664 1797 y(of)31 b(REDUCE\).)664 -1957 y @beginspecial @setspecial @endspecial 176 x FE(2.4)136 -b(V)-11 b(ariables)664 2386 y FQ(Ev)m(ery)34 b(v)-5 b(ariable)32 -b(is)h(named)g(b)m(y)g(an)h(iden)m(ti\014er,)f(and)g(is)f(giv)m(en)i(a) -g(sp)s(eci\014c)e(t)m(yp)s(e.)50 b(The)664 2499 y(t)m(yp)s(e)38 -b(is)e(of)h(no)h(concern)f(to)h(the)g(ordinary)d(user.)61 -b(Most)38 b(v)-5 b(ariables)36 b(are)i(allo)m(w)m(ed)f(to)664 -2612 y(ha)m(v)m(e)f(the)f(default)e(t)m(yp)s(e,)j(called)e -FD(sc)-5 b(alar)p FQ(.)55 b(These)34 b(can)h(receiv)m(e,)i(as)d(v)-5 -b(alues,)35 b(the)g(rep-)664 2725 y(resen)m(tation)h(of)f(an)m(y)h -(ordinary)d(algebraic)i(expression.)55 b(In)34 b(the)h(absence)h(of)g -(suc)m(h)f(a)664 2838 y(v)-5 b(alue,)30 b(they)h(stand)f(for)g -(themselv)m(es.)664 3131 y FR(Reserv)m(ed)38 b(V)-9 b(ariables)664 -3352 y FQ(Sev)m(eral)34 b(v)-5 b(ariables)33 b(in)f(REDUCE)i(ha)m(v)m -(e)h(particular)d(prop)s(erties)g(whic)m(h)h(should)f(not)664 -3465 y(b)s(e)e(c)m(hanged)h(b)m(y)f(the)h(user.)40 b(These)30 -b(v)-5 b(ariables)29 b(include:)664 3728 y FJ(E)425 b -FQ(In)m(tended)54 b(to)i(represen)m(t)f(the)g(base)g(of)110 -b(the)55 b(natural)f(logarithms.)1137 3841 y FJ(log\(e\))p -FQ(,)33 b(if)f(it)h(o)s(ccurs)h(in)e(an)h(expression,)g(is)g -(automatically)g(replaced)1137 3954 y(b)m(y)j(1.)59 b(If)36 -b FJ(ROUNDED)e FQ(is)h(on,)j FJ(E)e FQ(is)f(replaced)h(b)m(y)g(the)h(v) --5 b(alue)35 b(of)i(E)f(to)h(the)1137 4066 y(curren)m(t)30 -b(degree)h(of)g(\015oating)f(p)s(oin)m(t)f(precision.)664 -4254 y FJ(I)425 b FQ(In)m(tended)26 b(to)i(represen)m(t)f(the)g(square) -54 b(ro)s(ot)27 b(of)g FP(\000)p FQ(1.)40 b FJ(i^2)26 -b FQ(is)g(replaced)g(b)m(y)1137 4367 y FP(\000)p FQ(1,)k(and)g -(appropriately)f(for)h(higher)e(p)s(o)m(w)m(ers)j(of)f -FJ(I)p FQ(.)g(This)e(applies)h(only)1137 4480 y(to)d(the)g(sym)m(b)s -(ol)e FJ(I)h FQ(used)f(on)h(the)h(top)g(lev)m(el,)g(not)f(as)h(a)g -(formal)e(parameter)1137 4593 y(in)h(a)h(pro)s(cedure,)g(a)g(lo)s(cal)f -(v)-5 b(ariable,)26 b(nor)f(in)g(the)h(con)m(text)i FJ(for)47 -b(i:=)g(...)664 4780 y(INFINITY)89 b FQ(In)m(tended)30 -b(to)i(represen)m(t)g FP(1)62 b FQ(in)30 b(limit)f(and)h(p)s(o)m(w)m -(er)h(series)g(calculations)1137 4893 y(for)d(example.)39 -b(Note)30 b(ho)m(w)m(ev)m(er)f(that)g(the)f(curren)m(t)g(system)g(do)s -(es)g FD(not)37 b FQ(do)p eop -%%Page: 47 47 -47 46 bop 241 299 a @beginspecial @setspecial @endspecial -FM(2.5.)72 b(STRINGS)2279 b FQ(47)713 555 y(prop)s(er)36 -b(arithmetic)g(on)g FP(1)p FQ(.)59 b(F)-8 b(or)38 b(example,)g -FJ(infinity)45 b(+)j(infinity)713 668 y FQ(is)30 b FJ(2*infinity)p -FQ(.)241 843 y FJ(NIL)328 b FQ(In)24 b(REDUCE)g(\(algebraic)g(mo)s(de)f -(only\))h(tak)m(en)h(as)f(a)g(synon)m(ym)g(for)f(zero.)713 -956 y(Therefore)31 b FJ(NIL)e FQ(cannot)i(b)s(e)f(used)f(as)i(a)g(v)-5 -b(ariable.)241 1132 y FJ(PI)376 b FQ(In)m(tended)30 b(to)g(represen)m -(t)g(the)g(circular)58 b(constan)m(t.)42 b(With)29 b -FJ(ROUNDED)f FQ(on,)713 1245 y(it)i(is)g(replaced)g(b)m(y)g(the)g(v)-5 -b(alue)30 b(of)h FL(\031)i FQ(to)e(the)g(curren)m(t)f(degree)h(of)g -(\015oating)713 1358 y(p)s(oin)m(t)f(precision.)241 1533 -y FJ(T)424 b FQ(Should)32 b(not)i(b)s(e)f(used)f(as)i(a)g(formal)67 -b(parameter)34 b(or)f(lo)s(cal)g(v)-5 b(ariable)33 b(in)713 -1646 y(pro)s(cedures,)22 b(since)e(con\015ict)h(arises)f(with)f(the)i -(sym)m(b)s(olic)e(mo)s(de)h(meaning)713 1759 y(of)31 -b(T)f(as)h FD(true)p FQ(.)241 1984 y(Other)j(reserv)m(ed)h(v)-5 -b(ariables,)34 b(suc)m(h)g(as)h FJ(LOW)p 1749 1984 29 -4 v 34 w(POW)p FQ(,)f(describ)s(ed)e(in)h(other)i(sections,)h(are)241 -2097 y(listed)29 b(in)g(App)s(endix)e(A.)241 2260 y(Using)i(these)i -(reserv)m(ed)g(v)-5 b(ariables)29 b(inappropriately)e(will)h(lead)i(to) -h(errors.)241 2423 y(There)40 b(are)g(also)g(in)m(ternal)f(v)-5 -b(ariables)39 b(used)h(b)m(y)g(REDUCE)g(that)h(ha)m(v)m(e)h(similar)37 -b(re-)241 2536 y(strictions.)k(These)31 b(usually)d(ha)m(v)m(e)33 -b(an)d(asterisk)h(in)f(their)g(names,)h(so)g(it)g(is)f(unlik)m(ely)e(a) -241 2649 y(casual)f(user)h(w)m(ould)e(use)i(one.)40 b(An)27 -b(example)h(of)g(suc)m(h)f(a)h(v)-5 b(ariable)27 b(is)g -FJ(K!*)g FQ(used)g(in)f(the)241 2762 y(asymptotic)k(command)h(pac)m(k) --5 b(age.)241 2924 y(Certain)22 b(w)m(ords)h(are)h(reserv)m(ed)g(in)e -(REDUCE.)i(They)f(ma)m(y)h(only)e(b)s(e)h(used)g(in)f(the)i(man-)241 -3037 y(ner)33 b(in)m(tended.)50 b(A)33 b(list)g(of)h(these)g(is)f(giv)m -(en)g(in)g(the)h(section)f(\\Reserv)m(ed)i(Iden)m(ti\014ers".)241 -3150 y(There)d(are,)i(of)f(course,)g(an)g(imp)s(ossibly)28 -b(large)33 b(n)m(um)m(b)s(er)e(of)i(suc)m(h)g(names)f(to)h(k)m(eep)h -(in)241 3263 y(mind.)59 b(The)36 b(reader)h(ma)m(y)h(therefore)f(w)m -(an)m(t)h(to)g(mak)m(e)g(himself)d(a)i(cop)m(y)h(of)f(the)h(list,)241 -3376 y(deleting)29 b(the)i(names)f(he)g(do)s(esn't)g(think)f(he)i(is)e -(lik)m(ely)g(to)i(use)f(b)m(y)g(mistak)m(e.)241 3525 -y @beginspecial @setspecial @endspecial 181 x FE(2.5)135 -b(Strings)241 3946 y FQ(Strings)32 b(are)j(used)e(in)g -FJ(WRITE)f FQ(statemen)m(ts,)37 b(in)c(other)h(output)g(statemen)m(ts)h -(\(suc)m(h)f(as)241 4045 y(error)44 b(messages\),)49 -b(and)44 b(to)h(name)g(\014les.)82 b(A)44 b(string)g(consists)g(of)g -(an)m(y)h(n)m(um)m(b)s(er)e(of)241 4145 y(c)m(haracters)32 -b(enclosed)e(in)f(double)g(quotes.)41 b(F)-8 b(or)31 -b(example:)807 4351 y FH("A)43 b(String".)241 4570 y -FQ(Lo)m(w)m(er)31 b(case)g(c)m(haracters)h(within)c(a)j(string)e(are)i -(not)g(con)m(v)m(erted)g(to)g(upp)s(er)e(case.)241 4733 -y(The)e(string)f FJ("")h FQ(represen)m(ts)g(the)h(empt)m(y)f(string.)39 -b(A)28 b(double)d(quote)k(ma)m(y)e(b)s(e)g(included)241 -4846 y(in)37 b(a)h(string)g(b)m(y)g(preceding)f(it)h(b)m(y)g(another)h -(double)e(quote.)65 b(Th)m(us)37 b FJ("a""b")g FQ(is)g(the)241 -4959 y(string)29 b FJ(a"b)p FQ(,)h(and)g FJ("""")f FQ(is)g(the)i -(string)e FJ(")p FQ(.)p eop -%%Page: 48 48 -48 47 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(48)964 b FM(CHAPTER)30 b(2.)71 b(STR)m(UCTURE)29 b(OF)i(PR)m(OGRAMS) -664 464 y @beginspecial @setspecial @endspecial 91 x -FE(2.6)136 b(Commen)l(ts)664 808 y FQ(T)-8 b(ext)27 b(can)f(b)s(e)f -(included)e(in)h(program)h(listings)f(for)h(the)h(con)m(v)m(enience)h -(of)f(h)m(uman)f(read-)664 921 y(ers,)39 b(in)d(suc)m(h)h(a)g(w)m(a)m -(y)h(that)g(REDUCE)f(pa)m(ys)h(no)f(atten)m(tion)h(to)g(it.)60 -b(There)37 b(are)h(t)m(w)m(o)664 1034 y(w)m(a)m(ys)31 -b(to)g(do)g(this:)664 1164 y @beginspecial @setspecial -@endspecial 775 1296 a(1.)46 b(Ev)m(erything)29 b(from)f(the)h(w)m(ord) -g FJ(COMMENT)e FQ(to)j(the)f(next)g(statemen)m(t)i(terminator,)891 -1409 y(normally)d(;)i(or)g($,)g(is)f(ignored.)40 b(Suc)m(h)29 -b(commen)m(ts)h(can)g(b)s(e)f(placed)g(an)m(ywhere)h(a)891 -1522 y(blank)f(could)g(prop)s(erly)e(app)s(ear.)40 b(\(Note)31 -b(that)g FJ(END)e FQ(and)g FL(>>)g FQ(are)h FD(not)39 -b FQ(treated)891 1635 y(as)31 b FJ(COMMENT)d FQ(delimiters!\))664 -1695 y @beginspecial @setspecial @endspecial 775 1822 -a(2.)46 b(Ev)m(erything)21 b(from)h(the)f(sym)m(b)s(ol)g -FJ(\045)g FQ(to)h(the)g(end)f(of)h(the)g(line)e(on)h(whic)m(h)g(it)g -(app)s(ears)891 1935 y(is)31 b(ignored.)42 b(Suc)m(h)30 -b(commen)m(ts)i(can)g(b)s(e)e(placed)h(as)g(the)h(last)f(part)g(of)g -(an)m(y)g(line.)891 2048 y(Statemen)m(t)45 b(terminators)e(ha)m(v)m(e)i -(no)f(sp)s(ecial)e(meaning)g(in)h(suc)m(h)g(commen)m(ts.)891 -2161 y(Remem)m(b)s(er)37 b(to)h(put)e(a)h(semicolon)f(b)s(efore)h(the)g -FJ(\045)f FQ(if)g(the)h(earlier)f(part)h(of)g(the)891 -2274 y(line)24 b(is)g(in)m(tended)g(to)i(b)s(e)e(so)i(terminated.)38 -b(Remem)m(b)s(er)25 b(also)g(to)h(b)s(egin)d(eac)m(h)k(line)891 -2387 y(of)k(a)g(m)m(ulti-line)c FJ(\045)j FQ(commen)m(t)i(with)d(a)i -FJ(\045)f FQ(sign.)664 2542 y @beginspecial @setspecial -@endspecial 181 x FE(2.7)136 b(Op)t(erators)664 2976 -y FQ(Op)s(erators)43 b(in)f(REDUCE)i(are)g(sp)s(eci\014ed)d(b)m(y)j -(name)f(and)g(t)m(yp)s(e.)81 b(There)43 b(are)h(t)m(w)m(o)664 -3089 y(t)m(yp)s(es,)k(in\014x)43 b(and)h(pre\014x.)82 -b(Op)s(erators)44 b(can)h(b)s(e)f(purely)e(abstract,)49 -b(just)44 b(sym)m(b)s(ols)664 3202 y(with)34 b(no)g(prop)s(erties;)i -(they)f(can)g(ha)m(v)m(e)h(v)-5 b(alues)34 b(assigned)g(\(using)f -FJ(:=)h FQ(or)h(simple)e FJ(LET)664 3315 y FQ(declarations\))i(for)h -(sp)s(eci\014c)e(argumen)m(ts;)k(they)e(can)g(ha)m(v)m(e)g(prop)s -(erties)e(declared)h(for)664 3428 y(some)28 b(collection)f(of)h -(argumen)m(ts)f(\(using)g(more)g(general)g FJ(LET)g FQ(declarations\);) -h(or)g(they)664 3541 y(can)j(b)s(e)f(fully)e(de\014ned)h(\(usually)f(b) -m(y)j(a)f(pro)s(cedure)f(declaration\).)664 3703 y(In\014x)h(op)s -(erators)h(ha)m(v)m(e)h(a)f(de\014nite)e(precedence)i(with)f(resp)s -(ect)h(to)g(one)g(another,)h(and)664 3816 y(normally)d(o)s(ccur)h(b)s -(et)m(w)m(een)h(their)e(argumen)m(ts.)41 b(F)-8 b(or)32 -b(example:)891 4054 y FJ(a)48 b(+)f(b)h(-)f(c)961 b FQ(\(spaces)31 -b(optional\))891 4167 y FJ(x::=)e(where|:=|or|and|)o(me)o(mbe)o -(r|)o(mem)o(q|)o(=|)o(neq)o(|e)o(q|)1536 655 y(>=|>|<=|<|+|-|*|)o(/|)o -(^|*)o(*|)o(.)664 861 y FQ(These)30 b(op)s(erators)h(ma)m(y)g(b)s(e)f -(further)f(divided)e(in)m(to)k(the)f(follo)m(wing)f(sub)s(classes:)795 -1067 y FH()127 b(::=)42 b(:=)795 -1166 y()258 b(::=)42 b(or|and|member|mem)o(q)795 -1266 y()127 b(::=)42 b(=|neq|eq|>=|>|<=|)o(<)795 -1365 y()i(::=)i(where)795 1465 -y()127 b(::=)42 b(+|-|*|/|^|**)795 -1565 y()i(::=)i(.)664 1784 y -FJ(MEMQ)e FQ(and)h FJ(EQ)g FQ(are)h(not)f(used)g(in)f(the)i(algebraic)f -(mo)s(de)g(of)g(REDUCE.)h(They)f(are)664 1897 y(explained)23 -b(in)g(the)i(section)g(on)f(sym)m(b)s(olic)f(mo)s(de.)38 -b FJ(WHERE)24 b FQ(is)f(describ)s(ed)g(in)g(the)i(section)664 -2010 y(on)30 b(substitutions.)664 2172 y(In)e(previous)g(v)m(ersions)g -(of)h(REDUCE,)g FD(not)h FQ(w)m(as)f(also)g(de\014ned)f(as)h(an)g -(in\014x)e(op)s(erator.)664 2285 y(In)37 b(the)i(presen)m(t)f(v)m -(ersion)f(it)h(is)f(a)h(regular)g(pre\014x)f(op)s(erator,)j(and)e(in)m -(terc)m(hangeable)664 2398 y(with)29 b FD(nul)5 b(l)p -FQ(.)664 2561 y(F)-8 b(or)36 b(compatibilit)m(y)d(with)h(the)h(in)m -(termediate)g(language)g(used)g(b)m(y)g(REDUCE,)g(eac)m(h)664 -2674 y(sp)s(ecial)i(c)m(haracter)k(in\014x)c(op)s(erator)i(has)f(an)h -(alternativ)m(e)g(alphan)m(umeric)e(iden)m(ti\014er)664 -2787 y(asso)s(ciated)c(with)e(it.)47 b(These)33 b(iden)m(ti\014ers)d -(ma)m(y)j(b)s(e)f(used)g(in)m(terc)m(hangeably)g(with)g(the)664 -2900 y(corresp)s(onding)e(sp)s(ecial)g(c)m(haracter)j(names)f(on)f -(input.)43 b(This)30 b(corresp)s(ondence)h(is)g(as)664 -3013 y(follo)m(ws:)891 3227 y FJ(:=)48 b(setq)359 b FQ(\(the)31 -b(assignmen)m(t)f(op)s(erator\))891 3340 y FJ(=)48 b(equal)891 -3453 y(>=)g(geq)891 3566 y(>)g(greaterp)891 3678 y(<=)g(leq)891 -3791 y(<)g(lessp)891 3904 y(+)g(plus)891 4017 y(-)g(difference)119 -b FQ(\(if)30 b(unary)-8 b(,)30 b FJ(minus)p FQ(\))891 -4130 y FJ(*)48 b(times)891 4243 y(/)g(quotient)215 b -FQ(\(if)30 b(unary)-8 b(,)30 b FJ(recip)p FQ(\))891 4356 -y FJ(^)48 b(or)f(**)g(expt)121 b FQ(\(raising)29 b(to)i(a)g(p)s(o)m(w)m -(er\))891 4469 y FJ(.)96 b(cons)664 4683 y FQ(Note:)49 -b FJ(NEQ)33 b FQ(is)f(used)h(to)i(mean)f FD(not)i(e)-5 -b(qual)p FQ(.)51 b(There)33 b(is)g(no)h(sp)s(ecial)e(sym)m(b)s(ol)g -(pro)m(vided)664 4796 y(for)e(it.)664 4959 y(The)40 b(ab)s(o)m(v)m(e)i -(op)s(erators)f(are)g(binary)-8 b(,)42 b(except)g FJ(NOT)e -FQ(whic)m(h)f(is)h(unary)g(and)g FJ(+)g FQ(and)g FJ(*)p -eop -%%Page: 51 51 -51 50 bop 241 299 a @beginspecial @setspecial @endspecial -FM(2.7.)72 b(OPERA)-8 b(TORS)2109 b FQ(51)241 555 y(whic)m(h)24 -b(are)i(nary)f(\(i.e.,)i(taking)f(an)f(arbitrary)f(n)m(um)m(b)s(er)h -(of)g(argumen)m(ts\).)40 b(In)25 b(addition,)241 668 -y FJ(-)35 b FQ(and)g FJ(/)g FQ(ma)m(y)h(b)s(e)f(used)f(as)i(unary)f(op) -s(erators,)i(e.g.,)h(/2)e(means)g(the)f(same)h(as)g(1/2.)241 -781 y(An)m(y)g(other)g(op)s(erator)g(is)f(parsed)g(as)h(a)g(binary)e -(op)s(erator)i(using)e(a)i(left)g(asso)s(ciation)241 -894 y(rule.)58 b(Th)m(us)35 b FJ(a/b/c)g FQ(is)h(in)m(terpreted)f(as)i -FJ(\(a/b\)/c)p FQ(.)57 b(There)36 b(are)h(t)m(w)m(o)h(exceptions)f(to) -241 1007 y(this)31 b(rule:)44 b FJ(:=)32 b FQ(and)g FJ(.)47 -b FQ(are)33 b(righ)m(t)f(asso)s(ciativ)m(e.)48 b(Example:)c -FJ(a:=b:=c)31 b FQ(is)g(in)m(terpreted)241 1120 y(as)g -FJ(a:=\(b:=c\))p FQ(.)40 b(Unlik)m(e)30 b(ALGOL)h(and)f(P)-8 -b(ASCAL,)31 b FJ(^)f FQ(is)g(left)h(asso)s(ciativ)m(e.)43 -b(In)30 b(other)241 1233 y(w)m(ords,)g FJ(a^b^c)f FQ(is)g(in)m -(terpreted)h(as)h FJ(\(a^b\)^c)p FQ(.)241 1395 y(The)h(op)s(erators)g -FL(<)p FQ(,)h FL(<)p FJ(=)p FQ(,)f FL(>)p FQ(,)h FL(>)p -FJ(=)f FQ(can)g(only)g(b)s(e)f(used)h(for)g(making)f(comparisons)h(b)s -(e-)241 1508 y(t)m(w)m(een)25 b(n)m(um)m(b)s(ers.)37 -b(No)25 b(meaning)e(is)g(curren)m(tly)g(assigned)g(to)i(this)e(kind)f -(of)i(comparison)241 1621 y(b)s(et)m(w)m(een)31 b(general)f -(expressions.)241 1784 y(P)m(aren)m(theses)c(ma)m(y)h(b)s(e)e(used)f -(to)j(sp)s(ecify)d(the)i(order)f(of)h(com)m(bination.)38 -b(If)25 b(paren)m(theses)241 1897 y(are)30 b(omitted)f(then)g(this)g -(order)g(is)f(b)m(y)i(the)f(ordering)f(of)i(the)g(precedence)g(list)e -(de\014ned)241 2010 y(b)m(y)33 b(the)h(righ)m(t-hand)f(side)g(of)h(the) -g FJ()31 b FQ(table)j(at)g(the)g(b)s(eginning)d -(of)241 2123 y(this)j(section,)i(from)f(lo)m(w)m(est)g(to)h(highest.)54 -b(In)34 b(other)h(w)m(ords,)h FJ(WHERE)e FQ(has)g(the)i(lo)m(w)m(est) -241 2236 y(precedence,)31 b(and)f FJ(.)40 b FQ(\(the)31 -b(dot)f(op)s(erator\))h(the)g(highest.)p eop -%%Page: 52 52 -52 51 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(52)964 b FM(CHAPTER)30 b(2.)71 b(STR)m(UCTURE)29 b(OF)i(PR)m(OGRAMS) -p eop -%%Page: 53 53 -53 52 bop 241 299 a @beginspecial @setspecial @endspecial -165 x @beginspecial @setspecial @endspecial 764 x FI(Chapter)64 -b(3)241 1693 y FT(Expressions)241 2187 y FQ(REDUCE)36 -b(expressions)e(ma)m(y)j(b)s(e)e(of)h(sev)m(eral)h(t)m(yp)s(es)f(and)f -(consist)h(of)g(sequences)g(of)241 2300 y(n)m(um)m(b)s(ers,)29 -b(v)-5 b(ariables,)30 b(op)s(erators,)h(left)g(and)f(righ)m(t)g(paren)m -(theses)h(and)g(commas.)42 b(The)241 2413 y(most)30 b(common)h(t)m(yp)s -(es)g(are)f(as)h(follo)m(ws:)241 2568 y @beginspecial -@setspecial @endspecial 181 x FE(3.1)135 b(Scalar)45 -b(Expressions)241 3002 y FQ(Using)27 b(the)h(arithmetic)f(op)s -(erations)g FJ(+)47 b(-)h(*)f(/)h(^)27 b FQ(\(p)s(o)m(w)m(er\))i(and)e -(paren)m(theses,)i(scalar)241 3115 y(expressions)h(are)j(comp)s(osed)f -(from)f(n)m(um)m(b)s(ers,)g(ordinary)g(\\scalar")i(v)-5 -b(ariables)30 b(\(iden-)241 3228 y(ti\014ers\),)g(arra)m(y)h(names)g -(with)e(subscripts,)g(op)s(erator)i(or)g(pro)s(cedure)e(names)i(with)e -(ar-)241 3341 y(gumen)m(ts)h(and)g(statemen)m(t)i(expressions.)241 -3490 y FD(Examples:)589 3696 y FH(x)589 3796 y(x^3)43 -b(-)g(2*y/\(2*z^2)c(-)44 b(df\(x,z\)\))589 3896 y(\(p^2)e(+)i -(m^2\)^\(1/2\)*log)37 b(\(y/m\))589 3995 y(a\(5\))42 -b(+)i(b\(i,q\))241 4214 y FQ(The)36 b(sym)m(b)s(ol)f(**)i(ma)m(y)g(b)s -(e)f(used)g(as)g(an)h(alternativ)m(e)f(to)i(the)e(caret)i(sym)m(b)s(ol) -d(\()p FJ(^)p FQ(\))i(for)241 4327 y(forming)d(p)s(o)m(w)m(ers,)j -(particularly)c(in)h(those)i(systems)g(that)g(do)f(not)h(supp)s(ort)d -(a)j(caret)241 4440 y(sym)m(b)s(ol.)241 4590 y(Statemen)m(t)27 -b(expressions,)f(usually)e(in)g(paren)m(theses,)k(can)e(also)g(form)f -(part)h(of)g(a)h(scalar)241 4689 y(expression,)i(as)i(in)e(the)h -(example)589 4895 y FH(w)44 b(+)f(\(c:=x+y\))d(+)j(z)g(.)1690 -5187 y FQ(53)p eop -%%Page: 54 54 -54 53 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(54)1625 b FM(CHAPTER)30 b(3.)71 b(EXPRESSIONS)664 -555 y FQ(When)31 b(the)g(algebraic)g(v)-5 b(alue)30 b(of)h(an)g -(expression)f(is)g(needed,)h(REDUCE)g(determines)664 -668 y(it,)f(starting)g(with)g(the)g(algebraic)g(v)-5 -b(alues)30 b(of)g(the)h(parts,)f(roughly)f(as)i(follo)m(ws:)664 -831 y(V)-8 b(ariables)39 b(and)g(op)s(erator)h(sym)m(b)s(ols)e(with)g -(an)i(argumen)m(t)g(list)e(ha)m(v)m(e)i(the)g(algebraic)664 -944 y(v)-5 b(alues)40 b(they)g(w)m(ere)h(last)f(assigned,)j(or)d(if)f -(nev)m(er)i(assigned)e(stand)h(for)g(themselv)m(es.)664 -1057 y(Ho)m(w)m(ev)m(er,)c(arra)m(y)d(elemen)m(ts)g(ha)m(v)m(e)i(the)e -(algebraic)f(v)-5 b(alues)32 b(they)h(w)m(ere)h(last)e(assigned,)664 -1170 y(or,)f(if)e(nev)m(er)i(assigned,)f(are)g(tak)m(en)i(to)f(b)s(e)f -(0.)664 1332 y(Pro)s(cedures)g(are)g(ev)-5 b(aluated)31 -b(with)e(the)i(v)-5 b(alues)29 b(of)i(their)e(actual)i(parameters.)664 -1495 y(In)f(ev)-5 b(aluating)30 b(expressions,)f(the)h(standard)g -(rules)f(of)h(algebra)h(are)g(applied.)38 b(Unfor-)664 -1608 y(tunately)-8 b(,)38 b(this)d(algebraic)g(ev)-5 -b(aluation)35 b(of)h(an)g(expression)f(is)g(not)h(as)g(unam)m(biguous) -664 1721 y(as)c(is)f(n)m(umerical)g(ev)-5 b(aluation.)45 -b(This)30 b(pro)s(cess)i(is)f(generally)g(referred)g(to)i(as)f -(\\simpli-)664 1834 y(\014cation")d(in)e(the)h(sense)h(that)g(the)f(ev) --5 b(aluation)28 b(usually)e(but)i(not)h(alw)m(a)m(ys)f(pro)s(duces)g -(a)664 1947 y(simpli\014ed)f(form)j(for)g(the)g(expression.)664 -2109 y(There)f(are)i(man)m(y)f(options)f(a)m(v)-5 b(ailable)29 -b(to)h(the)g(user)f(for)h(carrying)f(out)h(suc)m(h)f(simpli\014-)664 -2222 y(cation.)43 b(If)31 b(the)g(user)f(do)s(esn't)h(sp)s(ecify)e(an)m -(y)j(metho)s(d,)f(the)g(default)f(metho)s(d)g(is)g(used.)664 -2335 y(The)c(default)g(ev)-5 b(aluation)25 b(of)i(an)f(expression)f(in) -m(v)m(olv)m(es)i(expansion)e(of)i(the)f(expression)664 -2448 y(and)k(collection)g(of)g(lik)m(e)g(terms,)g(ordering)f(of)h(the)h -(terms,)f(ev)-5 b(aluation)30 b(of)g(deriv)-5 b(ativ)m(es)664 -2561 y(and)30 b(other)i(functions)d(and)h(substitution)f(for)h(an)m(y)h -(expressions)f(whic)m(h)f(ha)m(v)m(e)k(v)-5 b(alues)664 -2674 y(assigned)31 b(or)g(declared)f(\(see)i(assignmen)m(ts)f(and)g -FJ(LET)f FQ(statemen)m(ts\).)45 b(In)30 b(man)m(y)i(cases,)664 -2787 y(this)d(is)h(all)f(that)i(the)g(user)e(needs.)664 -2950 y(The)j(declarations)f(b)m(y)h(whic)m(h)e(the)i(user)g(can)g -(exercise)g(some)g(con)m(trol)h(o)m(v)m(er)g(the)f(w)m(a)m(y)664 -3062 y(in)k(whic)m(h)h(the)g(ev)-5 b(aluation)37 b(is)g(p)s(erformed)f -(are)i(explained)e(in)g(other)i(sections.)62 b(F)-8 b(or)664 -3175 y(example,)29 b(if)f(a)h(real)g(\(\015oating)g(p)s(oin)m(t\))f(n)m -(um)m(b)s(er)f(is)h(encoun)m(tered)i(during)c(ev)-5 b(aluation,)664 -3288 y(the)46 b(system)f(will)e(normally)g(con)m(v)m(ert)k(it)e(in)m -(to)g(a)h(ratio)f(of)h(t)m(w)m(o)g(in)m(tegers.)86 b(If)45 -b(the)664 3401 y(user)40 b(w)m(an)m(ts)h(to)g(use)e(real)h(arithmetic,) -j(he)d(can)g(e\013ect)i(this)d(b)m(y)h(the)h(command)f -FJ(on)664 3514 y(rounded;)p FQ(.)f(Other)30 b(mo)s(des)f(for)h(co)s -(e\016cien)m(t)i(arithmetic)d(are)i(describ)s(ed)d(elsewhere.)664 -3677 y(If)39 b(an)g(illegal)f(action)h(o)s(ccurs)g(during)e(ev)-5 -b(aluation)39 b(\(suc)m(h)g(as)h(division)c(b)m(y)j(zero\))i(or)664 -3790 y(functions)d(are)i(called)e(with)h(the)g(wrong)g(n)m(um)m(b)s(er) -f(of)i(argumen)m(ts,)i(and)d(so)g(on,)j(an)664 3903 y(appropriate)30 -b(error)g(message)h(is)e(generated.)664 4056 y @beginspecial -@setspecial @endspecial 182 x FE(3.2)136 b(In)l(teger)46 -b(Expressions)664 4490 y FQ(These)d(are)g(expressions)e(whic)m(h,)k(b)s -(ecause)d(of)h(the)g(v)-5 b(alues)42 b(of)h(the)g(constan)m(ts)h(and) -664 4603 y(v)-5 b(ariables)29 b(in)g(them,)i(ev)-5 b(aluate)31 -b(to)g(whole)f(n)m(um)m(b)s(ers.)664 4753 y FD(Examples:)1013 -4959 y FH(2,)261 b(37)42 b(*)h(999,)304 b(\(x)43 b(+)g(3\)^2)f(-)h(x^2) -f(-)h(6*x)p eop -%%Page: 55 55 -55 54 bop 241 299 a @beginspecial @setspecial @endspecial -FM(3.3.)72 b(BOOLEAN)30 b(EXPRESSIONS)1549 b FQ(55)241 -555 y(are)31 b(ob)m(viously)e(in)m(teger)h(expressions.)589 -761 y FH(j)44 b(+)f(k)g(-)g(2)g(*)g(j^2)241 967 y FQ(is)25 -b(an)i(in)m(teger)g(expression)e(when)h FJ(J)g FQ(and)h -FJ(K)f FQ(ha)m(v)m(e)i(v)-5 b(alues)26 b(that)h(are)g(in)m(tegers,)h -(or)f(if)e(not)241 1067 y(in)m(tegers)30 b(are)h(suc)m(h)f(that)h -(\\the)g(v)-5 b(ariables)29 b(and)h(fractions)g(cancel)h(out",)g(as)g -(in)589 1273 y FH(k)44 b(-)f(7/3)f(-)h(j)g(+)h(2/3)e(+)h(2*j^2.)241 -1428 y @beginspecial @setspecial @endspecial 181 x FE(3.3)135 -b(Bo)t(olean)46 b(Expressions)241 1848 y FQ(A)34 b(b)s(o)s(olean)f -(expression)g(returns)g(a)i(truth)f(v)-5 b(alue.)51 b(In)34 -b(the)g(algebraic)g(mo)s(de)g(of)g(RE-)241 1948 y(DUCE,)c(b)s(o)s -(olean)g(expressions)f(ha)m(v)m(e)i(the)g(syn)m(tactical)g(form:)589 -2154 y FH()39 b()h()241 -2360 y FQ(or)589 2566 y FH()f(\(\))241 -2771 y FQ(or)589 2977 y FH()e()589 3077 y(.)241 3296 -y FQ(P)m(aren)m(theses)31 b(can)g(also)f(b)s(e)g(used)g(to)h(con)m -(trol)f(the)h(precedence)g(of)f(expressions.)241 3459 -y(In)39 b(addition)f(to)j(the)f(logical)f(and)h(relational)f(op)s -(erators)h(de\014ned)e(earlier)h(as)h(in\014x)241 3572 -y(op)s(erators,)31 b(the)f(follo)m(wing)f(b)s(o)s(olean)g(op)s(erators) -i(are)g(also)f(de\014ned:)p eop -%%Page: 56 56 -56 55 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(56)1625 b FM(CHAPTER)30 b(3.)71 b(EXPRESSIONS)805 -622 y FJ(EVENP\(U\))241 b FQ(determines)29 b(if)g(the)i(n)m(um)m(b)s -(er)e FJ(U)h FQ(is)f(ev)m(en)i(or)g(not;)805 848 y FJ(FIXP\(U\))289 -b FQ(determines)29 b(if)g(the)i(expression)e FJ(U)h FQ(is)f(in)m(teger) -i(or)f(not;)805 1074 y FJ(FREEOF\(U,V\))97 b FQ(determines)38 -b(if)g(the)h(expression)f FJ(U)h FQ(do)s(es)f(not)i(con)m(tain)f(the) -1430 1186 y(k)m(ernel)29 b FJ(V)h FQ(an)m(ywhere)h(in)e(its)h -(structure;)805 1412 y FJ(NUMBERP\(U\))145 b FQ(determines)29 -b(if)g FJ(U)h FQ(is)g(a)g(n)m(um)m(b)s(er)f(or)i(not;)805 -1638 y FJ(ORDP\(U,V\))193 b FQ(determines)29 b(if)g FJ(U)g -FQ(is)h(ordered)f(ahead)h(of)h FJ(V)e FQ(b)m(y)h(some)h(canon-)1430 -1751 y(ical)i(ordering)g(\(based)i(on)f(the)h(expression)e(structure)h -(and)1430 1864 y(an)c(in)m(ternal)f(ordering)g(of)i(iden)m -(ti\014ers\);)805 2090 y FJ(PRIMEP\(U\))193 b FQ(true)30 -b(if)f FJ(U)h FQ(is)f(a)i(prime)e(ob)5 b(ject.)664 2279 -y FD(Examples:)1013 2485 y FH(j<1)1013 2584 y(x>0)86 -b(or)g(x=-2)1013 2684 y(numberp)41 b(x)1013 2784 y(fixp)h(x)h(and)f -(evenp)g(x)1013 2883 y(numberp)f(x)i(and)f(x)h(neq)g(0)664 -3102 y FQ(Bo)s(olean)d(expressions)f(can)h(only)f(app)s(ear)g(directly) -f(within)f FJ(IF)p FQ(,)j FJ(FOR)p FQ(,)f FJ(WHILE)p -FQ(,)g(and)664 3215 y FJ(UNTIL)33 b FQ(statemen)m(ts,)k(as)d(describ)s -(ed)f(in)f(other)j(sections.)52 b(Suc)m(h)33 b(expressions)g(cannot)664 -3328 y(b)s(e)28 b(used)f(in)f(place)i(of)g(ordinary)f(algebraic)g -(expressions,)h(or)g(assigned)f(to)i(a)f(v)-5 b(ariable.)664 -3491 y(NB:)36 b(F)-8 b(or)35 b(those)g(familiar)d(with)i(sym)m(b)s -(olic)f(mo)s(de,)i(the)g(meaning)f(of)h(some)g(of)f(these)664 -3604 y(op)s(erators)g(is)f(di\013eren)m(t)h(in)f(that)h(mo)s(de.)51 -b(F)-8 b(or)35 b(example,)g FJ(NUMBERP)d FQ(is)h(true)h(only)f(for)664 -3717 y(in)m(tegers)e(and)f(reals)f(in)g(sym)m(b)s(olic)g(mo)s(de.)664 -3866 y(When)40 b(t)m(w)m(o)i(or)f(more)f(b)s(o)s(olean)g(expressions)f -(are)h(com)m(bined)g(with)f FJ(AND)p FQ(,)h(they)h(are)664 -3966 y(ev)-5 b(aluated)41 b(one)g(b)m(y)f(one)h(un)m(til)d(a)j -FD(false)48 b FQ(expression)39 b(is)h(found.)69 b(The)40 -b(rest)h(are)g(not)664 4065 y(ev)-5 b(aluated.)41 b(Th)m(us)1013 -4271 y FH(numberp)g(x)i(and)f(numberp)f(y)i(and)f(x>y)664 -4490 y FQ(do)s(es)i(not)g(attempt)h(to)g(mak)m(e)g(the)f -FJ(x>y)f FQ(comparison)g(unless)g FJ(X)g FQ(and)h FJ(Y)f -FQ(are)i(b)s(oth)664 4603 y(v)m(eri\014ed)30 b(to)h(b)s(e)e(n)m(um)m(b) -s(ers.)664 4766 y(Similarly)-8 b(,)31 b(ev)-5 b(aluation)33 -b(of)g(a)h(sequence)g(of)f(b)s(o)s(olean)f(expressions)g(connected)i(b) -m(y)g FJ(OR)664 4879 y FQ(stops)d(as)f(so)s(on)g(as)h(a)g -FD(true)37 b FQ(expression)29 b(is)g(found.)p eop -%%Page: 57 57 -57 56 bop 241 299 a @beginspecial @setspecial @endspecial -FM(3.4.)72 b(EQUA)-8 b(TIONS)2136 b FQ(57)241 555 y(NB:)42 -b(In)e(a)i(b)s(o)s(olean)e(expression,)j(and)e(in)f(a)i(place)f(where)g -(a)g(b)s(o)s(olean)g(expression)241 668 y(is)i(exp)s(ected,)48 -b(the)c(algebraic)f(v)-5 b(alue)43 b(0)i(is)e(in)m(terpreted)g(as)h -FD(false)p FQ(,)k(while)42 b(all)g(other)241 781 y(algebraic)c(v)-5 -b(alues)38 b(are)h(con)m(v)m(erted)h(to)f FD(true)p FQ(.)65 -b(So)38 b(in)g(algebraic)g(mo)s(de)g(a)h(pro)s(cedure)241 -894 y(can)31 b(b)s(e)e(written)h(for)g(direct)g(usage)i(in)d(b)s(o)s -(olean)g(expressions,)h(returning)e(sa)m(y)k(1)f(or)f(0)241 -1007 y(as)g(its)g(v)-5 b(alue)30 b(as)h(in)589 1238 y -FH(procedure)40 b(polynomialp\(u,x\);)720 1337 y(if)j(den\(u\)=1)d(and) -j(deg\(u,x\)>=1)c(then)j(1)h(else)f(0;)241 1568 y FQ(One)30 -b(can)g(then)g(use)g(this)g(in)f(a)i(b)s(o)s(olean)e(construct,)i(suc)m -(h)f(as)589 1774 y FH(if)43 b(polynomialp\(q,z\))37 b(and)43 -b(not)f(polynomialp\(q,y\))37 b(then)42 b(...)241 1993 -y FQ(In)36 b(addition,)h(an)m(y)g(pro)s(cedure)e(that)j(do)s(es)e(not)h -(ha)m(v)m(e)h(a)f(de\014ned)f(return)f(v)-5 b(alue)36 -b(\(for)241 2106 y(example,)f(a)f(blo)s(c)m(k)g(without)f(a)h -FJ(RETURN)e FQ(statemen)m(t)k(in)d(it\))h(has)g(the)g(b)s(o)s(olean)f -(v)-5 b(alue)241 2219 y FD(false)p FQ(.)241 2374 y @beginspecial -@setspecial @endspecial 181 x FE(3.4)135 b(Equations)241 -2808 y FQ(Equations)29 b(are)i(a)g(particular)e(t)m(yp)s(e)h(of)h -(expression)e(with)g(the)h(syn)m(tax)589 3039 y FH()39 -b(=)k(.)241 3283 y FQ(In)37 b(addition)e(to)k(their)d(role) -i(as)f(b)s(o)s(olean)g(expressions,)h(they)g(can)g(also)f(b)s(e)g(used) -g(as)241 3396 y(argumen)m(ts)27 b(to)h(sev)m(eral)f(op)s(erators)g -(\(e.g.,)j FJ(SOLVE)p FQ(\),)c(and)g(can)i(b)s(e)e(returned)g(as)h(v)-5 -b(alues.)241 3558 y(Under)19 b(normal)h(circumstances,)i(the)f(righ)m -(t-hand-side)d(of)j(the)g(equation)f(is)f(ev)-5 b(aluated)241 -3671 y(but)33 b(not)h(the)g(left-hand-side.)49 b(This)32 -b(also)h(applies)f(to)j(an)m(y)f(substitutions)d(made)j(b)m(y)241 -3784 y(the)c FJ(SUB)g FQ(op)s(erator.)41 b(If)30 b(b)s(oth)f(sides)h -(are)g(to)h(b)s(e)f(ev)-5 b(aluated,)31 b(the)f(switc)m(h)g -FJ(EVALLHSEQP)241 3897 y FQ(should)e(b)s(e)i(turned)f(on.)241 -4047 y(T)-8 b(o)34 b(facilitate)g(the)f(handling)e(of)j(equations,)h(t) -m(w)m(o)g(selectors,)g FJ(LHS)67 b FQ(and)33 b FJ(RHS)p -FQ(,)g(whic)m(h)241 4146 y(return)23 b(the)i(left-)g(and)f(righ)m -(t-hand)f(sides)h(of)g(a)h(equation)g(resp)s(ectiv)m(ely)-8 -b(,)26 b(are)f(pro)m(vided.)241 4246 y(F)-8 b(or)31 b(example,)589 -4452 y FH(lhs\(a+b=c\))40 b(->)j(a+b)241 4551 y(and)589 -4651 y(rhs\(a+b=c\))d(->)j(c.)241 4795 y @beginspecial -@setspecial @endspecial eop -%%Page: 58 58 -58 57 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(58)1625 b FM(CHAPTER)30 b(3.)71 b(EXPRESSIONS)664 -555 y FE(3.5)136 b(Prop)t(er)44 b(Statemen)l(ts)j(as)e(Expressions)664 -795 y FQ(Sev)m(eral)33 b(kinds)f(of)h(prop)s(er)e(statemen)m(ts)k -(deliv)m(er)d(an)h(algebraic)g(or)g(n)m(umerical)f(result)664 -894 y(of)42 b(some)h(kind,)g(whic)m(h)e(can)h(in)f(turn)g(b)s(e)g(used) -g(as)h(an)g(expression)f(or)h(part)g(of)g(an)664 994 -y(expression.)c(F)-8 b(or)25 b(example,)h(an)f(assignmen)m(t)g -(statemen)m(t)h(itself)e(has)h(a)g(v)-5 b(alue,)26 b(namely)664 -1094 y(the)31 b(v)-5 b(alue)30 b(assigned.)40 b(So)1013 -1299 y FH(2)j(*)g(\(x)g(:=)g(a+b\))664 1505 y FQ(is)24 -b(equal)h(to)h FJ(2*\(a+b\))p FQ(,)e(as)h(w)m(ell)f(as)i(ha)m(ving)e -(the)i(\\side-e\013ect")g(of)g(assigning)d(the)i(v)-5 -b(alue)664 1605 y FJ(a+b)30 b FQ(to)h FJ(X)p FQ(.)f(In)g(con)m(text,) -1013 1811 y FH(y)43 b(:=)g(2)g(*)g(\(x)g(:=)g(a+b\);)664 -2030 y FQ(sets)31 b FJ(X)f FQ(to)h FJ(a+b)f FQ(and)f -FJ(Y)h FQ(to)h FJ(2*\(a+b\))p FQ(.)664 2193 y(The)g(sections)f(on)h -(the)g(v)-5 b(arious)30 b(prop)s(er)f(statemen)m(t)k(t)m(yp)s(es)e -(indicate)f(whic)m(h)f(of)i(these)664 2306 y(statemen)m(ts)h(are)f -(also)f(useful)f(as)i(expressions.)p eop -%%Page: 59 59 -59 58 bop 241 299 a @beginspecial @setspecial @endspecial -165 x @beginspecial @setspecial @endspecial 764 x FI(Chapter)64 -b(4)241 1693 y FT(Lists)241 2174 y FQ(A)33 b(list)e(is)h(an)g(ob)5 -b(ject)34 b(consisting)d(of)i(a)g(sequence)g(of)g(other)g(ob)5 -b(jects)33 b(\(including)d(lists)241 2274 y(themselv)m(es\),)i -(separated)f(b)m(y)g(commas)h(and)f(surrounded)d(b)m(y)j(braces.)43 -b(Examples)30 b(of)241 2373 y(lists)f(are:)589 2579 y -FH({a,b,c})589 2779 y({1,a-b,c=d})589 2978 y({{a},{{b,c},d},e})o(.)241 -3184 y FQ(The)h(empt)m(y)g(list)f(is)h(represen)m(ted)g(as)589 -3390 y FH({}.)241 3533 y @beginspecial @setspecial @endspecial -193 x FE(4.1)135 b(Op)t(erations)46 b(on)f(Lists)241 -3979 y FQ(Sev)m(eral)31 b(op)s(erators)h(in)f(the)h(system)f(return)g -(their)g(results)f(as)i(lists,)f(and)g(a)h(user)f(can)241 -4091 y(create)38 b(new)e(lists)f(using)h(braces)g(and)g(commas.)61 -b(Alternativ)m(ely)-8 b(,)38 b(one)f(can)g(use)f(the)241 -4204 y(op)s(erator)30 b(LIST)e(to)i(construct)g(a)g(list.)39 -b(An)29 b(imp)s(ortan)m(t)g(class)g(of)h(op)s(erations)f(on)g(lists)241 -4317 y(are)h(MAP)g(and)e(SELECT)g(op)s(erations.)40 b(F)-8 -b(or)30 b(details,)f(please)h(refer)f(to)h(the)g(c)m(hapters)241 -4430 y(on)e(MAP)-8 b(,)30 b(SELECT)d(and)h(the)h(F)m(OR)g(command.)40 -b(See)29 b(also)g(the)g(do)s(cumen)m(tation)g(on)241 -4543 y(the)h(ASSIST)f(pac)m(k)-5 b(age.)241 4706 y(T)d(o)40 -b(facilitate)f(the)g(use)g(of)h(lists,)g(a)g(n)m(um)m(b)s(er)e(of)h(op) -s(erators)h(are)g(also)f(a)m(v)-5 b(ailable)39 b(for)241 -4819 y(manipulating)34 b(them.)61 b FJ(PART\(,n\))33 -b FQ(for)k(example)g(will)d(return)i(the)h FL(n)2986 -4786 y FF(th)3093 4819 y FQ(ele-)241 4932 y(men)m(t)30 -b(of)f(a)h(list.)39 b FJ(LENGTH)28 b FQ(will)e(return)j(the)g(length)g -(of)g(a)h(list.)39 b(Sev)m(eral)30 b(op)s(erators)f(are)1690 -5187 y(59)p eop -%%Page: 60 60 -60 59 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(60)2013 b FM(CHAPTER)29 b(4.)72 b(LISTS)664 555 y -FQ(also)26 b(de\014ned)f(uniquely)e(for)j(lists.)38 b(F)-8 -b(or)26 b(those)h(familiar)d(with)g(them,)j(these)g(op)s(erators)664 -668 y(in)33 b(fact)h(mirror)e(the)i(op)s(erations)f(de\014ned)g(for)g -(Lisp)g(lists.)49 b(These)34 b(op)s(erators)f(are)i(as)664 -781 y(follo)m(ws:)664 908 y @beginspecial @setspecial -@endspecial 166 x FR(4.1.1)113 b(LIST)664 1282 y FQ(The)36 -b(op)s(erator)g(LIST)f(is)g(an)h(alternativ)m(e)g(to)h(the)f(usage)h -(of)f(curly)f(brac)m(k)m(ets.)59 b(LIST)664 1382 y(accepts)42 -b(an)f(arbitrary)e(n)m(um)m(b)s(er)g(of)i(argumen)m(ts)g(and)f(returns) -g(a)h(list)e(of)i(its)f(argu-)664 1482 y(men)m(ts.)54 -b(This)33 b(op)s(erator)h(is)g(useful)f(in)g(cases)j(where)e(op)s -(erators)g(ha)m(v)m(e)i(to)f(b)s(e)f(passed)664 1581 -y(as)d(argumen)m(ts.)41 b(E.g.,)664 1787 y FH(list\(a,list\(list\()o -(b,)o(c\))o(,d\))o(,e)o(\);)299 b(->)86 b({{a},{{b,c},d},e)o(})664 -1926 y @beginspecial @setspecial @endspecial 154 x FR(4.1.2)113 -b(FIRST)664 2302 y FQ(This)41 b(op)s(erator)h(returns)f(the)i(\014rst)e -(mem)m(b)s(er)h(of)g(a)h(list.)75 b(An)42 b(error)g(o)s(ccurs)f(if)h -(the)664 2415 y(argumen)m(t)31 b(is)e(not)i(a)g(list,)e(or)h(the)h -(list)e(is)g(empt)m(y)-8 b(.)664 2560 y @beginspecial -@setspecial @endspecial 148 x FR(4.1.3)113 b(SECOND)664 -2929 y FJ(SECOND)23 b FQ(returns)g(the)h(second)g(mem)m(b)s(er)g(of)g -(a)g(list.)38 b(An)23 b(error)h(o)s(ccurs)g(if)f(the)h(argumen)m(t)664 -3042 y(is)30 b(not)g(a)h(list)e(or)h(has)g(no)h(second)f(elemen)m(t.) -664 3170 y @beginspecial @setspecial @endspecial 166 -x FR(4.1.4)113 b(THIRD)664 3557 y FQ(This)38 b(op)s(erator)i(returns)e -(the)i(third)e(mem)m(b)s(er)h(of)g(a)h(list.)67 b(An)40 -b(error)f(o)s(ccurs)g(if)g(the)664 3670 y(argumen)m(t)31 -b(is)e(not)i(a)g(list)e(or)h(has)g(no)h(third)d(elemen)m(t.)664 -3815 y @beginspecial @setspecial @endspecial 148 x FR(4.1.5)113 -b(REST)664 4185 y FJ(REST)30 b FQ(returns)h(its)f(argumen)m(t)i(with)e -(the)i(\014rst)f(elemen)m(t)g(remo)m(v)m(ed.)45 b(An)31 -b(error)g(o)s(ccurs)664 4298 y(if)f(the)g(argumen)m(t)h(is)e(not)i(a)g -(list,)e(or)h(is)g(empt)m(y)-8 b(.)664 4442 y @beginspecial -@setspecial @endspecial 149 x FR(4.1.6)113 b FC(:)37 -b FR(\(Cons\))g(Op)s(erator)664 4799 y FQ(This)44 b(op)s(erator)h(adds) -g(\(\\conses"\))i(an)e(expression)f(to)i(the)f(fron)m(t)g(of)h(a)f -(list.)84 b(F)-8 b(or)664 4899 y(example:)p eop -%%Page: 61 61 -61 60 bop 241 299 a @beginspecial @setspecial @endspecial -FM(4.1.)72 b(OPERA)-8 b(TIONS)29 b(ON)h(LISTS)1619 b -FQ(61)589 555 y FH(a)44 b(.)f({b,c})216 b(->)130 b({a,b,c}.)241 -690 y @beginspecial @setspecial @endspecial 154 x FR(4.1.7)112 -b(APPEND)241 1053 y FQ(This)34 b(op)s(erator)i(app)s(ends)e(its)h -(\014rst)g(argumen)m(t)h(to)h(its)e(second)g(to)i(form)e(a)h(new)g -(list.)241 1152 y FD(Examples:)589 1358 y FH(append\({a,b},{c,d)o(}\)) -212 b(->)217 b({a,b,c,d})589 1458 y(append\({{a,b}},{c)o(,d})o(\))125 -b(->)217 b({{a,b},c,d}.)241 1599 y @beginspecial @setspecial -@endspecial 148 x FR(4.1.8)112 b(REVERSE)241 1955 y FQ(The)25 -b(op)s(erator)h FJ(REVERSE)e FQ(returns)h(its)h(argumen)m(t)g(with)f -(the)h(elemen)m(ts)g(in)f(the)h(rev)m(erse)241 2055 y(order.)39 -b(It)29 b(only)e(applies)g(to)i(the)f(top)h(lev)m(el)f(list,)f(not)i -(an)m(y)g(lo)m(w)m(er)f(lev)m(el)g(lists)f(that)i(ma)m(y)241 -2154 y(o)s(ccur.)40 b(Examples)30 b(are:)589 2360 y FH -(reverse\({a,b,c}\))343 b(->)217 b({c,b,a})589 2460 y -(reverse\({{a,b,c},)o(d}\))168 b(->)217 b({d,{a,b,c}}.)241 -2594 y @beginspecial @setspecial @endspecial 155 x FR(4.1.9)112 -b(List)37 b(Argumen)m(ts)f(of)i(Other)f(Op)s(erators)241 -2970 y FQ(If)29 b(an)g(op)s(erator)h(other)g(than)f(those)i(sp)s -(eci\014cally)c(de\014ned)h(for)i(lists)e(is)g(giv)m(en)i(a)g(single) -241 3083 y(argumen)m(t)23 b(that)g(is)f(a)h(list,)g(then)f(the)h -(result)e(of)i(this)e(op)s(eration)h(will)e(b)s(e)i(a)h(list)e(in)h -(whic)m(h)241 3196 y(that)30 b(op)s(erator)g(is)f(applied)f(to)i(eac)m -(h)h(elemen)m(t)f(of)g(the)g(list.)39 b(F)-8 b(or)31 -b(example,)f(the)g(result)241 3309 y(of)g(ev)-5 b(aluating)30 -b FJ(log)p FP(f)p FJ(a,b,c)p FP(g)f FQ(is)h(the)g(expression)f -FP(f)p FJ(LOG\(A\),LOG\(B\),LOG\(C\))p FP(g)p FQ(.)241 -3472 y(There)f(are)h(t)m(w)m(o)h(w)m(a)m(ys)g(to)f(inhibit)d(this)h(op) -s(erator)i(distribution.)37 b(Firstly)-8 b(,)28 b(the)h(switc)m(h)241 -3585 y FJ(LISTARGS)p FQ(,)34 b(if)h(on,)j(will)33 b(globally)i(inhibit) -e(suc)m(h)j(distribution.)54 b(Secondly)-8 b(,)38 b(one)e(can)241 -3698 y(inhibit)23 b(this)j(distribution)d(for)k(a)g(sp)s(eci\014c)f(op) -s(erator)h(b)m(y)g(the)g(declaration)f FJ(LISTARGP)p -FQ(.)241 3810 y(F)-8 b(or)34 b(example,)h(with)e(the)h(declaration)f -FJ(listargp)46 b(log)p FQ(,)34 b FJ(log)p FP(f)p FJ(a,b,c)p -FP(g)f FQ(w)m(ould)f(ev)-5 b(al-)241 3923 y(uate)31 b(to)g -FJ(LOG\()p FP(f)p FJ(A,B,C)p FP(g)p FJ(\))p FQ(.)241 -4086 y(If)f(an)g(op)s(erator)h(has)f(more)g(than)g(one)h(argumen)m(t,)g -(no)f(suc)m(h)g(distribution)d(o)s(ccurs.)241 4227 y -@beginspecial @setspecial @endspecial 148 x FR(4.1.10)112 -b(Ca)m(v)m(eats)38 b(and)h(Examples)241 4597 y FQ(Some)c(of)g(the)g -(natural)f(list)g(op)s(erations)g(suc)m(h)h(as)h FD(memb)-5 -b(er)35 b FQ(or)g FD(delete)h FQ(are)f(a)m(v)-5 b(ailable)241 -4710 y(only)29 b(after)i(loading)e(the)i(pac)m(k)-5 b(age)32 -b FD(ASSIST)p FQ(.)241 4859 y(Please)j(note)g(that)g(a)g(non-list)e(as) -i(second)f(argumen)m(t)h(to)h(CONS)d(\(a)j("dotted)f(pair")241 -4959 y(in)29 b(LISP)g(terms\))i(is)e(not)i(allo)m(w)m(ed)f(and)g -(causes)h(an)f("in)m(v)-5 b(alid)28 b(as)j(list")e(error.)p -eop -%%Page: 62 62 -62 61 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(62)2013 b FM(CHAPTER)29 b(4.)72 b(LISTS)708 555 y -FH(a)43 b(:=)g(17)f(.)i(4;)664 754 y(*****)e(17)g(4)i(invalid)c(as)j -(list)664 960 y FQ(Also,)29 b(the)f(initialization)d(of)k(a)f(scalar)g -(v)-5 b(ariable)27 b(is)h(not)g(the)h(empt)m(y)f(list)f({)i(one)f(has)g -(to)664 1060 y(set)j(list)e(t)m(yp)s(e)i(v)-5 b(ariables)29 -b(explicitly)-8 b(,)28 b(as)j(in)e(the)i(follo)m(wing)d(example:)708 -1266 y FH(load_package)38 b(assist;)708 1465 y(procedure)i(lotto)h -(\(n,m\);)751 1565 y(begin)h(scalar)f(list_1_n,)f(luckies,)g(hit;)882 -1664 y(list_1_n)g(:=)j({};)882 1764 y(luckies)e(:=)i({};)882 -1864 y(for)f(k:=1:n)g(do)g(list_1_n)f(:=)h(k)i(.)f(list_1_n;)882 -1963 y(for)f(k:=1:m)g(do)969 2063 y(<<)h(hit)f(:=)h(part\(list_1_n,ran) -o(do)o(m\()o(n-k)o(+1)o(\))38 b(+)43 b(1\);)1100 2163 -y(list_1_n)d(:=)j(delete\(hit,list_)o(1_n)o(\);)1100 -2262 y(luckies)e(:=)h(hit)h(.)g(luckies)e(>>;)882 2362 -y(return)g(luckies;)751 2461 y(end;)1263 b(\045)43 b(In)g(Germany,)d -(try)i(lotto)g(\(49,6\);)664 2681 y FD(A)n(nother)i(example:)64 -b FQ(Find)41 b(all)f(co)s(e\016cien)m(ts)j(of)f(a)g(m)m(ultiv)-5 -b(ariate)41 b(p)s(olynomial)e(with)664 2793 y(resp)s(ect)31 -b(to)g(a)f(list)f(of)i(v)-5 b(ariables:)664 3024 y FH(procedure)40 -b(allcoeffs\(q,lis\))o(;)e(\045)43 b(q)g(:)g(polynomial,)c(lis:)j(list) -g(of)h(vars)795 3124 y(allcoeffs1)c(\(list)j(q,lis\);)664 -3323 y(procedure)e(allcoeffs1\(q,lis)o(\);)751 3423 y(if)j(lis={})e -(then)h(q)h(else)839 3522 y(allcoeffs1\(fore)o(ac)o(h)38 -b(qq)k(in)h(q)g(join)f(coeff\(qq,first)c(lis\),rest)i(lis\);)p -eop -%%Page: 63 63 -63 62 bop 241 299 a @beginspecial @setspecial @endspecial -165 x @beginspecial @setspecial @endspecial 764 x FI(Chapter)64 -b(5)241 1693 y FT(Statemen)-6 b(ts)241 2174 y FQ(A)29 -b(statemen)m(t)h(is)e(an)m(y)i(com)m(bination)e(of)h(reserv)m(ed)g(w)m -(ords)f(and)g(expressions,)g(and)h(has)241 2274 y(the)h(syn)m(tax)589 -2480 y FH()39 b(::=)k(|)241 2686 y FQ(A)26 b(REDUCE)g(program)f(consists)h(of)g(a) -g(series)f(of)h(commands)g(whic)m(h)e(are)j(statemen)m(ts)241 -2785 y(follo)m(w)m(ed)j(b)m(y)g(a)h(terminator:)589 2991 -y FH()39 b(::=)j(;|$)241 3210 y FQ(The)22 -b(division)d(of)k(the)g(program)f(in)m(to)h(lines)e(is)g(arbitrary)-8 -b(.)37 b(Sev)m(eral)23 b(statemen)m(ts)h(can)f(b)s(e)241 -3323 y(on)30 b(one)h(line,)d(or)j(one)f(statemen)m(t)i(can)f(b)s(e)f -(freely)f(brok)m(en)h(on)m(to)i(sev)m(eral)f(lines.)38 -b(If)30 b(the)241 3436 y(program)24 b(is)g(run)g(in)m(teractiv)m(ely)-8 -b(,)26 b(statemen)m(ts)h(ending)c(with)h(;)j(or)d($)i(are)f(not)g(pro)s -(cessed)241 3549 y(un)m(til)k(an)j(end-of-line)d(c)m(haracter)k(is)e -(encoun)m(tered.)44 b(This)29 b(c)m(haracter)k(can)f(v)-5 -b(ary)31 b(from)241 3662 y(system)j(to)i(system,)g(but)e(is)f(normally) -g(the)p 1807 3574 314 4 v 1807 3687 4 113 v 63 w FG(Return)p -2117 3687 V 1807 3690 314 4 v 63 w FQ(k)m(ey)i(on)f(an)h(ASCI)s(I)e -(terminal.)241 3775 y(Sp)s(eci\014c)c(systems)h(ma)m(y)h(also)f(use)g -(additional)f(k)m(eys)i(as)f(statemen)m(t)i(terminators.)241 -3938 y(If)e(a)g(statemen)m(t)j(is)c(a)i(prop)s(er)e(statemen)m(t,)j -(the)f(appropriate)e(action)i(tak)m(es)h(place.)241 4100 -y(Dep)s(ending)i(on)i(the)g(nature)f(of)h(the)g(prop)s(er)e(statemen)m -(t)k(some)e(result)f(or)g(resp)s(onse)241 4213 y(ma)m(y)f(or)f(ma)m(y)h -(not)g(b)s(e)e(prin)m(ted)g(out,)j(and)d(the)i(resp)s(onse)e(ma)m(y)i -(or)g(ma)m(y)g(not)f(dep)s(end)241 4326 y(on)d(the)h(terminator)f -(used.)241 4489 y(If)h(a)h(statemen)m(t)h(is)d(an)i(expression,)e(it)h -(is)g(ev)-5 b(aluated.)44 b(If)31 b(the)h(terminator)f(is)f(a)i(semi-) -241 4602 y(colon,)j(the)f(result)g(is)f(prin)m(ted.)50 -b(If)34 b(the)g(terminator)g(is)f(a)i(dollar)e(sign,)h(the)g(result)f -(is)241 4715 y(not)26 b(prin)m(ted.)38 b(Because)28 b(it)e(is)f(not)h -(usually)e(p)s(ossible)g(to)j(kno)m(w)f(in)f(adv)-5 b(ance)27 -b(ho)m(w)f(large)241 4828 y(an)k(expression)f(will)f(b)s(e,)i(no)g -(explicit)f(format)i(statemen)m(ts)h(are)f(o\013ered)f(to)h(the)g -(user.)241 4940 y(Ho)m(w)m(ev)m(er,)39 b(a)c(v)-5 b(ariet)m(y)36 -b(of)f(output)g(declarations)g(are)g(a)m(v)-5 b(ailable)35 -b(so)h(that)f(the)h(output)1690 5187 y(63)p eop -%%Page: 64 64 -64 63 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(64)1643 b FM(CHAPTER)29 b(5.)72 b(ST)-8 b(A)g(TEMENTS)664 -555 y FQ(can)26 b(b)s(e)f(pro)s(duced)f(in)g(di\013eren)m(t)h(forms.)39 -b(These)25 b(output)h(declarations)f(are)h(explained)664 -668 y(in)j(Section)h @beginspecial @setspecial @endspecial(8.3.3)r(.) -664 831 y(The)35 b(follo)m(wing)e(sub-sections)h(describ)s(e)f(the)i(t) -m(yp)s(es)g(of)g(prop)s(er)f(statemen)m(ts)i(in)e(RE-)664 -944 y(DUCE.)664 1075 y @beginspecial @setspecial @endspecial -200 x FE(5.1)136 b(Assignmen)l(t)45 b(Statemen)l(ts)664 -1514 y FQ(These)30 b(statemen)m(ts)i(ha)m(v)m(e)g(the)f(syn)m(tax)839 -1720 y FH()g(::=)j()d(:=)k -()664 1939 y FQ(The)35 b FJ()c -FQ(on)k(the)g(left)g(side)f(is)g(normally)f(the)i(name)g(of)g(a)h(v)-5 -b(ariable,)35 b(an)664 2052 y(op)s(erator)e(sym)m(b)s(ol)f(with)f(its)h -(list)f(of)i(argumen)m(ts)g(\014lled)e(in,)h(or)h(an)f(arra)m(y)h(name) -g(with)664 2165 y(the)c(prop)s(er)e(n)m(um)m(b)s(er)h(of)h(in)m(teger)g -(subscript)e(v)-5 b(alues)28 b(within)e(the)j(arra)m(y)g(b)s(ounds.)38 -b(F)-8 b(or)664 2278 y(example:)891 2488 y FJ(a1)48 b(:=)f(b)g(+)h(c) -891 2600 y(h\(l,m\))f(:=)g(x-2*y)659 b FQ(\(where)30 -b FJ(h)g FQ(is)g(an)g(op)s(erator\))891 2713 y FJ(k\(3,5\))47 -b(:=)g(x-2*y)659 b FQ(\(where)30 b FJ(k)g FQ(is)g(a)g(2-dim.)40 -b(arra)m(y\))664 2923 y(More)32 b(general)g(assignmen)m(ts)f(suc)m(h)g -(as)h FJ(a+b)47 b(:=)g(c)31 b FQ(are)h(also)g(allo)m(w)m(ed.)44 -b(The)31 b(e\013ect)i(of)664 3036 y(these)e(is)e(explained)g(in)g -(Section)h @beginspecial @setspecial @endspecial(10.2.5)s(.)664 -3199 y(An)c(assignmen)m(t)g(statemen)m(t)i(causes)f(the)f(expression)f -(on)i(the)f(righ)m(t-hand-side)f(to)i(b)s(e)664 3312 -y(ev)-5 b(aluated.)63 b(If)38 b(the)g(left-hand-side)e(is)h(a)h(v)-5 -b(ariable,)39 b(the)f(v)-5 b(alue)37 b(of)h(the)g(righ)m(t-hand-)664 -3424 y(side)k(is)f(assigned)h(to)i(that)f(unev)-5 b(aluated)42 -b(v)-5 b(ariable.)76 b(If)42 b(the)h(left-hand-side)e(is)h(an)664 -3537 y(op)s(erator)37 b(or)g(arra)m(y)g(expression,)h(the)f(argumen)m -(ts)g(of)g(that)g(op)s(erator)g(or)g(arra)m(y)h(are)664 -3650 y(ev)-5 b(aluated,)33 b(but)f(no)g(other)h(simpli\014cation)c -(done.)46 b(The)32 b(ev)-5 b(aluated)33 b(righ)m(t-hand-side)664 -3763 y(is)i(then)h(assigned)g(to)h(the)f(resulting)e(expression.)57 -b(F)-8 b(or)37 b(example,)h(if)d FJ(A)h FQ(is)f(a)i(single-)664 -3876 y(dimensional)g(arra)m(y)-8 b(,)43 b FJ(a\(1+1\))j(:=)h(b)39 -b FQ(assigns)f(the)i(v)-5 b(alue)39 b FJ(B)g FQ(to)h(the)g(arra)m(y)f -(elemen)m(t)664 3989 y FJ(a\(2\))p FQ(.)664 4152 y(If)33 -b(a)g(semicolon)f(is)g(used)g(as)i(the)f(terminator)f(when)g(an)h -(assignmen)m(t)g(is)f(issued)f(as)j(a)664 4265 y(command)39 -b(\(i.e.)66 b(not)38 b(as)h(a)h(part)e(of)h(a)g(group)f(statemen)m(t)j -(or)d(pro)s(cedure)g(or)h(other)664 4378 y(similar)26 -b(construct\),)k(the)f(left-hand)e(side)h(sym)m(b)s(ol)f(of)h(the)h -(assignmen)m(t)f(statemen)m(t)j(is)664 4490 y(prin)m(ted)g(out,)j -(follo)m(w)m(ed)e(b)m(y)g(a)h(\\)p FJ(:=)p FQ(",)g(follo)m(w)m(ed)g(b)m -(y)f(the)h(v)-5 b(alue)32 b(of)g(the)h(expression)e(on)664 -4603 y(the)g(righ)m(t.)664 4753 y(It)g(is)e(also)h(p)s(ossible)e(to)j -(write)f(a)h(m)m(ultiple)d(assignmen)m(t)i(statemen)m(t:)839 -4959 y FH()38 b(:=)43 b(...)f(:=)h()c(:=)j -()p eop -%%Page: 65 65 -65 64 bop 241 299 a @beginspecial @setspecial @endspecial -FM(5.2.)72 b(GR)m(OUP)31 b(ST)-8 b(A)g(TEMENTS)1692 b -FQ(65)241 555 y(In)43 b(this)f(form,)47 b(eac)m(h)e FJ()40 -b FQ(but)j(the)h(last)f(is)g(set)h(to)h(the)e(v)-5 b(alue)43 -b(of)h(the)241 668 y(last)31 b FJ()p FQ(.)42 -b(If)31 b(a)h(semicolon)f(is)g(used)g(as)h(a)g(terminator,)g(eac)m(h)h -(expression)241 781 y(except)k(the)f(last)f(is)g(prin)m(ted)g(follo)m -(w)m(ed)g(b)m(y)h(a)g(\\)p FJ(:=)p FQ(")g(ending)e(with)h(the)h(v)-5 -b(alue)35 b(of)h(the)241 894 y(last)30 b(expression.)241 -1039 y @beginspecial @setspecial @endspecial 148 x FR(5.1.1)112 -b(Set)38 b(Statemen)m(t)241 1409 y FQ(In)e(some)i(cases,)i(it)d(is)g -(desirable)e(to)j(p)s(erform)e(an)h(assignmen)m(t)h(in)e(whic)m(h)g -FD(b)-5 b(oth)45 b FQ(the)241 1522 y(left-)32 b(and)g(righ)m(t-hand)g -(sides)f(of)i(an)f(assignmen)m(t)g(are)h(ev)-5 b(aluated.)48 -b(In)31 b(this)h(case,)i(the)241 1634 y FJ(SET)29 b FQ(statemen)m(t)j -(can)f(b)s(e)f(used)f(with)h(the)g(syn)m(tax:)589 1865 -y FH(SET\(,)o()o(\);)241 -2096 y FQ(F)-8 b(or)31 b(example,)f(the)h(statemen)m(ts)589 -2302 y FH(j)44 b(:=)e(23;)589 2402 y(set\(mkid\(a,j\),x\);)241 -2621 y FQ(assigns)29 b(the)i(v)-5 b(alue)30 b FJ(X)g -FQ(to)h FJ(A23)p FQ(.)241 2775 y @beginspecial @setspecial -@endspecial 182 x FE(5.2)135 b(Group)44 b(Statemen)l(ts)241 -3210 y FQ(The)33 b(group)g(statemen)m(t)j(is)d(a)h(construct)g(used)f -(where)h(REDUCE)f(exp)s(ects)i(a)f(single)241 3323 y(statemen)m(t,)40 -b(but)c(a)i(series)e(of)h(actions)g(needs)f(to)i(b)s(e)e(p)s(erformed.) -59 b(It)36 b(is)g(formed)h(b)m(y)241 3436 y(enclosing)g(one)i(or)g -(more)f(statemen)m(ts)i(\(of)f(an)m(y)g(kind\))e(b)s(et)m(w)m(een)i -(the)g(sym)m(b)s(ols)e FL(<<)241 3548 y FQ(and)30 b FL(>>)p -FQ(,)f(separated)i(b)m(y)g(semicolons)e(or)h(dollar)f(signs)g({)i(it)f -(do)s(esn't)g(matter)i(whic)m(h.)241 3661 y(The)e(statemen)m(ts)i(are)e -(executed)i(one)e(after)h(another.)241 3824 y(Examples)e(will)f(b)s(e)i -(giv)m(en)h(in)e(the)i(sections)f(on)h FJ(IF)f FQ(and)g(other)g(t)m(yp) -s(es)h(of)g(statemen)m(ts)241 3937 y(in)e(whic)m(h)g(the)h -FL(<<)g FQ(.)16 b(.)f(.)g FL(>>)30 b FQ(construct)h(is)e(useful.)241 -4100 y(If)e(the)i(last)e(statemen)m(t)j(in)d(the)h(enclosed)g(group)f -(has)h(a)h(v)-5 b(alue,)28 b(then)g(that)g(is)f(also)h(the)241 -4213 y(v)-5 b(alue)31 b(of)h(the)g(group)f(statemen)m(t.)47 -b(Care)32 b(m)m(ust)g(b)s(e)f(tak)m(en)i(not)f(to)h(ha)m(v)m(e)g(a)f -(semicolon)241 4326 y(or)h(dollar)e(sign)h(after)h(the)g(last)g(group)s -(ed)f(statemen)m(t,)k(if)31 b(the)j(v)-5 b(alue)32 b(of)h(the)g(group)f -(is)241 4438 y(relev)-5 b(an)m(t:)45 b(suc)m(h)32 b(an)g(extra)h -(terminator)f(causes)h(the)f(group)g(to)h(ha)m(v)m(e)g(the)g(v)-5 -b(alue)32 b(NIL)241 4551 y(or)e(zero.)241 4688 y @beginspecial -@setspecial @endspecial eop -%%Page: 66 66 -66 65 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(66)1643 b FM(CHAPTER)29 b(5.)72 b(ST)-8 b(A)g(TEMENTS)664 -555 y FE(5.3)136 b(Conditional)46 b(Statemen)l(ts)664 -808 y FQ(The)30 b(conditional)f(statemen)m(t)j(has)e(the)h(follo)m -(wing)d(syn)m(tax:)708 1039 y FH()i(::=)839 -1138 y(IF)i()e(THEN)j()d([ELSE)i -(])664 1382 y FQ(The)34 b(b)s(o)s(olean)f(expression)g(is)g -(ev)-5 b(aluated.)52 b(If)33 b(this)g(is)g FD(true)p -FQ(,)i(the)g(\014rst)e FJ()664 1495 y FQ(is)d(executed.)41 -b(If)30 b(it)g(is)f FD(false)p FQ(,)j(the)e(second)h(is.)664 -1645 y FD(Examples:)1013 1851 y FH(if)43 b(x=5)f(then)g(a:=b+c)f(else)h -(d:=e+f)1013 2050 y(if)h(x=5)f(and)g(numberp)f(y)1144 -2150 y(then)h(<>)1144 2249 y(else)j(<>)664 2455 y FQ(Note)32 b(the)e(use)h(of)f(the)h(group)e -(statemen)m(t.)664 2555 y(Conditional)f(statemen)m(ts)k(asso)s(ciate)g -(to)f(the)f(righ)m(t;)g(i.e.,)1013 2761 y FH(IF)43 b()f(THEN)g()g -(ELSE)g(IF)h()f(THEN)g()h(ELSE)e()664 2967 y -FQ(is)30 b(equiv)-5 b(alen)m(t)29 b(to:)1013 3172 y FH(IF)43 -b()f(THEN)g()g(ELSE)g(\(IF)h()f(THEN)g()g(ELSE)g(\))664 -3378 y FQ(In)30 b(addition,)f(the)h(construction)1013 -3584 y FH(IF)43 b()f(THEN)g(IF)h()f(THEN)g()g(ELSE)g()664 -3790 y FQ(parses)30 b(as)1013 3996 y FH(IF)43 b()f(THEN)g(\(IF)g -()h(THEN)f()g(ELSE)g(\).)664 4215 y FQ(If)36 -b(the)h(v)-5 b(alue)35 b(of)i(the)g(conditional)d(statemen)m(t)k(is)e -(of)g(primary)f(in)m(terest,)j(it)e(is)f(often)664 4328 -y(called)f(a)g(conditional)f(expression)g(instead.)52 -b(Its)34 b(v)-5 b(alue)34 b(is)f(the)i(v)-5 b(alue)34 -b(of)g(whic)m(hev)m(er)664 4441 y(statemen)m(t)28 b(w)m(as)e(executed.) -40 b(\(If)25 b(the)h(executed)g(statemen)m(t)i(has)d(no)h(v)-5 -b(alue,)26 b(the)g(condi-)664 4554 y(tional)j(expression)g(has)h(no)f -(v)-5 b(alue)30 b(or)g(the)g(v)-5 b(alue)29 b(0,)i(dep)s(ending)c(on)j -(ho)m(w)g(it)f(is)g(used.\))664 4703 y FD(Examples:)1013 -4909 y FH(a:=if)41 b(x<5)i(then)f(123)g(else)g(456;)p -eop -%%Page: 67 67 -67 66 bop 241 299 a @beginspecial @setspecial @endspecial -FM(5.4.)72 b(F)m(OR)31 b(ST)-8 b(A)g(TEMENTS)1834 b FQ(67)589 -555 y FH(b:=u)42 b(+)i(v^\(if)d(numberp)g(z)i(then)f(10*z)85 -b(else)42 b(1\))h(+)g(w;)241 761 y FQ(If)28 b(the)h(v)-5 -b(alue)29 b(is)f(of)h(no)g(concern,)h(the)f FJ(ELSE)f -FQ(clause)g(ma)m(y)i(b)s(e)e(omitted)h(if)f(no)h(action)g(is)241 -861 y(required)f(in)h(the)i FD(false)38 b FQ(case.)589 -1067 y FH(if)43 b(x=5)g(then)e(a:=b+c;)241 1286 y FQ(Note:)58 -b(As)39 b(explained)d(in)i(Section)g @beginspecial @setspecial -@endspecial(3.3)q(,a)h(if)f(a)h(scalar)f(or)h(n)m(umerical)e -(expression)g(is)241 1399 y(used)30 b(in)g(place)i(of)f(the)h(b)s(o)s -(olean)e(expression)g({)i(for)f(example,)h(a)g(v)-5 b(ariable)30 -b(is)g(written)241 1512 y(there)k({)g(the)h FD(true)41 -b FQ(alternativ)m(e)34 b(is)f(follo)m(w)m(ed)h(unless)e(the)i -(expression)f(has)h(the)g(v)-5 b(alue)241 1625 y(0.)241 -1755 y @beginspecial @setspecial @endspecial 199 x FE(5.4)135 -b(F)l(OR)45 b(Statemen)l(ts)241 2193 y FQ(The)30 b FJ(FOR)f -FQ(statemen)m(t)k(is)c(used)h(to)h(de\014ne)f(a)g(v)-5 -b(ariet)m(y)31 b(of)g(program)f(lo)s(ops.)40 b(Its)30 -b(general)241 2293 y(syn)m(tax)h(is)e(as)i(follo)m(ws:)241 -2596 y FH(FOR)385 2376 y FB(8)385 2451 y(>)385 2476 y(>)385 -2501 y(<)385 2650 y(>)385 2675 y(>)385 2700 y(:)459 2485 -y FA(h)p Fz(var)9 b FA(i)45 b FH(:=)e FA(h)p Fz(numb)l(er)9 -b FA(i)1220 2368 y FB(\032)1282 2435 y FH(STEP)42 b FA(h)p -Fz(numb)l(er)9 b FA(i)43 b FH(UNTIL)1670 2534 y(:)2101 -2368 y FB(\033)2177 2485 y FA(h)p Fz(numb)l(er)9 b FA(i)1066 -2707 y FH(EACH)42 b FA(h)p Fz(var)9 b FA(i)1516 2590 -y FB(\032)1579 2656 y FH(IN)1579 2756 y(ON)1666 2590 -y FB(\033)1772 2707 y FA(h)p Fz(list)f FA(i)2559 2376 -y FB(9)2559 2451 y(>)2559 2476 y(>)2559 2501 y(=)2559 -2650 y(>)2559 2675 y(>)2559 2700 y(;)2646 2596 y FA(h)p -Fz(action)e FA(i)46 b(h)p Fz(exprn)6 b FA(i)241 2903 -y FQ(where)787 3122 y FP(h)p FD(action)h FP(i)49 b FJ(::=)e -(do|product|sum|collect|jo)o(in.)241 3341 y FQ(The)c(assignmen)m(t)h -(form)f(of)h(the)g FJ(FOR)f FQ(statemen)m(t)j(de\014nes)d(an)h -(iteration)f(o)m(v)m(er)i(the)241 3454 y(indicated)32 -b(n)m(umerical)h(range.)51 b(If)33 b(expressions)g(that)h(do)g(not)g -(ev)-5 b(aluate)34 b(to)h(n)m(um)m(b)s(ers)241 3567 y(are)c(used)e(in)g -(the)i(designated)f(places,)g(an)g(error)g(will)e(result.)241 -3730 y(The)h FJ(FOR)47 b(EACH)29 b FQ(form)h(of)g(the)g -FJ(FOR)g FQ(statemen)m(t)i(is)d(designed)g(to)i(iterate)f(do)m(wn)g(a)h -(list.)241 3843 y(Again,)f(an)g(error)g(will)e(o)s(ccur)i(if)g(a)g -(list)f(is)h(not)g(used.)241 4006 y(The)j(action)h FJ(DO)f -FQ(means)h(that)g FJ()e FQ(is)h(simply)e(ev)-5 -b(aluated)34 b(and)f(no)g(v)-5 b(alue)34 b(k)m(ept;)241 -4119 y(the)24 b(statemen)m(t)h(returning)d(0)i(in)e(this)h(case)h(\(or) -g(no)g(v)-5 b(alue)23 b(at)h(the)g(top)g(lev)m(el\).)38 -b FJ(COLLECT)241 4231 y FQ(means)30 b(that)i(the)f(results)e(of)i(ev)-5 -b(aluating)30 b FJ()f FQ(eac)m(h)j(time)e(are)h(link)m(ed)e -(together)241 4344 y(to)34 b(mak)m(e)h(a)e(list,)h(and)f -FJ(JOIN)f FQ(means)h(that)i(the)e(v)-5 b(alues)33 b(of)h -FJ()d FQ(are)j(themselv)m(es)241 4457 y(lists)40 -b(that)j(are)g(joined)e(to)h(mak)m(e)i(one)e(list)f(\(similar)f(to)i -FJ(CONC)f FQ(in)g(Lisp\).)75 b(Finally)-8 b(,)241 4570 -y FJ(PRODUCT)34 b FQ(and)i FJ(SUM)g FQ(form)g(the)g(resp)s(ectiv)m(e)h -(com)m(bined)f(v)-5 b(alue)36 b(out)g(of)h(the)g(v)-5 -b(alues)35 b(of)241 4683 y FJ()p FQ(.)241 4846 -y(In)30 b(all)f(cases,)j FJ()d FQ(is)g(ev)-5 b(aluated)31 -b(algebraically)e(within)g(the)h(scop)s(e)h(of)g(the)g(cur-)241 -4959 y(ren)m(t)e(v)-5 b(alue)29 b(of)g FJ()p FQ(.)39 -b(If)29 b FJ()d FQ(is)j FJ(DO)p FQ(,)f(then)h(nothing)f(else)h -(happ)s(ens.)39 b(In)28 b(other)p eop -%%Page: 68 68 -68 67 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(68)1643 b FM(CHAPTER)29 b(5.)72 b(ST)-8 b(A)g(TEMENTS)664 -555 y FQ(cases,)30 b FJ()c FQ(is)h(a)h(binary)f(op)s(erator)h -(that)h(causes)g(a)f(result)f(to)i(b)s(e)e(built)f(up)i(and)664 -668 y(returned)i(b)m(y)h FJ(FOR)p FQ(.)g(In)g(those)g(cases,)i(the)e -(lo)s(op)g(is)f(initialized)e(to)k(a)g(default)e(v)-5 -b(alue)31 b(\()p FJ(0)664 781 y FQ(for)j FJ(SUM)p FQ(,)g -FJ(1)g FQ(for)g FJ(PRODUCT)p FQ(,)f(and)h(an)g(empt)m(y)h(list)e(for)h -(the)h(other)g(actions\).)53 b(The)34 b(test)664 894 -y(for)i(the)h(end)e(condition)g(is)h(made)g(b)s(efore)g(an)m(y)g -(action)h(is)e(tak)m(en.)60 b(As)36 b(in)f(P)m(ascal,)k(if)664 -1007 y(the)32 b(v)-5 b(ariable)30 b(is)g(out)i(of)g(range)f(in)g(the)g -(assignmen)m(t)g(case,)i(or)f(the)f FJ()f FQ(is)g(empt)m(y)664 -1120 y(in)f(the)i FJ(FOR)47 b(EACH)29 b FQ(case,)j FJ()c -FQ(is)h(not)i(ev)-5 b(aluated)31 b(at)g(all.)664 1282 -y FD(Examples:)664 1387 y @beginspecial @setspecial @endspecial -775 1507 a FQ(1.)46 b(If)26 b FJ(A)p FQ(,)g FJ(B)g FQ(ha)m(v)m(e)h(b)s -(een)e(declared)h(to)h(b)s(e)e(arra)m(ys,)i(the)g(follo)m(wing)d -(stores)j(5)3274 1474 y FO(2)3340 1507 y FQ(through)891 -1606 y(10)981 1573 y FO(2)1053 1606 y FQ(in)j FJ(A\(5\))h -FQ(through)g FJ(A\(10\))p FQ(,)f(and)h(at)h(the)g(same)g(time)f(stores) -h(the)g(cub)s(es)e(in)891 1706 y(the)h FJ(B)f FQ(arra)m(y:)1022 -1918 y FH(for)43 b(i)g(:=)f(5)i(step)e(1)h(until)e(10)i(do)g -(<>)664 2011 y @beginspecial -@setspecial @endspecial 775 2129 a FQ(2.)46 b(As)31 b(a)g(con)m(v)m -(enience,)g(the)g(common)f(construction)1240 2341 y FH(STEP)42 -b(1)h(UNTIL)891 2553 y FQ(ma)m(y)35 b(b)s(e)e(abbreviated)h(to)g(a)h -(colon.)51 b(Th)m(us,)34 b(instead)f(of)h(the)g(ab)s(o)m(v)m(e)h(w)m(e) -g(could)891 2652 y(write:)1240 2864 y FH(for)42 b(i)i(:=)e(5:10)g(do)h -(<>)664 2950 y @beginspecial -@setspecial @endspecial 775 3076 a FQ(3.)46 b(The)35 -b(follo)m(wing)f(sets)h FJ(C)g FQ(to)h(the)g(sum)e(of)h(the)h(squares)e -(of)i(1,3,5,7,9;)41 b(and)34 b FJ(D)h FQ(to)891 3175 -y(the)c(expression)e FJ(x*\(x+1\)*\(x+2\)*\(x+3\)*\(x+4\))o(:)1240 -3387 y FH(c)43 b(:=)g(for)f(j:=1)g(step)g(2)h(until)f(9)h(sum)f(j^2;) -1240 3487 y(d)h(:=)g(for)f(k:=0)g(step)g(1)h(until)f(4)h(product)e -(\(x+k\);)664 3580 y @beginspecial @setspecial @endspecial -775 3698 a FQ(4.)46 b(The)39 b(follo)m(wing)f(forms)h(a)h(list)e(of)h -(the)h(squares)e(of)i(the)g(elemen)m(ts)f(of)h(the)f(list)891 -3798 y FP(f)p FJ(a,b,c)p FP(g)p FJ(:)1240 4010 y FH(for)j(each)g(x)i -(in)e({a,b,c})f(collect)g(x^2;)664 4096 y @beginspecial -@setspecial @endspecial 775 4221 a FQ(5.)46 b(The)32 -b(follo)m(wing)f(forms)h(a)h(list)e(of)h(the)h(listed)e(squares)g(of)i -(the)g(elemen)m(ts)f(of)h(the)891 4321 y(list)c FP(f)p -FJ(a,b,c)p FP(g)h FQ(\(i.e.,)h FP(ff)p FJ(A^2)p FP(g)p -FJ(,)p FP(f)p FJ(B^2)p FP(g)p FJ(,)p FP(f)p FJ(C^2)p -FP(gg)p FJ(\):)1240 4533 y FH(for)42 b(each)g(x)i(in)e({a,b,c})f -(collect)g({x^2};)664 4619 y @beginspecial @setspecial -@endspecial 775 4744 a FQ(6.)46 b(The)37 b(follo)m(wing)e(also)i(forms) -g(a)g(list)f(of)h(the)g(squares)g(of)g(the)g(elemen)m(ts)h(of)f(the)891 -4844 y(list)e FP(f)p FJ(a,b,c)p FP(g)p FJ(,)h FQ(since)f(the)h -FJ(JOIN)e FQ(op)s(eration)h(joins)g(the)h(individual)31 -b(lists)j(in)m(to)891 4944 y(one)d(list:)p eop -%%Page: 69 69 -69 68 bop 241 299 a @beginspecial @setspecial @endspecial -FM(5.5.)72 b(WHILE)30 b(.)16 b(.)f(.)h(DO)2081 b FQ(69)817 -555 y FH(for)42 b(each)g(x)h(in)g({a,b,c})e(join)h({x^2};)241 -779 y FQ(The)34 b(con)m(trol)h(v)-5 b(ariable)34 b(used)g(in)f(the)i -FJ(FOR)f FQ(statemen)m(t)j(is)d(actually)g(a)h(new)f(v)-5 -b(ariable,)241 879 y(not)30 b(related)h(to)g(the)f(v)-5 -b(ariable)30 b(of)g(the)h(same)f(name)h(outside)f(the)g -FJ(FOR)g FQ(statemen)m(t.)42 b(In)241 979 y(other)27 -b(w)m(ords,)g(executing)g(a)h(statemen)m(t)g FJ(for)47 -b(i:=)26 b FQ(.)16 b(.)f(.)g(do)s(esn't)27 b(c)m(hange)h(the)f -(system's)241 1078 y(assumption)i(that)i FL(i)950 1045 -y FO(2)1015 1078 y FQ(=)26 b FP(\000)p FQ(1.)41 b(F)-8 -b(urthermore,)31 b(in)e(algebraic)h(mo)s(de,)h(the)g(v)-5 -b(alue)30 b(of)g(the)241 1178 y(con)m(trol)f(v)-5 b(ariable)28 -b(is)g(substituted)f(in)h FJ()f FQ(only)h(if)g(it)g(o)s(ccurs)h -(explicitly)d(in)i(that)241 1277 y(expression.)50 b(It)34 -b(will)d(not)k(replace)e(a)i(v)-5 b(ariable)33 b(of)h(the)g(same)g -(name)g(in)f(the)h(v)-5 b(alue)33 b(of)241 1377 y(that)e(expression.)39 -b(F)-8 b(or)31 b(example:)589 1583 y FH(b)44 b(:=)e(a;)h(for)f(a)i(:=)e -(1:2)h(do)g(write)e(b;)241 1802 y FQ(prin)m(ts)29 b FJ(A)h -FQ(t)m(wice,)h(not)f(1)h(follo)m(w)m(ed)f(b)m(y)g(2.)241 -1957 y @beginspecial @setspecial @endspecial 181 x FE(5.5)135 -b(WHILE)45 b(.)23 b(.)g(.)g(DO)241 2378 y FQ(The)28 b -FJ(FOR)47 b(...DO)27 b FQ(feature)i(allo)m(ws)f(easy)i(co)s(ding)d(of)i -(a)g(rep)s(eated)g(op)s(eration)f(in)g(whic)m(h)241 2478 -y(the)d(n)m(um)m(b)s(er)f(of)h(rep)s(etitions)f(is)g(kno)m(wn)h(in)e -(adv)-5 b(ance.)40 b(If)25 b(the)g(criterion)f(for)h(rep)s(etition)241 -2577 y(is)k(more)i(complicated,)f FJ(WHILE)46 b(...DO)29 -b FQ(can)i(often)g(b)s(e)f(used.)39 b(Its)31 b(syn)m(tax)g(is:)589 -2783 y FH(WHILE)42 b()f(DO)k()241 -3002 y FQ(The)22 b FJ(WHILE)47 b(...DO)21 b FQ(con)m(trols)i(the)h -(single)d(statemen)m(t)k(follo)m(wing)c FJ(DO)p FQ(.)i(If)f(sev)m(eral) -i(state-)241 3115 y(men)m(ts)f(are)h(to)g(b)s(e)f(rep)s(eated,)i(as)e -(is)g(almost)g(alw)m(a)m(ys)h(the)f(case,)j(they)e(m)m(ust)f(b)s(e)g -(group)s(ed)241 3228 y(using)29 b(the)h FL(<<)g FQ(.)15 -b(.)h(.)f FL(>>)30 b FQ(or)g FJ(BEGIN)47 b(...END)28 -b FQ(as)j(in)e(the)h(example)h(b)s(elo)m(w.)241 3391 -y(The)25 b FJ(WHILE)f FQ(condition)h(is)g(tested)h(eac)m(h)h(time)f -FD(b)-5 b(efor)g(e)33 b FQ(the)26 b(action)g(follo)m(wing)e(the)i -FJ(DO)f FQ(is)241 3504 y(attempted.)39 b(If)21 b(the)h(condition)e(is)h -(false)h(to)g(b)s(egin)f(with,)h(the)g(action)g(is)f(not)h(p)s -(erformed)241 3617 y(at)j(all.)38 b(Mak)m(e)26 b(sure)e(that)h(what)g -(is)e(to)i(b)s(e)f(tested)i(has)e(an)h(appropriate)e(v)-5 -b(alue)24 b(initially)-8 b(.)241 3779 y FD(Example:)241 -3929 y FQ(Supp)s(ose)24 b(w)m(e)j(w)m(an)m(t)g(to)g(add)e(up)g(a)i -(series)e(of)h(terms,)i(generated)f(one)f(b)m(y)g(one,)i(un)m(til)c(w)m -(e)241 4028 y(reac)m(h)j(a)h(term)f(whic)m(h)e(is)h(less)g(than)h -(1/1000)j(in)25 b(v)-5 b(alue.)39 b(F)-8 b(or)28 b(our)e(simple)f -(example,)j(let)241 4128 y(us)33 b(supp)s(ose)f(the)i(\014rst)f(term)g -(equals)g(1)h(and)f(eac)m(h)i(term)f(is)e(obtained)h(from)g(the)h(one) -241 4228 y(b)s(efore)c(b)m(y)i(taking)f(one)g(third)e(of)j(it)e(and)h -(adding)e(one)j(third)d(its)i(square.)42 b(W)-8 b(e)33 -b(w)m(ould)241 4327 y(write:)589 4533 y FH(ex:=0;)42 -b(term:=1;)589 4633 y(while)g(num\(term)e(-)j(1/1000\))e(>=)i(0)87 -b(do)938 4732 y(<>;)589 4832 y(ex;)p eop -%%Page: 70 70 -70 69 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(70)1643 b FM(CHAPTER)29 b(5.)72 b(ST)-8 b(A)g(TEMENTS)664 -555 y FQ(As)32 b(long)e(as)i FJ(TERM)e FQ(is)h(greater)h(than)f(or)h -(equal)f(to)h(\()p FJ(>=)p FQ(\))f(1/1000)j(it)d(will)e(b)s(e)h(added)h -(to)664 668 y FJ(EX)26 b FQ(and)f(the)i(next)f FJ(TERM)f -FQ(calculated.)39 b(As)26 b(so)s(on)g(as)h FJ(TERM)d -FQ(b)s(ecomes)j(less)e(than)h(1/1000)664 781 y(the)31 -b FJ(WHILE)e FQ(test)i(fails)e(and)h(the)g FJ(TERM)f -FQ(will)f(not)j(b)s(e)e(added.)664 918 y @beginspecial -@setspecial @endspecial 199 x FE(5.6)136 b(REPEA)-11 -b(T)44 b(.)23 b(.)g(.)f(UNTIL)664 1357 y FJ(REPEAT)46 -b(...UNTIL)28 b FQ(is)i(v)m(ery)h(similar)c(in)i(purp)s(ose)g(to)i -FJ(WHILE)46 b(...DO)p FQ(.)30 b(Its)g(syn)m(tax)h(is:)1013 -1563 y FH(REPEAT)41 b()e(UNTIL)j()664 -1782 y FQ(\(P)-8 b(ASCAL)31 b(users)f(note:)42 b(Only)29 -b(a)j(single)d(statemen)m(t)k({)e(usually)e(a)i(group)f(statemen)m(t) -664 1895 y({)h(is)e(allo)m(w)m(ed)i(b)s(et)m(w)m(een)g(the)f -FJ(REPEAT)f FQ(and)h(the)g FJ(UNTIL.\))664 2057 y FQ(There)g(are)h(t)m -(w)m(o)h(essen)m(tial)e(di\013erences:)664 2145 y @beginspecial -@setspecial @endspecial 775 2295 a(1.)46 b(The)23 b(test)g(is)f(p)s -(erformed)f FD(after)33 b FQ(the)23 b(con)m(trolled)f(statemen)m(t)i -(\(or)f(group)f(of)h(state-)891 2408 y(men)m(ts\))33 -b(is)e(executed,)i(so)g(the)f(con)m(trolled)f(statemen)m(t)j(is)d(alw)m -(a)m(ys)h(executed)h(at)891 2521 y(least)e(once.)664 -2558 y @beginspecial @setspecial @endspecial 775 2708 -a(2.)46 b(The)35 b(test)h(is)d(a)j(test)f(for)g(when)f(to)h(stop)g -(rather)g(than)g(when)f(to)h(con)m(tin)m(ue,)i(so)891 -2821 y(its)30 b(\\p)s(olarit)m(y")g(is)g(the)g(opp)s(osite)g(of)g(that) -h(in)e FJ(WHILE)47 b(...DO.)664 3045 y FQ(As)31 b(an)f(example,)g(w)m -(e)h(rewrite)f(the)g(example)g(from)g(the)h FJ(WHILE)46 -b(...DO)29 b FQ(section:)1013 3251 y FH(ex:=0;)41 b(term:=1;)1013 -3351 y(repeat)g(<>)1144 3451 y(until)e(num\(term)f(-)k(1/1000\))c(<)j(0;) -1013 3550 y(ex;)664 3769 y FQ(In)31 b(this)g(case,)i(the)f(answ)m(er)g -(will)d(b)s(e)i(the)h(same)g(as)g(b)s(efore,)g(b)s(ecause)g(in)e -(neither)h(case)664 3882 y(is)f(a)g(term)h(added)e(to)j -FJ(EX)d FQ(whic)m(h)g(is)h(less)g(than)g(1/1000.)664 -4042 y @beginspecial @setspecial @endspecial 177 x FE(5.7)136 -b(Comp)t(ound)44 b(Statemen)l(ts)664 4471 y FQ(Often)g(the)g(desired)f -(pro)s(cess)g(can)i(b)s(est)e(\(or)i(only\))e(b)s(e)h(describ)s(ed)e -(as)i(a)g(series)g(of)664 4584 y(steps)f(to)g(b)s(e)f(carried)f(out)i -(one)g(after)g(the)g(other.)77 b(In)42 b(man)m(y)h(cases,)j(this)c(can) -h(b)s(e)664 4697 y(ac)m(hiev)m(ed)33 b(b)m(y)e(use)g(of)h(the)g(group)f -(statemen)m(t.)46 b(Ho)m(w)m(ev)m(er,)34 b(eac)m(h)f(step)f(often)g -(pro)m(vides)664 4810 y(some)i(in)m(termediate)f(result,)g(un)m(til)f -(at)i(the)g(end)e(w)m(e)i(ha)m(v)m(e)h(the)f(\014nal)e(result)g(w)m(an) -m(ted.)664 4923 y(Alternativ)m(ely)-8 b(,)33 b(iterations)f(on)g(the)g -(steps)g(are)h(needed)f(that)g(are)h(not)f(p)s(ossible)e(with)p -eop -%%Page: 71 71 -71 70 bop 241 299 a @beginspecial @setspecial @endspecial -FM(5.7.)72 b(COMPOUND)30 b(ST)-8 b(A)g(TEMENTS)1471 b -FQ(71)241 555 y(constructs)41 b(suc)m(h)h(as)f FJ(WHILE)f -FQ(or)i FJ(REPEAT)e FQ(statemen)m(ts.)76 b(In)40 b(suc)m(h)h(cases)i -(the)f(steps)241 668 y(of)31 b(the)h(pro)s(cess)e(m)m(ust)h(b)s(e)g -(enclosed)g(b)s(et)m(w)m(een)h(the)f(w)m(ords)g FJ(BEGIN)f -FQ(and)g FJ(END)h FQ(forming)241 781 y(what)25 b(is)e(tec)m(hnically)i -(called)f(a)h FD(blo)-5 b(ck)35 b FQ(or)25 b FD(c)-5 -b(omp)g(ound)37 b FQ(statemen)m(t.)j(Suc)m(h)25 b(a)g(comp)s(ound)241 -894 y(statemen)m(t)41 b(can)e(in)f(fact)i(b)s(e)f(used)f(wherev)m(er)h -(a)h(group)f(statemen)m(t)i(app)s(ears.)66 b(The)241 -1007 y(con)m(v)m(erse)38 b(is)f(not)g(true:)54 b FJ(BEGIN)46 -b(...END)36 b FQ(can)h(b)s(e)g(used)f(in)g(w)m(a)m(ys)i(that)f -FL(<<)g FQ(.)15 b(.)h(.)f FL(>>)241 1120 y FQ(cannot.)241 -1269 y(If)31 b(in)m(termediate)g(results)f(m)m(ust)h(b)s(e)f(formed,)i -(lo)s(cal)e(v)-5 b(ariables)30 b(m)m(ust)h(b)s(e)g(pro)m(vided)f(in)241 -1369 y(whic)m(h)j(to)h(store)h(them.)52 b FD(L)-5 b(o)g(c)g(al)45 -b FQ(means)34 b(that)h(their)e(v)-5 b(alues)33 b(are)h(deleted)g(as)g -(so)s(on)g(as)241 1468 y(the)f(blo)s(c)m(k's)f(op)s(erations)h(are)g -(complete,)h(and)f(there)g(is)f(no)g(con\015ict)h(with)f(v)-5 -b(ariables)241 1568 y(outside)32 b(the)h(blo)s(c)m(k)f(that)h(happ)s -(en)f(to)h(ha)m(v)m(e)h(the)f(same)g(name.)48 b(Lo)s(cal)33 -b(v)-5 b(ariables)31 b(are)241 1668 y(created)g(b)m(y)f(a)h -FJ(SCALAR)e FQ(declaration)h(immediately)f(after)h(the)h -FJ(BEGIN)p FQ(:)459 1874 y FH(scalar)41 b(a,b,c,z;)241 -2079 y FQ(If)33 b(more)h(con)m(v)m(enien)m(t,)i(sev)m(eral)e -FJ(SCALAR)e FQ(declarations)i(can)g(b)s(e)f(giv)m(en)h(one)g(after)g -(an-)241 2179 y(other:)459 2385 y FH(scalar)41 b(a,b,c;)459 -2485 y(scalar)g(z;)241 2704 y FQ(In)36 b(place)g(of)h -FJ(SCALAR)e FQ(one)i(can)g(also)g(use)f(the)h(declarations)f -FJ(INTEGER)f FQ(or)h FJ(REAL)p FQ(.)g(In)241 2817 y(the)j(presen)m(t)g -(v)m(ersion)g(of)g(REDUCE)g(v)-5 b(ariables)38 b(declared)g -FJ(INTEGER)g FQ(are)h(exp)s(ected)241 2930 y(to)34 b(ha)m(v)m(e)h(only) -e(in)m(teger)h(v)-5 b(alues,)34 b(and)f(are)i(initialized)30 -b(to)35 b(0.)51 b FJ(REAL)32 b FQ(v)-5 b(ariables)33 -b(on)g(the)241 3043 y(other)d(hand)g(are)g(curren)m(tly)g(treated)h(as) -g(algebraic)f(mo)s(de)g FJ(SCALAR)p FQ(s.)241 3205 y -FD(CA)n(UTION:)h FJ(INTEGER)p FQ(,)g FJ(REAL)h FQ(and)g -FJ(SCALAR)g FQ(declarations)g(can)i(only)e(b)s(e)g(giv)m(en)h(im-)241 -3318 y(mediately)39 b(after)h(a)g FJ(BEGIN)p FQ(.)e(An)i(error)f(will)e -(result)i(if)f(they)i(are)g(used)f(after)h(other)241 -3431 y(statemen)m(ts)e(in)e(a)h(blo)s(c)m(k)g(\(including)d -FJ(ARRAY)h FQ(and)i FJ(OPERATOR)d FQ(declarations,)39 -b(whic)m(h)241 3544 y(are)23 b(global)e(in)h(scop)s(e\),)i(or)f -(outside)f(the)g(top-most)i(blo)s(c)m(k)e(\(e.g.,)k(at)d(the)g(top)g -(lev)m(el\).)38 b(All)241 3657 y(v)-5 b(ariables)32 b(declared)h -FJ(SCALAR)f FQ(are)i(automatically)f(initialized)e(to)j(zero)g(in)f -(algebraic)241 3770 y(mo)s(de)d(\()p FJ(NIL)g FQ(in)f(sym)m(b)s(olic)f -(mo)s(de\).)241 3933 y(An)m(y)21 b(sym)m(b)s(ols)f(not)i(declared)f(as) -g(lo)s(cal)g(v)-5 b(ariables)20 b(in)g(a)i(blo)s(c)m(k)f(refer)g(to)h -(the)f(v)-5 b(ariables)20 b(of)241 4045 y(the)28 b(same)g(name)f(in)f -(the)i(curren)m(t)g(calling)e(en)m(vironmen)m(t.)39 b(In)27 -b(particular,)g(if)f(they)i(are)241 4158 y(not)21 b(so)g(declared)f(at) -h(a)g(higher)f(lev)m(el)g(\(e.g.,)25 b(in)19 b(a)i(surrounding)c(blo)s -(c)m(k)k(or)f(as)h(parameters)241 4271 y(in)29 b(a)i(calling)d(pro)s -(cedure\),)i(their)g(v)-5 b(alues)29 b(can)i(b)s(e)f(p)s(ermanen)m(tly) -f(c)m(hanged.)241 4434 y(F)-8 b(ollo)m(wing)29 b(the)h -FJ(SCALAR)e FQ(declaration\(s\),)i(if)e(an)m(y)-8 b(,)31 -b(write)e(the)h(statemen)m(ts)h(to)f(b)s(e)f(exe-)241 -4547 y(cuted,)j(one)g(after)g(the)g(other,)g(separated)g(b)m(y)f -(delimiters)f(\(e.g.,)j FJ(;)f FQ(or)g FJ($)p FQ(\))f(\(it)h(do)s -(esn't)241 4660 y(matter)f(whic)m(h\).)40 b(Ho)m(w)m(ev)m(er,)32 -b(from)e(a)h(st)m(ylistic)e(p)s(oin)m(t)h(of)g(view,)g -FJ(;)g FQ(is)g(preferred.)241 4823 y(The)d(last)g(statemen)m(t)i(in)d -(the)i(b)s(o)s(dy)-8 b(,)27 b(just)g(b)s(efore)g FJ(END)p -FQ(,)g(need)g(not)g(ha)m(v)m(e)i(a)f(terminator)241 4935 -y(\(since)33 b(the)i FJ(BEGIN)46 b(...END)32 b FQ(are)i(in)f(a)h(sense) -g(brac)m(k)m(ets)i(con\014ning)c(the)i(blo)s(c)m(k)g(state-)p -eop -%%Page: 72 72 -72 71 bop 664 299 a @beginspecial @setspecial @endspecial -FQ(72)1643 b FM(CHAPTER)29 b(5.)72 b(ST)-8 b(A)g(TEMENTS)664 -555 y FQ(men)m(ts\).)43 b(The)30 b(last)h(statemen)m(t)h(m)m(ust)f -(also)g(b)s(e)f(the)h(command)f FJ(RETURN)g FQ(follo)m(w)m(ed)g(b)m(y) -664 668 y(the)38 b(v)-5 b(ariable)37 b(or)h(expression)f(whose)h(v)-5 -b(alue)37 b(is)g(to)i(b)s(e)e(the)i(v)-5 b(alue)37 b(returned)g(b)m(y)h -(the)664 781 y(pro)s(cedure.)57 b(If)36 b(the)g FJ(RETURN)f -FQ(is)g(omitted)h(\(or)h(nothing)e(is)g(written)g(after)i(the)f(w)m -(ord)664 894 y FJ(RETURN)p FQ(\))e(the)i(pro)s(cedure)e(will)f(ha)m(v)m -(e)k(no)e(v)-5 b(alue)35 b(or)h(the)f(v)-5 b(alue)35 -b(zero,)j(dep)s(ending)33 b(on)664 1007 y(ho)m(w)d(it)f(is)g(used)g -(\(and)g FJ(NIL)g FQ(in)f(sym)m(b)s(olic)g(mo)s(de\).)41 -b(Remem)m(b)s(er)29 b(to)h(put)f(a)h(terminator)664 1120 -y(after)h(the)g FJ(END)p FQ(.)664 1282 y FD(Example:)664 -1432 y FQ(Giv)m(en)45 b(a)f(previously)f(assigned)g(in)m(teger)i(v)-5 -b(alue)44 b(for)g FJ(N)p FQ(,)h(the)g(follo)m(wing)e(blo)s(c)m(k)h -(will)664 1532 y(compute)31 b(the)f(Legendre)h(p)s(olynomial)d(of)i -(degree)h FJ(N)f FQ(in)f(the)i(v)-5 b(ariable)29 b FJ(X)p -FQ(:)1013 1737 y FH(begin)41 b(scalar)g(seed,deriv,top,fa)o(ct;)1144 -1837 y(seed:=1/\(y^2)d(-)43 b(2*x*y)f(+1\)^\(1/2\);)1144 -1937 y(deriv:=df\(seed,)o(y,n)o(\);)1144 2036 y(top:=sub\(y=0,de)o(riv) -o(\);)1144 2136 y(fact:=for)d(i:=1:n)j(product)e(i;)1144 -2236 y(return)h(top/fact)1013 2335 y(end;)664 2474 y -@beginspecial @setspecial @endspecial 154 x FR(5.7.1)113 -b(Comp)s(ound)38 b(Statemen)m(ts)f(with)f(GO)h(TO)664 -2850 y FQ(It)30 b(is)e(p)s(ossible)f(to)j(ha)m(v)m(e)h(more)f -(complicated)f(structures)f(inside)g(the)h FJ(BEGIN)47 -b(...END)664 2963 y FQ(brac)m(k)m(ets)34 b(than)e(indicated)f(in)f(the) -j(previous)e(example.)46 b(That)32 b(the)g(individual)c(lines)664 -3076 y(of)41 b(the)h(program)e(need)h(not)g(b)s(e)g(assignmen)m(t)f -(statemen)m(ts,)46 b(but)40 b(could)g(b)s(e)h(almost)664 -3189 y(an)m(y)30 b(other)g(kind)e(of)i(statemen)m(t)i(or)d(command,)h -(needs)f(no)h(explanation.)40 b(F)-8 b(or)30 b(exam-)664 -3302 y(ple,)h(conditional)e(statemen)m(ts,)k(and)e FJ(WHILE)e -FQ(and)i FJ(REPEAT)60 b FQ(constructions,)31 b(ha)m(v)m(e)h(an)664 -3414 y(ob)m(vious)e(role)g(in)f(de\014ning)f(more)j(in)m(tricate)f(blo) -s(c)m(ks.)664 3577 y(If)35 b(these)h(structured)e(constructs)h(don't)g -(su\016ce,)i(it)d(is)h(p)s(ossible)d(to)k(use)f(lab)s(els)f(and)664 -3690 y FJ(GO)40 b(TO)p FQ(s)g(within)e(a)j(comp)s(ound)e(statemen)m(t,) -45 b(and)40 b(also)h(to)g(use)f FJ(RETURN)80 b FQ(in)39 -b(places)664 3803 y(within)31 b(the)j(blo)s(c)m(k)f(other)h(than)f -(just)g(b)s(efore)g(the)h FJ(END)p FQ(.)f(The)g(follo)m(wing)f -(subsections)664 3916 y(discuss)38 b(these)h(matters)h(in)e(detail.)67 -b(F)-8 b(or)40 b(man)m(y)g(readers)f(the)g(follo)m(wing)f(example,)664 -4029 y(presen)m(ting)29 b(one)h(p)s(ossible)c(de\014nition)i(of)h(a)h -(pro)s(cess)f(to)h(calculate)g(the)f(factorial)h(of)f -FJ(N)664 4142 y FQ(for)h(preassigned)f FJ(N)h FQ(will)e(su\016ce:)664 -4291 y FD(Example:)1013 4497 y FH(begin)41 b(scalar)g(m;)1187 -4597 y(m:=1;)1056 4696 y(l:)i(if)g(n=0)f(then)g(return)f(m;)1187 -4796 y(m:=m*n;)1187 4896 y(n:=n-1;)p eop -%%Page: 73 73 -73 72 bop 241 299 a @beginspecial @setspecial @endspecial -FM(5.7.)72 b(COMPOUND)30 b(ST)-8 b(A)g(TEMENTS)1471 b -FQ(73)764 555 y FH(go)43 b(to)f(l)589 655 y(end;)241 -794 y @beginspecial @setspecial @endspecial 154 x FR(5.7.2)112 -b(Lab)s(els)38 b(and)h(GO)e(TO)h(Statemen)m(ts)241 1170 -y FQ(Within)c(a)j FJ(BEGIN)46 b(...END)34 b FQ(comp)s(ound)h(statemen)m -(t)j(it)e(is)f(p)s(ossible)f(to)i(lab)s(el)f(state-)241 -1282 y(men)m(ts,)e(and)e(transfer)g(to)i(them)f(out)g(of)g(sequence)g -(using)f FJ(GO)g(TO)g FQ(statemen)m(ts.)47 b(Only)241 -1395 y(statemen)m(ts)28 b(on)f(the)h(top)f(lev)m(el)f(inside)f(comp)s -(ound)h(statemen)m(ts)i(can)g(b)s(e)e(lab)s(eled,)g(not)241 -1508 y(ones)k(inside)e(subsidiary)f(constructions)i(lik)m(e)h -FL(<<)f FQ(.)16 b(.)f(.)h FL(>>)p FQ(,)30 b FJ(IF)f FQ(.)15 -b(.)h(.)f FJ(THEN)29 b FQ(.)16 b(.)f(.)h(,)30 b FJ(WHILE)241 -1621 y FQ(.)15 b(.)h(.)f FJ(DO)30 b FQ(.)15 b(.)h(.)f(,)31 -b(etc.)241 1771 y(Lab)s(els)e(and)h FJ(GO)47 b(TO)30 -b FQ(statemen)m(ts)i(ha)m(v)m(e)f(the)g(syn)m(tax:)589 -1976 y FH()c(::=)j(GO)h(TO)g(>; 46 -max(-5,-10,-a); -5 - -\endsection -\item[MCD] -MCD (pages 123, 125, 126) - -When MCD is on, sums and differences of rational expressions are put -on a common denominator. Default is ON. - -Examples: 5*A + B*X + B -a/(x+1) + b/5; --------------- - 5*(X + 1) -off mcd; - -1 -a/(x+1) + b/5; (X + 1) *A + 1/5*B - -1/6 + 1/7; 13/42 - -Even with MCD off, rational expressions involving only numbers are -still put over a common denominator. - -Turning MCD off is useful when explicit negative powers are needed, or -if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when MCD is -off are no longer in canonical form, and expressions equivalent to -zero may not simplify to 0. Some operations, such as factoring cannot -be done while MCD is off. This option should therefore be used with -some caution. Turning MCD off is most valuable in intermediate parts -of a complicated calculation, and should be turned back on for the -last stage. - -\endsection -\xitem[MEIJERG] -Meijer's G function (page 187) - -The MEIJERG operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or -special functions or (generalised) HYPERGEOMETRIC functions. - -The MEIJERG operator is included in the package specfn2. - -MEIJERG(list of parameters,list of parameters,argument) -The first element of the lists has to be the list containing the -first group (mostly called "m" and "n") of parameters. This passes -the four parameters of a Meijer's G function implicitly via the -length of the lists. - -Examples: -load specfn2; -MeijerG({{},1},{{0}},x); & heaviside(-x+1) -MeijerG({{}},{{1+1/4},1-1/4},(x^2)/4) * sqrt pi; - & \rfrac{sqrt(2)*sin(x)*x^2}{4*sqrt(x)} - -Many well-known functions can be written as G functions, -e.g. exponentials, logarithms, trigonometric functions, Bessel functions -and hypergeometric functions. -The formulae can be found e.g. in -A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: -Integrals and Series, Volume 3: More special functions, -Gordon and Breach Science Publishers (1990). - -\endsection -\xitem[METRIC command] -METRIC command (page 271) - -\endsection -\xitem[metric structure] -metric structure (page 262) - -\endsection -\item[MIN] -MIN (page 73) - -The operator MIN is an n-ary prefix operator, which returns the -smallest value in its arguments. - - MIN(expression{,expression}) - -expression must evaluate to a number. MIN of an empty list -returns 0. - -Examples: -min(-3,0,17,2); -3 -<>; 16 -min(5,10,a); 5 - -\endsection -\xitem[Minimum] -Minimum (page 182) - -\endsection -\item[MKID] -MKID (page 83) - -The MKID command constructs an identifier, given a stem and an identifier -or an integer. - - MKID(stem,leaf) - -stem can be any valid REDUCE identifier that does not include escaped -special characters. leaf may be an integer, including one given by a -local variable in a FOR loop, or any other legal group of characters. - -Examples: -mkid(x,3); X3 -factorize(x^15 - 1); {X - 1, - - 2 - X + X + 1, - - 4 3 2 - X + X + X + X + 1, - - 8 7 5 4 3 - X - X + X - X + X - X + 1} - -for i := 1:length ws do write set(mkid(f,i),part(ws,i)); - X - 1 - - 2 - X + X + 1 - - 4 3 2 - X + X + X + X + 1 - - 8 7 5 4 3 - X - X + X - X + X - X + 1 - -You can use MKID to construct identifiers from inside procedures. This -allows you to handle an unknown number of factors, or deal with variable -amounts of data. It is particularly helpful to attach identifiers to the -answers returned by FACTORIZE and SOLVE. - -\endsection -\item[MKPOLY] -MKPOLY (page 370) - -Given a roots list as returned by ROOTS, the operator MKPOLY -constructs a polynomial which has these numbers as roots. - - MKPOLY rl - -where rl is a LIST with equations, which all have the same KERNEL on -their left-hand sides and numbers as right-hand sides. - -Examples: - 4 3 2 - mkpoly{x=1,x=-2,x=i,x=-i}; X + X - X + X - 2 - - -Note that this polynomial is unique only up to a numeric factor. - -\endsection -\xitem[MM] -MM (page 379) - -\endsection -\xitem[Mode] -Mode (page 68) - -\endsection -\xitem[Mode communication] -Mode communication (page 197) - -\endsection -\item[MODULAR] -MODULAR (page 134) - -When MODULAR is on, polynomial coefficients are reduced by the -modulus set by SETMOD. If no modulus has been set, MODULAR -has no effect. - -Examples: -setmod 2; 1 -on modular; - 2 2 -(x+y)**2; X + Y - 2 -145*x**2 + 20*x**3 + 17 + 15*x*y; X + X*Y + 1 - -Modular operations are only conducted on the coefficients, not the -exponents. The modulus is not restricted to being prime. When the -modulus is prime, division by a number not relatively prime to the -modulus results in a Zero divisor error message. When the modulus is -a composite number, division by a power of the modulus results in an -error message, but division by an integer which is a factor of the -modulus does not. The representation of modular number can be -influenced by BALANCED_MOD. - -\endsection -\xitem[Modular coefficient] -Modular coefficient (page 134) - -\endsection -\item[MSG] -MSG (page 218) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\item[MSHELL] -MSHELL (page 210) - -The MSHELL command puts particles on the mass shell in high-energy -physics calculations. - MSHELL vector-var{,vector-var} - -vector-var must have had a mass attached to it by a MASS -declaration. - -Examples: -vector v1,v2; -mass v1=m,v2=q; -mshell v1; - 2 -v1.v1; M -v2.v2; V2.V2 -mshell v2; - 2 2 -v1.v1*v2.v2; M *Q - -Even though a mass is attached to a vector variable representing a -particle, the replacement does not take place until the MSHELL -declaration is given for that vector variable. - -\endsection -\xitem[Multiple assignment statement] -Multiple assignment statement (page 54) - -\endsection -\item[MULTIPLICITIES] -MULTIPLICITIES (page 86) - -When MSG is off, the printing of warning messages is suppressed. Error -messages are still printed. - -Warning messages include those about redimensioning an ARRAY or declaring -an OPERATOR where one is expected. - -\endsection -\xitem[MULTIROOT] -MULTIROOT (page 373) - -\endsection -\item[NAT] -NAT (page 111, 259) - -When NAT is on, output is printed to the screen in natural form, with -raised exponents. NAT should be turned off when outputting expressions -to a file for future input. Default is ON. - -Examples: 3 2 2 3 -(x + y)**3; X + 3*X *Y + 3*X*Y + Y -off nat; -(x + y)**3; X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ -on fort; -(x + y)**3; ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3 - -With NAT off, a dollar sign is printed at the end of each expression. -An output file written with NAT off is ready to be read into REDUCE -using the command IN. - -\endsection -\item[NEARESTROOT] -NEARESTROOT (pages 370, 372) - -The operator NEARESTROOT finds one root of a polynomial with an -iteration using a given starting point. - - NEARESTROOT(p,pt) - -where p is a univariate polynomial and pt is a number. - -Example: - - nearestroot(x^2+2,2); {X=1.41421*I} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[NEARESTROOTS] -NEARESTROOTS (page 370) - -\endsection -\xitem[NEGATIVE] -NEGATIVE (page 368) - -\endsection -\item[NERO] -NERO (page 108) - -When NERO is on, zero assignments (such as matrix elements) are not -printed. - -Examples: -matrix a; -a := mat((1,0),(0,1)); A(1,1) := 1 - A(1,2) := 0 - A(2,1) := 0 - A(2,2) := 1 -on nero; -a; MAT(1,1) := 1 - MAT(2,2) := 1 -a(1,2); {nothing is printed.} -b := 0; {nothing is printed.} -off nero; -b := 0; B := 0 - -NERO is often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. - -\endsection -\xitem[Newton's method] -Newton's method (page 182) - -\endsection -\item[NEXTPRIME] -NEXTPRIME (page 74) - - NEXTPRIME(expression) - -If the argument of NEXTPRIME is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. - -Examples: -nextprime 5001; 5003 -nextprime(10^30); 1000000000000000000000000000057 -nextprime a; ***** A invalid as integer - -\endsection -\xitem[NN] -NN (page 379) - -\endsection -\item[NOARG] -NOARG - -When DFPRINT is on, expressions in the differentiation operator -DF are printed in a more ``natural'' notation, with the -differentiation variables appearing as subscripts. When NOARG -is on (the default), the arguments of the differentiated operator are also -suppressed. - -Examples: -operator f; -df(f x,x); DF(F(X),X); -on dfprint; -ws; F - X -df(f(x,y),x,y); F - X,Y -off noarg; -ws; F(X) - X - -\endsection -\item[NODEPEND] -NODEPEND (page 95) - -The NODEPEND declaration removes the dependency declared with DEPEND. - - NODEPEND dep-kernel{,kernel} - -dep-kernel -must be a kernel that has had a dependency declared upon -the one or more other kernels that are its other arguments. - -Examples: -depend y,x,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) -nodepend y,z; -df(sin y,x); COS(Y)*DF(Y,X) -df(sin y,x,z); 0 - -A warning message is printed if the dependency had not been declared by -DEPEND. - -\endsection -\xitem[NOETHER function] -NOETHER function (pages 258, 271) - -\endsection -\xitem[Non-commuting operator] -Non-commuting operator (page 92) - -\endsection -\item[NOLNR] -NOLNR - -When NOLNR is on, the linear properties of the integration operator -INT are suppressed if the integral cannot be found in closed terms. - - -REDUCE uses the linear properties of integration to attempt to break down -an integral into manageable pieces. If an integral cannot be found in -closed terms, these pieces are returned. When the NOLNR switch is off, -as many of the pieces as possible are integrated. When it is on, if any piece -fails, the rest of them remain unevaluated. - -\endsection -\item[NONCOM] -NONCOM (page 92) - -NONCOM declares that already-declared operators are noncommutative -under multiplication. - - NONCOM operator{,operator} - -operator must have been declared an OPERATOR, or a warning message is -given. - -Examples: -operator f,h; -noncom f; -f(a)*f(b) - f(b)*f(a); F(A)*F(B) - F(B)*F(A) -h(a)*h(b) - h(b)*h(a); 0 -operator comm; -for all x,y such that x neq y and ordp(x,y) - let f(x)*f(y) = f(y)*f(x) + comm(x,y); -f(1)*f(2); F(1)*F(2) -f(2)*f(1); COMM(2,1) + F(1)*F(2) - -The last example introduces the commutator of f(x) and f(y) for all x -and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or -it can remain an indeterminate operator. - -\endsection -\item[NONZERO] -NONZERO (page 90) - - NONZERO identifier{,identifier} - -If an operator F is declared ODD, then F(0) is replaced by zero unless -F is also declared non zero by the declaration NONZERO. - -Examples: - odd f; - f(0) 0 - nonzero f; - f(0) F(0) - -\endsection -\item[NOSPLIT] -NOSPLIT (page 103) - -Under normal circumstances, the printing routines try to break an expression -across lines at a natural point. This is a fairly expensive process. If -you are not overly concerned about where the end-of-line breaks come, you -can speed up the printing of expressions by turning off the switch -NOSPLIT. This switch is normally on. - -\endsection -\item[NOSPUR] -NOSPUR (page 210) - -The NOSPUR declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. - NOSPUR line-id{,line-id} - - -line-id is a scalar identifier that will be used as a line identifier. - -Examples: -vector a1,b1,c1; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*B1.C1 -nospur line2; -g(line1,a1,b1)*g(line2,b1,c1); A1.B1*G(LINE2,B1,C1) - -Nospur declarations can be removed by making the declaration SPUR. - -\endsection -\xitem[NOSUM command] -NOSUM command (pages 262, 271) - -\endsection -\xitem[NOSUM switch] -NOSUM switch (page 262) - -\endsection -\item[NOXPND @] -NOXPND @ (pages 254, 271) -NOXPND D (pages 253, 271) - -(Part of the EXCALC package) - -There are two forms of the NOXPND command, which controls the use of -the product rule for the d operator and the expansion into partial -derivatives. The default for both these is OFF. - - noxpnd d; - noxpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also XPND -\endsection -\xitem[NS dummy variable] -NS dummy variable (page 260) - -\endsection -\item[NULLSPACE] -NULLSPACE (page 166) - -NULLSPACE(matrix_expression) - -nullspace calculates for its MATRIX argument, A, a list of linear -independent vectors (a basis) whose linear combinations satisfy the -equation A x = 0. The basis is provided in a form such that as many -upper components as possible are isolated. - -Examples: -nullspace mat((1,2,3,4),(5,6,7,8)); { - [ 1 ] - [ ] - [ 0 ] - [ ] - [ - 3] - [ ] - [ 2 ] - , - [ 0 ] - [ ] - [ 1 ] - [ ] - [ - 2] - [ ] - [ 1 ] - } - -Note that with B := NULLSPACE A, the expression LENGTH B is the -nullity of A, and that SECOND LENGTH A - LENGTH B calculates the rank -of A. The rank of a matrix expression can also be found more directly -by the RANK operator. - -In addition to the REDUCE matrix form, NULLSPACE accepts as input a -matrix given as a LIST of lists, that is interpreted as a row matrix. If -that form of input is chosen, the vectors in the result will be -represented by lists as well. This additional input syntax facilitates -the use of NULLSPACE in applications different from classical linear -algebra. - -\endsection -\item[NUM] -NUM (page 131) -The NUM operator returns the numerator of its argument. - - NUM(expression) or NUM simple_expression - -expression can be any valid REDUCE scalar expression. - -Examples: -num(100/6); 50 -num(a/5 + b/6); 6*A + 5*B -num(sin(x)); SIN(X) - -NUM returns the numerator of the expression after it has been simplified -by REDUCE. As seen in the examples, this includes putting sums of rational -expressions over a common denominator, and reducing common factors where -possible. If the expression is not a rational expression, it is returned -unchanged. - -\endsection -\item[NUMVAL] -NUMVAL - -With ROUNDED on, elementary functions with numerical arguments -will return a numerical answer where appropriate. If you wish to inhibit -this evaluation, NUMVAL should be turned off. It is normally on. - -Examples: - on rounded; - cos 3.4; - 0.966798192579 - off numval; - cos 3.4; COS(3.4) - -\endsection -\item[NUM_INT] -NUM_INT (page 182) - -For the numerical evaluation of univariate integrals over a finite -interval the following strategy is used: If INT finds a formal -antiderivative which is bounded in the integration interval, this is -evaluated and the end points and the difference is returned. -Otherwise a Chebyshev fit is computed, starting with order 20, -eventually up to order 80. If that is recognized as sufficiently -convergent it is used for computing the integral by directly -integrating the coefficient sequence. If none of these methods is -successful, an adaptive multilevel quadrature algorithm is used. - -For multivariate integrals only the adaptive quadrature is used. This -algorithm tolerates isolated singularities. The value ITERATIONS here -limits the number of local interval intersection levels. a is a -measure for the relative total discretization error (comparison of -order 1 and order 2 approximations). - -NUM_INT(exp,var=(l .. u) [,var=(l .. u),...] [,accuracy=a][,iterations=i]) - -where exp is the function to be integrated, var are the integration -variables, l are the lower bounds, u are the upper bounds. - -Result is the value of the integral. - -Example: - on rounded; - num_int(sin x,x=(0 .. pi)); 2.0 - -\endsection -\item[NUM_MIN] -NUM_MIN (page 182) - -The Fletcher Reeves version of the STEEPEST_DESCENT algorithms is used -to find the minimum of a function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be specified; if not, -random values are taken instead. The steepest descent algorithms in -general find only local minima. - -Syntax: - - NUM_MIN(exp, var[=val] [,var[=val] ... [,accuracy=a] [,iterations=i]) -NUM_MIN(exp, {var[=val] [,var[=val} ...] } [,accuracy=a] [,iterations=i]) - -where exp is a function expression, var are the variables in exp and -val are the (optional) start values. For a and i see NUMERIC_ACCURACY. - -NUM_MIN tries to find the next local minimum along the descending path -starting at the given point. The result is a LIST with the minimum -function value as first element followed by a list of equations, where -the variables are equated to the coordinates of the result point. - -Examples: - load numeric; - num_min(sin(x)+x/5, x); { - 0.0775892231689,{x=4.51200216375}} - num_min(sin(x)+x/5, x=0); { - 1.33416631212,{x= - 1.78326532423}} - -\endsection -\item[NUM_ODESOLVE] -NUM_ODESOLVE (page 182) - -The Runge-Kutta method of order 3 finds an approximate graph for the -solution of real ODE initial value problem. - -NUM_ODESOLVE(exp,depvar=start, indep=(from .. to) [,accuracy=a][,iterations=i]) -NUM_ODESOLVE({exp,exp,...},{depvar=start,depvar=start,...} indep=(from .. to) - [,accuracy=a][,iterations=i]) - -where depvar and start specify the dependent variable(s) and the -starting point value (vector), indep, from and to specify the -independent variable and the integration interval (starting point and -end point), exp are equations or expressions which contain the first -derivative of the independent variable with respect to the dependent -variable. - -The ODEs are converted to an explicit form, which then is used for a -Runge Kutta iteration over the given range. The number of steps is -controlled by the value of i (default: 20). If the steps are too -coarse to reach the desired accuracy in the neighborhood of the -starting point, the number is increased automatically. - -Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. - -Example: -num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5); - - {{0.0,1.0},{0.2,1.2214},{0.4,1.49181796},{0.6,1.8221064563}, - {0.8,2.2255208258},{1.0,2.7182511366}} - -If in exp the differential is not isolated on the left-hand side, -please ensure that the dependent variable is explicitly declared using -a DEPEND otherwise the formal derivative will be computed to zero by -REDUCE. - -The operator SOLVE is used to convert the form into an explicit -ODE. If that process fails or has no unique result, the evaluation is -stopped with an error message. - -\endsection -\item[NUM_SOLVE] -NUM_SOLVE (page 182) - -An adaptively damped Newton iteration is used to find an approximative -root of a function (function vector) or the solution of an EQUATION -(equation system). The expressions must have continuous derivatives -for all variables. A starting point for the iteration can be -given. If not given random values are taken instead. When the number -of forms is not equal to the number of variables, the Newton method -cannot be applied. Then the minimum of the sum of absolute squares is -located instead. - -With COMPLEX on, solutions with imaginary parts can be found, if -either the expression(s) or the starting point contain a nonzero -imaginary part. - - NUM_SOLVE(exp, var[=val][,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, var[=val],...,var[=val] [,accuracy=a][,iterations=i]) - NUM_SOLVE({exp,...,exp}, {var[=val],...,var[=val]} - [,accuracy=a][,iterations=i]) - -where exp are function expressions, - var are the variables, - val are optional start values. -For a and i see NUMERIC_ACCURACY. - -NUM_SOLVE tries to find a zero/solution of the expression(s). Result -is a list of equations, where the variables are equated to the -coordinates of the result point. - -The Jacobian matrix is stored as side effect the shared jacobian. - -Examples: -num_solve({sin x=cos y, x + y = 1},{x=1,y=2}); - {X= - 52.1216769476,Y=53.1216769476} - [COS(X) SIN(Y)] -jacobian; [ ] - [ 1 1 ] -\endsection -\xitem[Number] -Number (pages 34, 35) - -\endsection -\item[NUMBERP] -NUMBERP (page 46) -The NUMBERP operator returns TRUE if its argument is a number, -and NIL otherwise. - - NUMBERP(expression) or NUMBERP expression - -expression can be any REDUCE scalar expression. - -Examples: -cc := 15.3; CC := 15.3 -if numberp(cc) then write "number" else write "nonnumber"; number -if numberp(cb) then write "number" else write "nonnumber"; nonnumber - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[NUMERIC package] -NUMERIC package (page 337) - -The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use the ROUNDED -mode arithmetic of REDUCE, including the variable precision feature -which is exploited in some algorithms in an adaptive manner in order -to reach the desired accuracy. - -\endsection -\xitem[Numerical operator] -Numerical operator (page 71) - -\endsection -\xitem[Numerical precision] -Numerical precision (page 36) - -\endsection -\item[ODD] -ODD (page 90) - - ODD identifier{,identifier} - -This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner -are transformed if the first argument contains a minus sign. Any -other arguments are not affected. - -Examples: - odd f; - f(-a) -F(A) - f(-a,-b) -F(A,-B) - f(a,-b) F(A,-B) - -If say F is declared odd, then F(0) is replaced by zero unless F is -also declared non zero by the declaration NONZERO. - -\endsection -\xitem[ODEDEGREE] -ODEDEGREE (page 350) - -\endsection -\xitem[ODELINEARITY] -ODELINEARITY (page 350) - -\endsection -\xitem[ODEORDER] -ODEORDER (page 350) - -\endsection -\item[ODESOLVE] -ODESOLVE (pages 183, 349) - -Main Author: Malcolm A.H. MacCallum -Other contributors: Francis Wright, Alan Barnes - -Ordinary Differential Equations Solver. - -The ODESOLVE package is a solver for ordinary differential -equations. At the present time it has very limited capabilities. -It can handle only a single scalar equation presented as an -algebraic expression or equation, and it can solve only first- -order equations of simple types, linear equations with constant -coefficients and Euler equations. These solvable types are exactly -those for which Lie symmetry techniques give no useful information. - -For example, the evaluation of - depend(y,x); - odesolve(df(y,x)=x**2+e**x,y,x); -yields the result - X 3 - 3*E + 3*ARBCONST(1) + X - {Y=---------------------------} - 3 - -\endsection -\item[OFF] -OFF (pages 68, 69) - -The OFF command is used to turn switches off. - - OFF switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already off. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ON] -ON (pages 68, 69) - -The ON command is used to turn switches on. - - ON switch{,switch} - -switch can be any SWITCH name. There is no problem if the switch is -already on. If the switch name is mistyped, an error message is -given. - -\endsection -\item[ONE_OF] -ONE_OF (page 86) -The operator ONE_OF is used to represent an indefinite choice -of one element from a finite set of objects. - -Example: - x=one_of{1,2,5} - -This equation encodes that x can take one of the values 1,2 or 5 - -REDUCE generates a ONE_OF form in cases when an implicit ROOT_OF -expression could be converted to an explicit solution set. A ONE_OF -form can be converted to a SOLVE solution using EXPAND_CASES. See -ROOT_OF. - -\endsection -\item[OPERATOR] -OPERATOR (page 202) - -Use the OPERATOR declaration to declare your own operators. - - OPERATOR identifier{,identifier} - -identifier can be any valid REDUCE identifier, which is not the name -of a MATRIX, ARRAY, scalar variable or previously-defined operator. - -Examples: -operator dis,fac; -let dis(~x,~y) = sqrt(x^2 + y^2); -dis(1,2); SQRT(5) - 2 -dis(a,10); SQRT(A + 100) -on rounded; -dis(1.5,7.2); 7.35459040329 -let fac(~n) = - if n=0 then 1 - else if not(fixp n and n>0) - then rederr "choose non-negative integer" - else for i := 1:n product i; - -fac(5); 120 -fac(-2); ***** choose non-negative integer - -The first operator is the Euclidean distance metric, the distance of -point (x,y) from the origin. The second operator is the factorial. - -Operators can have various properties assigned to them; they can be -declared INFIX, LINEAR, SYMMETRIC, ANTISYMMETRIC, or NONCOMmutative. -The default operator is prefix, nonlinear, and commutative. -Precedence can also be assigned to operators using the declaration -PRECEDENCE. - -Functionality is assigned to an operator by a LET statement or a -FORALL...LET statement, (or possibly by a procedure with the name of -the operator). Be careful not to redefine a system operator by -accident. REDUCE permits you to redefine system operators, giving you -a warning message that the operator was already defined. This -flexibility allows you to add mathematical rules that do what you want -them to do, but can produce odd or erroneous behaviour if you are not -careful. - -You can declare operators from inside PROCEDUREs, as long as they are -not local variables. Operators defined inside procedures are global. -A formal parameter may be declared as an operator, and has the effect -of declaring the calling variable as the operator. - -\endsection -\xitem[Operator precedence] -Operator precedence (page 39, 41) - -\endsection -\item[ORDER] -ORDER (pages 101, 114) - -The ORDER declaration changes the order of precedence of kernels for -display purposes only. - - ORDER identifier{,identifier} - -kernel must be a valid KERNEL or OPERATOR name complete with argument. - -Examples: -x + y + z + cos(a); COS(A) + X + Y + Z -order z,y,x,cos(a); -x + y + z + cos(a); Z + Y + X + COS(A) - 2 2 -(x + y)**2; Y + 2*Y*X + X -order nil; - 2 2 -(z + cos(z))**2; COS(Z) + 2*COS(Z)*Z + Z - -ORDER affects the printing order of the identifiers only; internal -order is unchanged. Change internal order of evaluation with the -declaration KORDER. You can use ORDER to feature variables or -functions you are particularly interested in. - -Declarations made with ORDER are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, -specific kernels named in new declarations are removed from previous -ones and given the new priority. Return to the standard canonical -printing order with the statement ORDER NIL. - -The print order specified by ORDER commands is not in effect if the -switch PRI is off. - -\endsection -\xitem[ordering exterior form] -ordering - exterior form (page 268) - -\endsection -\xitem[ordinary differential equations] -ordinary differential equations (page 349) - -\endsection -\item[ORDP] -ORDP (pages 46, 92) - -The ORDP logical operator returns TRUE if its first argument is -ordered ahead of its second argument in canonical internal ordering, -or is identical to it. - - ORDP(expression1,expression2) - -expression1 and expression2 can be any valid REDUCE scalar expression. - -Examples: -if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no"; no -if ordp(101,100) then write "yes" else write "no"; yes -if ordp(x,x) then write "yes" else write "no"; yes - -Logical operators can only be used in conditional expressions, such as -IF...THEN...ELSE and WHILE...DO. - -\endsection -\item[ORTHOVEC] -ORTHOVEC (pages 184, 353) - -Author: James W. Eastwood - -A Package for the Manipulation of Scalars and Vectors. - -ORTHOVEC is a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars -and vectors. Operations include addition, subtraction, dot and -cross products, division, modulus, div, grad, curl, laplacian, -differentiation, integration, and Taylor expansion. - -\endsection -\item[OUT] -OUT (pages 153, 154) - -The OUT command directs output to the filename that is its argument, -until another OUT changes the output file, or SHUT closes it. - OUT filename or OUT "pathname " or OUT T - -filename must be in the current directory, or be a valid complete -file description for your system. If the file name is not -in the current directory, quote marks are needed around the file name. -If the file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. - - -To restore output to the terminal, type OUT T, or SHUT the -file. When you use OUT T, the file remains available, and if you -open it again (with another OUT), new material is appended rather -than overwriting. - -To write a file using OUT that can be input at a later time, the -switch NAT must be turned off, so that the standard linear form -is saved that can be read in by IN. If NAT is on, exponents -are printed on the line above the expression, which causes trouble -when REDUCE tries to read the file. - -There is a slight complication if you are using the OUT command from -inside a file to create another file. The ECHO switch is normally -off at the top-level and on while reading files (so you can see what is -being read in). If you create a file using OUT at the top-level, -the result lines are printed into the file as you want them. But if you -create such a file from inside a file, the ECHO switch is on, and -every line is echoed, first as you typed it, then as REDUCE parsed it, and -then once more for the file. Therefore, when you create a file from -a file, you need to turn ECHO off explicitly before the OUT -command, and turn it back on when you SHUT the created file, so your -executing file echoes as it should. This behaviour also means that as you -watch the file execute, you cannot see the lines that are being put into -the OUT file. As soon as you turn ECHO on, you can see -output again. - -\endsection -\item[OUTPUT] -OUTPUT (page 100) - -When OUTPUT is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default is -ON. - - -Turn output OFF if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large expressions -for display. Results are still available with WS, or in their -assigned variables. - -\endsection -\xitem[Output] -Output (pages 105, 110) - -\endsection -\xitem[Output declaration] -Output declaration (pages 100, 101) - -\endsection -\item[OVERVIEW] -OVERVIEW - -When OVERVIEW is on, the amount of detail reported by the factoriser -switches TRFAC and TRALLFAC is reduced. - - -\endsection -\item[PART] -PART (pages 49, 113, 116) -The operator PART permits the extraction of various parts or -operators of expressions and LISTS. - - PART(expression,integer{,integer}) - -expression can be any valid REDUCE expression or a list, integer may -be an expression that evaluates to a positive or negative integer or -0. A positive integer n picks up the nth term, counting from the -first term toward the end. A negative integer n picks up the nth -term, counting from the back toward the front. The integer 0 picks up -the operator (which is LIST when the expression is a list). - -Examples: - 2 3 -part((x + y)**5,4); 10*X *Y - - 2 -part((x + y)**5,4,2); X - -part((x + y)**5,4,2,1); X -part((x + y)**5,0); PLUS - 4 -part((x + y)**5,-5); 5*x *y - - 5 4 3 2 4 5 -part((x + y)**5,4) := sin(x); x + 5*x *y + 10*x *y + sin(x) + 5*x*y + y - -alist := {x,y,{aa,bb,cc},x**2*sqrt(y)}; - ALIST := {X, - Y, - {AA,BB,CC}, - 2 - SQRT(Y)*X } -part(alist,3,2); BB -part(alist,4,0); TIMES - -Additional integer arguments after the first one examine the terms -recursively, as shown above. In the third line, the fourth term is -picked from the original polynomial, 10x^2y^3, then the second term -from that, x^2, and finally the first component, x. If an integer's -absolute value is too large for the appropriate expression, a message -is given. - -PART works on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind -the current switch settings. It is important to realise that the -switch settings change the operation of PART. PRI must be on when -PART is used. - -When PART is used on a polynomial expression that has minus signs, the -+ is always returned as the top-level operator. The minus is found as -a unary operator attached to the negative term. - -PART can also be used to change the relevant part of the expression or -list as shown in the sixth example line. The PART operator returns the -changed expression, though original expression is not changed. You can -also use PART to change the operator. - -\endsection -\xitem[partial differentiation] -partial differentiation (page 251) - -\endsection -\item[PAUSE] -PAUSE (page 160)) -The PAUSE command, given in an interactive file, stops operation and -asks if you want to continue or not. - -Examples: -An interactive file is running, and at some point you see the -question - Cont? (Y or N) -If you type y {Return} -the file continues to run until the next pause or the end. -If you type n {Return} - -you will get a numbered REDUCE prompt, and be allowed to enter and -execute any REDUCE statements. If you later wish to continue with the -file, type - cont; -and the file resumes. - -To use PAUSE in your own interactive files, type - -PAUSE; - -in the file wherever you want it. - -PAUSE does not allow you to continue without typing either Y or N. -Its use is to slow down scrolling of interactive files, or to let you -change parameters or switch settings for the calculations. - -If you have stopped an interactive file at a PAUSE, and do not wish to -resume the file, type END;. This does not end the REDUCE session, but -stops input from the file. A second END; ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an -END; brings you back to the top level, not the file directly above. - -A PAUSE typed from the terminal has no effect. - -\endsection -\xitem[PCLASS] -PCLASS (pages 379, 380, 383) - -\endsection -\xitem[Percent sign] -Percent sign (page 38) - -\endsection -\item[PERIOD] -PERIOD (page 111) - -When PERIOD is on, periods are added after integers in -Fortran-compatible output (when FORT is on). There is no effect -when FORT is off. Default is ON. - -\endsection -\item[PF] -PF (page 83) - - PF(expression,variable) - -PF transforms expression into a LIST of partial fractions with respect -to the main variable, variable. PF does a complete partial fraction -decomposition, and as the algorithms used are fairly unsophisticated -(factorisation and the extended Euclidean algorithm), the code may be -unacceptably slow in complicated cases. - -Examples: - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,--------------} - x + 2 x + 1 2 - x + 2*x + 1 -off exp; -pf(2/((x+1)^2*(x+2)),x); - 2 - 2 2 -pf(2/((x+1)^2*(x+2)),x); {-------,-------,----------} - x + 2 x + 1 2 - (x + 1) - - 2 -for each j in ws sum j; ------------------ - 2 - (x + 2)*(x + 1) - -If you want the denominators in factored form, turn EXP off, as shown -in the second example above. As shown in the final example, the FOR -EACH construct can be used to recombine the terms. Alternatively, one -can use the operations on lists to extract any desired term. - -\endsection -\xitem[PFORM command] -PFORM command (page 271) - -\endsection -\xitem[PFORM statement] -PFORM statement (page 249) - -\endsection -\item[PI] -PI (page 37) - -The identifier PI is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. - - -PI may be used as a looping variable in a FOR statement, -or as a local variable in a PROCEDURE. Its value in such cases will be -taken from the local environment. - -\endsection -\xitem[PLOT] -PLOT (page 181) - -\endsection -\item[POCHHAMMER] -POCHHAMMER (pages 185, 394) - -The POCHHAMMER operator implements the Pochhammer notation -(shifted factorial). - - POCHHAMMER(expression,expression) - -Examples: -load_package specfn; (SPECFN) -pochhammer(17,4); 116280 - - FACTORIAL(2*Z) -pochhammer(1/2,z); ------------------- - 2*Z - 2 *FACTORIAL(Z) - -A number of complex rules for POCHHAMMER are inactive, because they -cause a huge system load in algebraic mode. If one wants to use more -rules for the simplification of Pochhammer's notation, one can do: - let special!*pochhammer!*rules; - -\endsection -\item[POLYGAMMA] -POLYGAMMA (pages 185, 395) - -The POLYGAMMA operator returns the Polygamma function. - - Polygamma(n,x) := df(Psi(z),z,n); - - POLYGAMMA(integer,expression) - -Examples: - load_package specfn; (SPECFN) - PI - 6 - Polygamma(1,2); --------- - 6 - on rounded; - Polygamma(1,2.35); 0.52849689109 - -The POLYGAMMA function is used for simplification of the ZETA function -for some arguments. - -\endsection -\xitem[Polynomial] -Polynomial (page 119) - -\endsection -\xitem[Polynomial equations] -Polynomial equations (page 181) - -\endsection -\xitem[POSITIVE] -POSITIVE (page 368) - -\endsection -\xitem[power series] -power series (page 413) - -\endsection -\xitem[power series arithmetic] -power series - arithmetic (page 422) - composition (page 420) - differentiation (page 422) - of integral (page 415) - of user defined function (page 415) - -\endsection -\item[PRECEDENCE] -PRECEDENCE (page 94) - -The PRECEDENCE declaration attaches a precedence to an infix operator. - - PRECEDENCE operator, known_operator - -operator should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. -known_operator must be a system infix operator or have had its -precedence already declared. - -Examples: -operator f,h; -precedence f,+; -precedence h,*; -a + f(1,2)*c; (1 F 2)*C + A -a + h(1,2)*c; 1 H 2*C + A -a*1 f 2*c; A F 2*C -a*1 h 2*c; 1 H 2*A*C - -The operator whose precedence is being declared is inserted into the -infix operator precedence list at the next higher place than -known-operator. - -Attaching a precedence to an operator has the side effect of declaring -the operator to be infix. If the identifier argument for PRECEDENCE -has not been declared to be an operator, an attempt to use it causes -an error message. After declaring it to be an operator, it becomes an -infix operator with the precedence previously given. Infix operators -may be used in prefix form; if they are used in infix form, a space -must be left on each side of the operator to avoid ambiguity. -Declared infix operators are always binary. - -To see the infix operator precedence list, enter symbolic mode and -type PRECLIS!*;. The lowest precedence operator is listed first. - -All prefix operators have precedence higher than infix operators. - -\endsection -\item[PRECISE] -PRECISE (page 78) - -When the PRECISE switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. - -Examples: -sqrt(x**2); X -(x**2)**(1/4); SQRT(X) -on precise; -sqrt(x**2); ABS(X) -(x**2)**(1/4); SQRT(ABS(X)) - -In many types of mathematical work, simplification of powers and surds -can proceed by the fastest means of simplifying the exponents -arithmetically. When it is important to you that the positive root be -returned, turn PRECISE on. One situation where this is important is -when graphing square-root expressions such as sqrt(x^2+y^2) to avoid a -spike caused by REDUCE simplifying sqrt(y^2) to y when x is zero. - -\endsection -\item[PRECISION] -PRECISION (pages 132, 374) - -The PRECISION declaration sets the number of decimal places used when -ROUNDED is on. Default is system dependent, and normally about 12. - - PRECISION(integer) or PRECISION integer - -integer must be a positive integer. When integer is 0, the current -precision is displayed, but not changed. There is no upper limit, but -precision of greater than several hundred causes unpleasantly slow -operation on numeric calculations. - -Examples: -on rounded; -7/9; 0.777777777778 -precision 20; 20 -7/9; 0.77777777777777777778 -sin(pi/4); 0.7071067811865475244 - -Trailing zeroes are dropped, so sometimes fewer than 20 decimal places -are printed as in the last example. Turn on the switch FULLPREC if -you want to print all significant digits. The ROUNDED mode carries -calculations to two more places than given by PRECISION, and rounds -off. - -\endsection -\item[PREDUCE] -PREDUCE (page 308) - - PREDUCE(p, {exp, ... }[,vars]) - -where p is an expression, and {exp, ... } is a list of expressions or -equations and vars is an optional list of variables (see IDEAL -parameters). - -PREDUCE computes the remainder of EXP modulo the given set of -polynomials resp. equations. This result is unique (canonical) only -if the given set is a GROEBNER basis under the current TERM order. - -see also: PREDUCET operator. - -\endsection -\item[PREDUCET] -PREDUCET (page 311) - - PREDUCE(p,{v=exp...}[,vars]) - -where p is an expression, v are kernels (simple or indexed variables), -EXP are polynomials and optional vars is a variable list (see IDEAL -parameters). - -PREDUCET computes the remainder of p modulo {exp,...} similar to -PREDUCE, but the result is an equation which expresses the remainder -as combination of the polynomials. - -Example: - - gb2 := {g1=2*x - y + 1,g2=9*y**2 - 2*y - 199}$ - preducet(q=x**2,gb2); - - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2 - - -\endsection -\xitem[Prefix] -Prefix (pages 71, 93, 95) - -\endsection -\xitem[Prefix operator] -Prefix operator (page 38, 39) - -\endsection -\item[PRET] -PRET (pages 217, 218) - -When PRET is on, input is printed in standard REDUCE format and then -evaluated. - -Examples: -on pret; -(x+1)^3; (x + 1)**3; - 3 2 - X + 3*X + 3*X + 1 - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - procedure fac n; - if not (fixp n and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n - 1 product i + 1; - - FAC - -fac 5; fac 5; - 120 - -Note that all input is converted to lower case except strings (which -keep the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on -each side. In addition, syntactical constructs like IF...THEN...ELSE -are printed in a standard format. - -\endsection -\xitem[PRETTYPRINT] -PRETTYPRINT (page 218) - -\endsection -\xitem[Prettyprinting] -Prettyprinting (pages 217, 218) - -\endsection -\xitem[PRGEN] -PRGEN (page 378) - -\endsection -\item[PRI] -PRI (page 101) - -When PRI is on, the declarations ORDER and FACTOR can -be used, and the switches ALLFAC, DIV, RAT, -and REVPRI take effect when they are on. Default is ON. - - -Printing of expressions is faster with PRI off. The expressions are -then returned in one standard form, without any of the display options that -can be used to feature or display various parts of the expression. You can -also gain insight into REDUCE's representation of expressions with -PRI off. - -\endsection -\item[PRIMEP] -PRIMEP (page 46) - - PRIMEP(expression) or PRIMEP simple_expression - -If expression evaluates to a integer, PRIMEP returns TRUE if -expression is a prime number and NIL otherwise. If expression does -not have an integer value, a type error occurs. - -Examples: -if primep 3 then write "yes" else write "no"; YES -if primep a then 1; ***** A invalid as integer - -\endsection -\item[PRINT_PRECISION] -PRINT_PRECISION (page 133) - - PRINT_PRECISION(integer) or PRINT_PRECISION integer - -In ROUNDED mode, numbers are normally printed to the specified -precision. If the user wishes to print such numbers with less -precision, the printing precision can be set by the declaration -PRINT_PRECISION. - -Examples: -on rounded; -1/3; 0.333333333333 -print_precision 5; -1/3 0.33333 - -\endsection -\item[PROCEDURE] -PROCEDURE (page 169) - -The PROCEDURE command allows you to define a mathematical operation as a -function with arguments. - PROCEDURE identifier (arg{,arg});body - -The option may be ALGEBRAIC or SYMBOLIC, indicating the mode under -which the procedure is executed, or REAL or INTEGER, indicating the -type of answer expected. The default is algebraic. Real or integer -procedures are subtypes of algebraic procedures; type-checking is done -on the results of integer procedures, but not on real procedures (in -the current REDUCE release). identifier may be any valid REDUCE -identifier that is not already a procedure name, operator, ARRAY or -MATRIX. arg is a formal parameter that may be any valid REDUCE -identifier. body is a single statement (a GROUP or BLOCK statement -may be used) with the desired activities in it. - -Examples: - -procedure fac(n); - if not (fixp(n) and n>=0) - then rederr "Choose nonneg. integer only" - else for i := 0:n-1 product i+1; - FAC -fac(0); 1 -fac(5); 120 -fac(-5); ***** choose nonneg. integer only - -Procedures are automatically declared as operators upon definition. -When REDUCE has parsed the procedure definition and successfully -converted it to a form for its own use, it prints the name of the -procedure. Procedure definitions cannot be nested. Procedures can -call other procedures, or can recursively call themselves. Procedure -identifiers can be cleared as you would clear an operator. Unlike LET -statements, new definitions under the same procedure name replace the -previous definitions completely. - -Be careful not to use the name of a system operator for your own -procedure. REDUCE may or may not give you a warning message. If you -redefine a system operator in your own procedure, the original -function of the system operator is lost for the remainder of the -REDUCE session. - -Procedures may have none, one, or more than one parameter. A REDUCE -parameter is a formal parameter only; the use of x as a parameter in a -PROCEDURE definition has no connection with a value of x in the REDUCE -session, and the results of calling a procedure have no effect on the -value of x. If a procedure is called with x as a parameter, the -current value of x is used as specified in the computation, but is not -changed outside the procedure. Making an assignment statement by := -with a formal parameter on the left-hand side only changes the value -of the calling parameter within the procedure. - -Using a LET statement inside a procedure always changes the value -globally: a LET with a formal parameter makes the change to the -calling parameter. LET statements cannot be made on local variables -inside BEGIN...END BLOCKS. When CLEAR statements are used on formal -parameters, the calling variables associated with them are cleared -globally too. The use of LET or CLEAR statements inside procedures -should be done with extreme caution. - -Arrays and operators may be used as parameters to procedures. The -body of the procedure can contain statements that appropriately -manipulate these arguments. Changes are made to values of the calling -arrays or operators. Simple expressions can also be used as -arguments, in the place of scalar variables. Matrices may not be used -as arguments to procedures. - -A procedure that has no parameters is called by the procedure name, -immediately followed by empty parentheses. The empty parentheses may -be left out when writing a procedure with no parameters, but must -appear in a call of the procedure. If this is a nuisance to you, use -a LET statement on the name of the procedure (i.e., LET NOARGS = -NOARGS()) after which you can call the procedure by just its name. - -Procedures that have a single argument can leave out the parentheses -around it both in the definition and procedure call. (You can use the -parentheses if you wish.) Procedures with more than one argument must -use parentheses, with the arguments separated by commas. - -Procedures often have a BEGIN...END block in them. Inside the block, -local variables are declared using SCALAR, REAL or INTEGER -declarations. The declarations must be made immediately after the -word BEGIN, and if more than one type of declaration is made, they are -separated by semicolons. REDUCE currently does no type checking on -local variables; REAL and INTEGER are treated just like SCALAR. -Actions take place as specified in the statements inside the block -statement. Any identifiers that are not formal parameters or local -variables are treated as global variables, and activities involving -these identifiers are global in effect. - -If a return value is desired from a procedure call, a specific RETURN -command must be the last statement executed before exiting from the -procedure. If no RETURN is used, a procedure returns a zero or no -value. - -Procedures are often written in a file using an editor, then the file -is input using the command IN. This method allows easy changes in -development, and also allows you to load the named procedures whenever -you like, by loading the files that contain them. - -\endsection -\xitem[Procedure body] -Procedure body (pages 171--173) - -\endsection -\xitem[Procedure heading] -Procedure heading (page 170) - -\endsection -\item[PROD] -PROD operator (page 403) - -The operator PROD returns -the indefinite or definite product of a given expression. - - -PROD(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be multiplied, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: -prod(k/(k-2),k); k*( - k + 1) - -\endsection -\item[PRODUCT] -PRODUCT (page 57, 58) - -See the FOR loop construction. - -\endsection -\xitem[Program] -Program (page 38) - -\endsection -\xitem[Program structure] -Program structure (page 33) - -\endsection -\xitem[Proper statement] -Proper statement (pages 48, 53, 54) - -\endsection -\xitem[PRSYS] -PRSYS (pages 378, 382) - -\endsection -\xitem[PS] -PS (page 188) - -\endsection -\xitem[PS operator] -PS operator (page 414) - -\endsection -\xitem[PSCHANGEVAR operator] -PSCHANGEVAR operator (page 418) - -\endsection -\xitem[PSCOMPOSE operator] -PSCOMPOSE operator (page 420) - -\endsection -\xitem[PSDEPVAR operator] -PSDEPVAR operator (page 418) - -\endsection -\xitem[PSEXPANSIONPT operator] -PSEXPANSIONPT operator (page 418) - -\endsection -\xitem[PSEXPLIM operator] -PSEXPLIM operator (pages 414, 416) - -\endsection -\xitem[PSFUNCTION operator] -PSFUNCTION operator (page 418) - -\endsection -\item[PSI] -PSI (pages 185, 395) - -The PSI operator returns the Psi (or DiGamma) function. - - Psi(x) := df(Gamma(z),z)/ Gamma (z) - - GAMMA(expression) - -Examples: - load_package specfn; - 1 - 2*LOG(2) + PSI(---) + PSI(1) + 3 - 2 - Psi(3); ---------------------------------- - 2 - - on rounded; - - Psi(1); 0.577215664902 - -Euler's constant can be found as - Psi(1). - -\endsection -\xitem[PSINTCONST (shared)] -PSINTCONST (shared) (page 415) - -\endsection -\xitem[PSORDER operator] -PSORDER operator (page 417) - -\endsection -\xitem[PSORDLIM operator] -PSORDLIM operator (page 416) - -\endsection -\xitem[PSREVERSE operator] -PSREVERSE operator (page 419) - -\endsection -\xitem[PSSETORDER operator] -PSSETORDER operator (page 417) - -\endsection -\xitem[PSSUM operator] -PSSUM operator (page 421) - -\endsection -\xitem[PSTERM operator] -PSTERM operator (page 417) - -\endsection -\xitem[Puiseux expansion] -Puiseux expansion (page 419) - -\endsection -\xitem[PUTCSYSTEM command] -PUTCSYSTEM command (page 235) - -\endsection -\xitem[Quadrature] -Quadrature (page 182) - -\endsection -\item[QUIT] -QUIT (page 70) - -The QUIT command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are -at the top level, the QUIT command exits REDUCE. BYE is a synonym for -QUIT. - -\endsection -\xitem[QUOTE] -QUOTE (page 193) - -\endsection -\xitem[RANDOM] -RANDOM (page 74) - -\endsection -\xitem[RANDOM_NEW_SEED] -RANDOM_NEW_SEED (page 75) - -\endsection -\item[RANK] -RANK (page 167) - - RANK(matrix_expression) -RANK calculates the rank of its matrix argument. - -Examples: - rank mat((a,b,c),(d,e,f)); 2 - -The argument to RANK can also be a LIST of lists, interpreted either -as a row matrix or a set of equations. If that form of input is -chosen, the vectors in the result will be represented by lists as -well. This additional input syntax facilitates the use of RANK in -applications different from classical linear algebra. - -\endsection -\item[RAT] -RAT (page 104) - -When the RAT switch is on, and kernels have been selected to display -with the FACTOR declaration, the denominator is printed with each -term rather than one common denominator at the end of an expression. - -Examples: 3 - SIN(Y)*X + SIN(Y) + X -(x+1)/x + x**2/sin y; ------------------------ - SIN(Y)*X -factor x; - 3 - X + X*SIN(Y) + SIN(Y) -(x+1)/x + x**2/sin y; ------------------------ - X*SIN(Y) -on rat; - 2 - X -1 -(x+1)/x + x**2/sin y; -------- + 1 + X - SIN(Y) - -The RAT switch only has effect when the PRI switch is on. -When PRI is off, regardless of the setting of RAT, the -printing behaviour is as if RAT were off. RAT only has -effect upon the display of expressions, not their internal form. - -\endsection -\item[RATARG] -RATARG (pages 115, 128) - -When RATARG is on, rational expressions can be given to operators -such as COEFF and LTERM that normally require -polynomials in one of their arguments. When RATARG is off, rational -expressions cause an error message. - -Examples: 3 2 3 - X + X*Y + Y -aa := x/y**2 + 1/x + y/x**2; AA := ---------------- - 2 2 - X *Y - 3 2 3 - X + X*Y + Y -coeff(aa,x); ***** ---------------- invalid as POLYNOMIAL - 2 2 - X *Y -on ratarg; - Y 1 1 -coeff(aa,x); {----,----,0,-------} - 2 2 2 2 - X X X *Y - -\endsection -\item[RATIONAL] -RATIONAL (page 132) - -When RATIONAL is on, polynomial expressions with rational coefficients -are produced. - -Examples: - 2*X + 3*Y -x/2 + 3*y/4; ----------- - 4 - 2 - X + 5*X + 17 -(x**2 + 5*x + 17)/2; --------------- - 2 -on rational; - 1 3 -x/2 + 3y/4; ---*(X + ---*Y) - 2 2 - - 1 2 -(x**2 + 5*x + 17)/2; ---*(X + 5*X + 17) - 2 - -By using RATIONAL, polynomial expressions with rational coefficients -can be used in some commands that expect polynomials. With RATIONAL -off, such a polynomial becomes a rational expression, with denominator -the least common multiple of the denominators of the rational number -coefficients. - -\endsection -\xitem[Rational coefficient] -Rational coefficient (page 132) - -\endsection -\xitem[Rational function] -Rational function (page 119) - -\endsection -\item[RATIONALIZE] -RATIONALIZE (page 135) - -When the RATIONALIZE switch is on, denominators of rational expressions -that contain complex numbers or root expressions are simplified by -multiplication by their conjugates. - -Examples: - SQRT(3) + 1 -qq := (1+sqrt(3))/(sqrt(3)-7); QQ := ------------- - SQRT(3) - 7 -on rationalize; - - 4*SQRT(3) - 5 -qq; ------------------ - 23 - 2/3 1/3 - 6 - 4*6 + 16 -2/(4 + 6**(1/3)); -------------------- - 35 -on complex; - 1 - 2*i -(i-1)/(i+3); --------- - 5 - - -\endsection -\item[RATPRI] -RATPRI (page 104) - -When the RATPRI switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a linear -style. Default is ON. - -Examples: - 3 -3/17; ---- - 17 - 3*B + 2*Y -2/b + 3/y; ----------- - B*Y -off ratpri; -3/17; 3/17 -2/b + 3/y; (3*B + 2*Y)/(B*Y) - -\endsection -\xitem[RATROOT] -RATROOT (page 373) - -\endsection -\item[REAL] -REAL (page 61) - -The REAL declaration must be made immediately after a BEGIN (or other -variable declaration such as INTEGER and SCALAR) and declares local -integer variables. They are initialised to zero. - - REAL identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Real variables remain local, and do not share values with variables of -the same name outside the BEGIN...END block. When the block is -finished, the variables are removed. You may use the words INTEGER or -SCALAR in the place of REAL. REAL does not indicate type-checking by -the current REDUCE; it is only for your own information. Declaration -statements must immediately follow the BEGIN, without a semicolon -between BEGIN and the first variable declaration. - -Any variables used inside a BEGIN...END BLOCK that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Any array or matrix declared -inside a block is always global. - -\endsection -\xitem[Real] -Real (pages 34, 35) - -\endsection -\xitem[Real coefficient] -Real coefficient (page 132) - -\endsection -\item[REALROOTS] -REALROOTS (pages 369, 370) - -The operator REALROOTS finds that real roots of a polynomial to an -accuracy that is sufficient to separate them and which is a minimum of -6 decimal places. - - REALROOTS(p) - REALROOTS(p,from,to) - -where p is a univariate polynomial. The optional parameters from and -to classify an interval: if given, exactly the real roots in this -interval will be returned. from and to can also take the values -INFINITY or -INFINITY. If omitted all real roots will be returned. -Result is a LIST of equations which represent the roots of the -polynomial at the given accuracy. - -Examples: - realroots(x^5-2); {X=1.1487} - realroots(x^3-104*x^2+403*x-300,2,infinity); {X=3.0,X=100.0} - realroots(x^3-104*x^2+403*x-300,-infinity,2); {X=1} - -The minimal accuracy of the result values is controlled by ROOTACC. - -\endsection -\xitem[REDERR] -REDERR (page 173) - -\endsection -\item[REDUCT] -REDUCT (page 131) -The REDUCT operator returns the remainder of its expression after the -leading term is removed. - - REDUCT(expression,kernel) - -expression is ordinarily a polynomial. If RATARG is on, a rational -expression may also be used, otherwise an error results. kernel must -be a KERNEL. - -Examples: - 3 -reduct((x+y)**3,x); (x + y) - -reduct(x + sin(x)**3,sin(x)); x - 3 -reduct(x + sin(x)**3,y); sin(x) + x - -If the expression does not contain the kernel, REDUCT returns the -expression. - -\endsection -\xitem[side relations] -relations - side (page 241) - -\endsection -\item[REMAINDER] -REMAINDER (page 126) -The REMAINDER operator returns the remainder after its first -argument is divided by its second argument. - - REMAINDER(expression,expression) - -expression can be any valid REDUCE polynomial, and is not limited -to numeric values. - -Examples: -remainder(13,6); 1 -remainder(x**2 + 3*x + 2,x+1); 0 -remainder(x**3 + 12*x + 4,x**2 + 1); 11*X + 4 -remainder(sin(2*x),x*y); SIN(2*X) - -If the first argument to REMAINDER contains a denominator not equal to -1, an error occurs. - -\endsection -\item[REMFAC] -REMFAC (page 102) - -The REMFAC declaration removes the special factoring treatment of its -arguments that was declared with FACTOR. - -REMFAC kernel{,kernel} - -kernel must be a KERNEL or OPERATOR name that was declared as special -with the FACTOR declaration. - -\endsection -\xitem[REMFORDER command] -REMFORDER command (pages 268, 271) - -\endsection -\item[REMIND] -REMIND (page 206) - -The REMIND declaration removes the special status of its arguments -as indices, which was set in the INDEX declaration, in -high-energy physics calculations. - REMIND identifier{,identifier} - -identifier must have been declared to be of type INDEX. - -\endsection -\xitem[RENOSUM command] -RENOSUM command (pages 262, 271) - -\endsection -\item[REPART] -REPART (pages 72, 73, 75) - - REPART(expression) or REPART simple_expression - -This operator returns the real part of an expression, if that argument -has an numerical value. A non-numerical argument is returned as an -expression in the operators REPART and IMPART. - -Examples: -repart(1+i); 1 -repart(a+i*b); REPART(A) - IMPART(B) - -\endsection -\item[REPEAT] -REPEAT (pages 60, 61, 63, 65) - -The REPEAT command causes repeated execution of a statement UNTIL -the given condition is found to be true. The statement is always executed -at least once. - REPEAT statement UNTIL condition - -statement can be a single statement, GROUP statement, or -a BEGIN...END BLOCK. condition must be a logical -operator that evaluates to rue or nil. - -Examples: -<> until m = 0>>; - 400*X - 300*X - 200*X - 100*X - -<> until m <= 0>>; - -1 - -REPEAT must always be followed by an UNTIL with a condition. Be -careful not to generate an infinite loop with a condition that is -never true. In the second example, if the condition had been M = 0, -it would never have been true since M already had value -2 when the -condition was first evaluated. - -\endsection -\xitem[Reserved variable] -Reserved variable (pages 36, 37) - -\endsection -\item[REST] -REST (page 50) - -The REST operator returns a LIST containing all but the first element of -the list it is given. - REST(list) or REST list - - -list must be a non-empty list, but need not have more than one element. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D}; -rest alist; {B,C,D} -blist := {x,y,{aa,bb,cc},z}; BLIST := {X,Y,{AA,BB,CC},Z} -second rest blist; {AA,BB,CC} -clist := {c}; CLIST := C -rest clist; {} - -\endsection -\xitem[RESULT] -RESULT (page 378) - -\endsection -\item[RESULTANT] -RESULTANT (page 126) -The RESULTANT operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials -have a root in common. - RESULTANT(expression,expression,kernel) - -expression must be a polynomial containing kernel ; -kernel must be a KERNEL. - -Examples: -resultant(x**2 + 2*x + 1,x+1,x); 0 -resultant(x**2 + 2*x + 1,x-3,x); 16 -resultant(z**3 + z**2 + 5*z + 5, - z**4 - 6*z**3 + 16*z**2 - 30*z + 55, - z); 0 -resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); - 6 4 3 2 - 4*(x + 8*x - 15*x + 16*x - 60*x + 25) - -The resultant is the determinant of the Sylvester matrix, formed from the -coefficients of the two polynomials in the following way: - -Given two polynomials: - - n n-1 - a x + a1 x + ... + an - -and - m m-1 - b x + b1 x + ... + bm - -form the (m+n)x(m+n-1) Sylvester matrix by the following means: - - 0.......0 a a1 .......... an - 0....0 a a1 .......... an 0 - . . . . - a0 a1 .......... an 0.......0 - 0.......0 b b1 .......... bm - 0....0 b b1 .......... bm 0 - . . . . - b b1 .......... bm 0.......0 - -If the determinant of this matrix is 0, the two polynomials have a -common root. Finding the resultant of large expressions is -time-consuming, due to the time needed to find a large determinant. - -The sign conventions RESULTANT uses are those given in the article, -``Computing in Algebraic Extensions,'' by R. Loos, appearing in -Computer Algebra--Symbolic and Algebraic Computation, 2nd ed., edited -by B. Buchberger, G.E. Collins and R. Loos, and published by - -Springer-Verlag, 1983. - -These are: - resultant(p(x),q(x),x) = (-1)^{deg p(x)*deg q(x)} * resultant(q(x),p(x),x), - resultant(a,p(x),x) = a^{deg p(x)}, - resultant(a,b,x) = 1 - -where p(x) and q(x) are polynomials which have x as a variable, and -a and b are free of x. - -Error messages are given if RESULTANT is given a non-polynomial -expression, or a non-kernel variable. - -\endsection -\item[RETRY] -RETRY (page 157) -The RETRY command allows you to retry the latest statement that resulted -in an error message. - -Examples: -matrix a; -det a; ***** Matrix A not set -a := mat((1,2),(3,4)); A(1,1) := 1 - A(1,2) := 2 - A(2,1) := 3 - A(2,2) := 4 -retry; -2 - -RETRY remembers only the most recent statement that resulted in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. - -\endsection -\item[RETURN] -RETURN (pages 62--64) - -The RETURN command causes a value to be returned from inside a -BEGIN...END BLOCK. - BEGIN statements RETURN (expression) - END - -statements can be any valid REDUCE statements. The value of -expression is returned. - -Examples: -begin write "yes"; return a end; yes - A -procedure dumb(a); - begin if numberp(a) then return a - else return 10 end; - DUMB -dumb(x); 10 -dumb(-5); -5 -procedure dumb2(a); - begin c := a**2 + 2*a + 1; - d := 17; c*d; return end; - DUMB2 -dumb2(4); -c; 25 -d; 17 - -Note in DUMB2 above that the assignments were made as requested, but -the product C*D cannot be accessed. Changing the procedure to read -RETURN C*D would remedy this problem. - -The RETURN statement is always the last statement executed before -leaving the block. If RETURN has no argument, the block is exited but -no value is returned. A block statement does not need a RETURN ; the -statements inside terminate in their normal fashion without one. In -that case no value is returned, although the specified actions inside -the block take place. - -The RETURN command can be used inside <<...>> GROUP statements and -IF...THEN...ELSE commands that are inside BEGIN...END BLOCKs. It is -not valid in these constructions that are not inside a BEGIN...END -block. It is not valid inside FOR, REPEAT...UNTIL or WHILE...DO loops -in any construction. To force early termination from loops, the GO -TO(GOTO) command must be used. When you use nested block statements, -a RETURN from an inner block exits returning a value to the -next-outermost block, rather than all the way to the outside. - -\endsection -\item[REVERSE] -REVERSE (page 51) - -The REVERSE operator returns a LIST that is the reverse of the list it -is given. - REVERSE(list) or REVERSE list - -list must be a LIST. - -Examples: - 2 3 -aa := {c,b,a,{x**2,z**3},y}; AA := {C,B,A,{X ,Z },Y} - 2 3 -reverse aa; {Y,{X ,Z},A,B,C} - 2 3 -reverse(q . reverse aa); {C,B,A,{X ,Z },Y,Q} - -REVERSE and CONS can be used together to add a new element to the end -of a list (. adds its new element to the beginning). The REVERSE -operator uses a noticeable amount of system resources, especially if -the list is long. If you are doing much heavy-duty list manipulation, -you should probably design your algorithms to avoid much reversing of -lists. A moderate amount of list reversing is no problem. - -\endsection -\item[REVGRADLEX] -REVGRADLEX (page 293) - -The terms are ordered first with their total degree (degree sum), and -if the total degree is identical the comparison is the inverse of LEX -term order. With GROEBNER and GROEBNERF calculations this term order -is similar to GRADLEX term order; it is known as most efficient -ordering with respect to computing time. - -\endsection -\item[REVPRI] -REVPRI (page 105) - -When the REVPRI switch is on, terms are printed in reverse order from -the normal printing order. - -Examples: - 5 2 -x**5 + x**2 + 18 + sqrt(y); SQRT(Y) + X + X + 18 - -a + b + c + w; A + B + C + W - -on revpri; - 2 5 -x**5 + x**2 + 18 + sqrt(y); 17 + X + X + SQRT(Y) - -a + b + c + w; W + C + B + A - -Turn REVPRI on when you want to display a polynomial in ascending -rather than descending order. - -\endsection -\item[RHS] -RHS (page 47) -The RHS operator returns the right-hand side of an EQUATION, such as -those returned in a LIST by SOLVE. - - RHS(equation) or RHS equation - -equation must be an equation of the form left-hand side = right-hand side. - -Examples: - roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); - - 2 - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOTS := {X=----------------------------------------, - 2 - - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - X=-----------------------------------} - 2 - -root1 := rhs first roots; - - (SQRT(24*Y + 60*Y + 25) + 6*Y + 5) - ROOT1 := ---------------------------------------- - 2 -root2 := rhs second roots; - 2 - SQRT(24*Y + 60*Y + 25) - 6*Y - 5 - ROOT2 := ----------------------------------- - 2 - -An error message is given if RHS is applied to something other than an -equation. - -\endsection -\xitem[Riemann Zeta Function] -Riemann Zeta Function (pages 185, 395) - -\endsection -\xitem[RIEMANNCONX command] -RIEMANNCONX command (pages 267, 271) - -\endsection -\xitem[Riemannian Connections] -Riemannian Connections (page 267) - -\endsection -\xitem[Rlisp] -Rlisp (page 213) - -\endsection -\item[RLISP88] -RLISP88 (page 204) - -Rlisp '88 is a superset of the Rlisp that has been traditionally used -for the support of REDUCE. It is fully documented in the book Marti, -J.B., ``RLISP '88: An Evolutionary Approach to Program Design and -Reuse'', World Scientific, Singapore (1993). It supports different -looping constructs from the traditional Rlisp, and treats ``-'' as a -letter unless separated by spaces. Turning on the switch RLISP88 -converts to Rlisp '88 parsing conventions in symbolic mode, and -enables the use of Rlisp '88 extensions. Turning off the switch -reverts to the traditional Rlisp and the previous mode (SYMBOLIC or -ALGEBRAIC) in force before RLISP88 was turned on. - -\endsection -\item[RLROOTNO] -RLROOTNO (page 369) - -The function RLROOTNO computes the number of real roots of p in the -specified region, but does not find the roots. - - RLROOTNO(expression) - RLROOTNO(expression, POSITIVE) - RLROOTNO(expression, NEGATIVE) - RLROOTNO(expression, lo, hi) - -For more details on the specification of an interval, see ISOLATER. - -Examples: - load_package roots; - rlrootno (x^3-3x^2+2x+10); 1 - rlrootno(x^3-3x^2+2x+10,positive); 0 -\endsection -\xitem[root finding] -root finding (page 367) - -\endsection -\item[ROOT_OF] -ROOT_OF (pages 85, 86) - -When the operator SOLVE is unable to find an explicit solution or if -that solution would be too complicated, the result is presented as -formal root expression using the internal operator ROOT_OF and a new -local variable. An expression with a top level ROOT_OF is implicitly a -list with an unknown number of elements since we can't always know how -many solutions an equation has. If a substitution is made into such an -expression, closed form solutions can emerge. If this occurs, the -ROOT_OF construct is replaced by an operator ONE_OF. At this point it -is of course possible to transform the result if the original SOLVE -operator expression into a standard SOLVE solution. To effect this, -the operator EXPAND_CASES can be used. - -Examples: 7 2 -solve(a*x^7-x^2+1,x); {x=root_of(a*x_ - x_ + 1,x_)} -sub(a=0,ws); {x=one_of(1,-1)} -expand_cases ws; {x=1,x=-1} - -The components of ROOT_OF and ONE_OF expressions can be processed as -usual with operators ARGLENGTH and PART. - -\endsection -\item[ROOT_MULTIPLICITES] -ROOT_MULTIPLICITES - -The ROOT_MULTIPLICITIES variable is set to the list of the -multiplicities of the roots of an equation by the SOLVE operator. - - -SOLVE returns its solutions in a list. The multiplicities of -each solution are put in the corresponding locations of the list -ROOT_MULTIPLICITIES. - -\endsection -\xitem[ROOT_VAL] -ROOT_VAL (page 370) - -\endsection -\item[ROOTACC] -ROOTACC (page 373) - -The operator ROOTACC allows you to set the accuracy up to which the -roots package computes its results. - - ROOTACC(n) - -Here n is an integer value. The internal accuracy of the ROOTS package -is adjusted to a value of MAX(6,N). The default value is 6. - -\endsection -\xitem[ROOTMSG] -ROOTMSG (page 373) - -\endsection -\xitem[ROOTPREC] -ROOTPREC (page 374) - -\endsection -\item[ROOTS] -ROOTS (pages 184, 369, 370) - -The operator ROOTS is the main top level function of the roots -package. It will find all roots, real and complex, of the polynomial -p to an accuracy that is sufficient to separate them and which is a -minimum of 6 decimal places. - - ROOTS(p) - -where p is a univariate polynomial. Result is a LIST of equations -which represent the roots of the polynomial at the given accuracy. In -addition, ROOTS stores separate lists of real roots and complex roots -in the global variables ROOTSREAL and ROOTSCOMPLEX. - -Examples: - - roots(x^5-2); {X=-0.929316 + 0.675188*I, - X=-0.929316 - 0.675188*I, - X=0.354967 + 1.09248*I, - X=0.354967 - 1.09248*I, - X=1.1487} - -The minimal accuracy of the result values is controlled by -ROOTACC. - -\endsection -\xitem[ROOTS package] -ROOTS package (page 367) - -\endsection -\xitem[ROOTS_AT_PREC] -ROOTS_AT_PREC (page 370) - -\endsection -\item[ROOTSCOMPLEX] -ROOTSCOMPLEX (page 369) - -When the operator ROOTS is called the complex roots are collected in -the global variable ROOTSCOMPLEX as LIST. - -\endsection -\item[ROOTSREAL] -ROOTSREAL (page 369) - -When the operator ROOTS is called the real roots are collected in the -global variable ROOTREAL as LIST. - -\endsection -\item[ROUND] -ROUND (page 75) - - ROUND(expression) - -If its argument has a numerical value, ROUND rounds it to the nearest -integer. For non-numeric arguments, the value is an expression in the -original operator. - -Examples: -round 3.4; 3 -round 3.5; 4 -round a; ROUND(A) - -\endsection -\item[ROUNDALL] -ROUNDALL (page 133) - -In ROUNDED mode, rational numbers are normally converted to a -floating point representation. If ROUNDALL is off, this conversion -does not occur. ROUNDALL is normally ON. - -Examples: -on rounded; -1/2; 0.5 -off roundall; - 1 -1/2; --- - 2 - -\endsection -\item[ROUNDBF] -ROUNDBF (page 133) - -When ROUNDED is on, the normal defaults cause underflows to be -converted to zero. If you really want the small number that results -in such cases, ROUNDBF can be turned on. - -Examples: -on rounded; -exp(-100000.1^2); 0 -on roundbf; -exp(-100000.1^2); 1.18441281937E-4342953505 - -If a polynomial is input in ROUNDED mode at the default precision into -any ROOTS function, and it is not possible to represent any of the -coefficients of the polynomial precisely in the system floating point -representation, the switch ROUNDBF will be automatically turned on. -All rounded computation will use the internal bigfloat representation -until the user subsequently turns ROUNDBF off. (A message is output to -indicate that this condition is in effect.) - -\endsection -\item[ROUNDED] -ROUNDED (pages 36, 44, 78, 108, 132, 372) - -When ROUNDED is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 -digits. The precise number can be found by the command PRECISION(0). - -Examples: -pi; PI - - 5 -35/217; ---- - 31 -on rounded; -pi; 3.14159265359 - -35/217; 0.161 - -sqrt(3); 1.73205080756 - -If more than the default number of decimal places are required, use the -PRECISION command to set the required number. - -\endsection -\item[Rule lists] -Rule lists (page 147) - -A RULE is an instruction to replace an algebraic expression -or a part of an expression by another one. - lhs => rhs or - lhs => rhs WHEN cond -lhs is an algebraic expression used as search pattern and -rhs is an algebraic expression which replaces matches of -rhs. => is the operator REPLACE. - -lsh can contain free variables which are preceded by a tilde ~ in -their leftmost position in lhs. If a rule has a WHEN cond part it -will fire only if the evaluation of cond has a result TRUE. cond may -contain references to free variables of lhs. - -Rules can be collected in a LIST which then forms a RULE LIST. RULE -LISTS can be used to collect algebraic knowledge for a specific -evaluation context. - -RULES and RULE LISTS are globally activated and deactivated by LET, -FORALL, CLEARRULES. For a single evaluation they can be locally -activate by WHERE. The active rules for an operator can be visualised -by SHOWRULES. - -Examples: -operator f,g,h; -let f(x) => x^2; - 2 -f(x); X -g_rules:={g(~n,~x)=>h(n/2,x) when evenp n, -g(~n,~x)=>h((1-n)/2,x) when not evenp n}$ -let g_rules; -g(3,x); H(-1,X) - -\endsection -\item[SAVEAS] -SAVEAS (page 99)) -The SAVEAS command saves the current workspace under the name of its -argument. - - SAVEAS identifier - -identifier can be any valid REDUCE identifier. - -Examples: - -(The numbered prompts are shown below, unlike in most examples) -1: solve(x^2-3); {x=sqrt(3),x= - sqrt(3)} -2: saveas rts(0)$ -3: rts(0); {x=sqrt(3),x= - sqrt(3)} - -SAVEAS works only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that -you did not assign to an identifier when you originally typed the -input. For access to previous output use WS. - -\endsection -\xitem[savesfs] -savesfs (page 393) - -\endsection -\item[SAVESTRUCTR] -SAVESTRUCTR (page 113) - -When SAVESTRUCTR is on, results of the STRUCTR command are returned as -a list whose first element is the representation for the expression -and the remaining elements are equations showing the relationships of -the generated variables. - -Examples: -off exp; - -structr((x+y)^3 + sin(x)^2); ANS3 - where - 3 2 - ANS3 := ANS1 + ANS2 - - ANS2 := SIN(X) - - ANS1 := X + Y - -ans3; ANS3 -on savestructr; - 3 2 -structr((x+y)^3 + sin(x)^2); {ANS3,ANS3=ANS1 + ANS2 ,ANS2=SIN(X),ANS1=X + Y} - 3 2 -ans3 where rest ws; (X + Y) + SIN(X) - -In normal operation, STRUCTR is only a display command. With -SAVESTRUCTR on, you can access the various parts of the expression -produced by STRUCTR. - -The generic system names use the stem ANS. You can change this to your -own stem by the command VARNAME. REDUCE adds integers to this stem -to make unique identifiers. - -\endsection -\xitem[Saving an expression] -Saving an expression (page 111) - -\endsection -\item[SCALAR] -SCALAR (pages 61, 62) - -The SCALAR declaration must be made immediately after a BEGIN (or -other variable declaration such as INTEGER and REAL) and declares -local scalar variables. They are initialised to 0. - - SCALAR identifier{,identifier} - -identifier may be any valid REDUCE identifier, except T or NIL. - -Scalar variables remain local, and do not share values with variables -of the same name outside the BEGIN...END BLOCK. When the block is -finished, the variables are removed. You may use the words REAL or -INTEGER in the place of SCALAR. REAL and INTEGER do not indicate -type-checking by the current REDUCE; they are only for your own -information. Declaration statements must immediately follow the -BEGIN, without a semicolon between BEGIN and the first variable -declaration. - -Any variables used inside BEGIN...END blocks that were not declared -SCALAR, REAL or INTEGER are global, and any change made to them inside -the block affects their global value. Arrays declared inside a block -are always global. - -\endsection -\xitem[Scalar] -Scalar (page 43) - -\endsection -\xitem[SCALEFACTORS operator] -SCALEFACTORS operator (page 234) - -\endsection -\item[SCIENTIFIC_NOTATION] -SCIENTIFIC_NOTATION (page 34) - - SCIENTIFIC_NOTATION(m) or SCIENTIFIC_NOTATION(m,n) - -m and n are positive integers. SCIENTIFIC_NOTATION controls the -output format of floating point numbers. At the default settings, any -number with five or less digits before the decimal point is printed in -a fixed-point notation, e.g., 12345.6. Numbers with more than five -digits are printed in scientific notation, e.g., 1.234567E+5. -Similarly, by default, any number with eleven or more zeros after the -decimal point is printed in scientific notation. - -When SCIENTIFIC_NOTATION is called with the numerical argument m a -number with more than m digits before the decimal point, or m or more -zeros after the decimal point, is printed in scientific notation. -When SCIENTIFIC_NOTATION is called with a list {m, n}, a number with -more than m digits before the decimal point, or n or more zeros after -the decimal point is printed in scientific notation. - -Examples: - -on rounded; -12345.6; 12345.6 - -123456.5; 1.234565e+5 - -0.00000000000000012; 1.2e-16 - -scientific_notation 20; {5,11} - -5: 123456.7; 123456.7 - -0.00000000000000012; 0.00000000000000012 - -\endsection -\item[SCOPE] -SCOPE (page 185) - -Author: J.A. van Hulzen - -REDUCE Source Code Optimization Package. - -SCOPE is a package for the production of an optimised form of a -set of expressions. It applies an heuristic search for common -(sub)expressions to almost any set of proper REDUCE assignment -statements. The output is obtained as a sequence of assignment -statements. GENTRAN is used to facilitate expression output. - -\endsection -\xitem[SDER(I)] -SDER(I) (page 379) - -\endsection -\item[SEC] -SEC (pages 76, 78) - -The SEC operator returns the secant of its argument. - - SEC(expression) or SEC simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sec abc; SEC(ABC) -sec(pi); -1 -sec 4; SEC(4) -on rounded; -sec(4); - 1.52988565647 -sec log 5; - 25.8852966005 - -SEC returns a numeric value only if ROUNDED is on. Then the secant is -calculated to the current degree of floating point precision. - -\endsection -\item[SECH] -SECH (pages 76, 78) - -The SECH operator returns the hyperbolic secant of its argument. - - SECH(expression) or SECH simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sech abc; SECH(ABC) -sech(0); 1 -sech 4; SECH(4) -on rounded; -sech(4); 0.0366189934737 -sech log 5; 0.384615384615 - -SECH returns a numeric value only if ROUNDED is on. Then the -expression is calculated to the current degree of floating point -precision. - -\endsection -\item[SECOND] -SECOND (page 50) - -The SECOND operator returns the second element of a list. - SECOND(list) or SECOND list - -list must be a list with at least two elements, to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -second alist; B -blist := {x,{aa,bb,cc},z}; BLIST := {X,{AA,BB,CC},Z} -second second blist; BB - -\endsection -\xitem[Selector] -Selector (page 198) - -\endsection -\xitem[Semicolon] -Semicolon (page 53) - -\endsection -\item[SET] -SET (pages 55, 83) - -The SET operator is used for assignments when you want both sides of -the assignment statement to be evaluated. - - SET(restricted_expression,expression) - -expression can be any REDUCE expression; restricted_expression -must be an identifier or an expression that evaluates to an identifier. - -Examples: -a := y; A := Y - 2 -set(a,sin(x^2)); SIN(X ) - 2 -a; SIN(X ) - 2 -y; SIN(X ) - -a := b + c; A := B + C - -set(a-c,z); Z - -b; Z - -Using an ARRAY or MATRIX reference as the first argument to SET has -the result of setting the contents of the designated element to SET's -second argument. You should be careful to avoid unwanted side effects -when you use this facility. - -\endsection -\item[SETMOD] -SETMOD (page 134) - -The SETMOD command sets the modulus value for subsequent MODULAR -arithmetic. - - SETMOD integer - -integer must be positive, and greater than 1. It need not be a prime -number. - -Examples: -setmod 6; 1 -on modular; -16; 4 - 2 -x^2 + 5x + 7; X + 5*X + 1 - X -x/3; --- - 3 -setmod 2; 6 - 4 -(x+1)^4; X + 1 -x/3; X - -SETMOD returns the previous modulus, or 1 if none has been set before. -SETMOD only has effect when MODULAR is on. - -Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error -message, since the operation is equivalent to dividing by 0. However, -dividing by a factor of a non-prime modulus does not produce an error -message. - -\endsection -\xitem[SGN indeterminate sign] -SGN - indeterminate sign (page 257) - -\endsection -\item[SHARE] -SHARE (page 197) - -The SHARE declaration allows access to its arguments by both -algebraic and symbolic modes. - - SHARE identifier{,identifier} - -identifier can be any valid REDUCE identifier. - -Programming in SYMBOLIC as well as algebraic mode allows you a wider -range of techniques than just algebraic mode alone. Expressions do -not cross the boundary since they have different representations, -unless the SHARE declaration is used. For more information on using -symbolic mode, see the REDUCE User's Manual, and the Standard Lisp -Report. - -You should be aware that a previously-declared array is destroyed by -the SHARE declaration. Scalar variables retain their values. You can -share a declared MATRIX that has not yet been dimensioned so that it -can be used by both modes. Values that are later put into the matrix -are accessible from symbolic mode too, but not by the usual matrix -reference mechanism. In symbolic mode, a matrix is stored as a list -whose first element is MAT, and whose next elements are the rows of -the matrix stored as lists of the individual elements. Access in -symbolic mode is by the operators FIRST, SECOND, THIRD and REST. - -\endsection -\item[SHOWRULES] -SHOWRULES (page 150) - - SHOWRULES(expression) or SHOWRULES simple_expression - -SHOWRULES returns in RULE-LIST form any OPERATOR rules associated with -its argument. - -Examples: -showrules log; {log(e) => 1, - - log(1) => 0, - - ~x - log(e ) => ~x, - - 1 - df(log(~x),~x) => ----} - ~x - -Such rules can then be manipulated further as with any LIST. For example -RHS FIRST WS; has the value 1. - -An operator may have properties that cannot be displayed in such a form, -such as the fact it is an odd function, or has a definition defined as a -procedure. - -\endsection -\item[SHOWTIME] -SHOWTIME (page 70) - -The SHOWTIME command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has -not been called before. - -Examples: -showtime; Time: 1020 ms - 2 -factorize(x^4 - 8x^4 + 8x^2 - 136x - 153); {X - 9,X + 17,X + 1} -showtime; Time: 920 ms - -The time printed is either the elapsed cpu time or the elapsed wall -clock time, depending on your system. SHOWTIME allows you to see the -system time resources REDUCE uses in its calculations. Your time -readings will of course vary from this example according to the system -you use. - -\endsection -\item[SHUT] -SHUT (pages 153--155) - -The SHUT command closes output files. - SHUT filename{,filename} - -filename must have been a file opened by OUT. - - -A file that has been opened by OUT must be SHUT before it is -brought in by IN. Files that have been opened by OUT should -always be SHUT before the end of the REDUCE session, to avoid either -loss of information or the printing of extraneous information into the file. -In most systems, terminating a session by BYE closes all open -output files. - -\endsection -\xitem[Side effect] -Side effect (page 48) - -\endsection -\xitem[side relations] -side relations (page 241) - -\endsection -\item[SIGN] -SIGN (page 75) - - SIGN expression - -SIGN tries to evaluate the sign of its argument. If this is possible -SIGN returns one of 1, 0 or -1. Otherwise, the result is the original -form or a simplified variant. - -Examples: - sign(-5) -1 - sign(-a^2*b) -SIGN(B) - -Even powers of formal expressions are assumed to be positive only as long -as the switch COMPLEX is off. - -\endsection -\xitem[SIGNATURE command] -SIGNATURE command (page 271) - -\endsection -\xitem[Simplification] -Simplification (pages 44, 97) - -\endsection -\xitem[SIMPSYS] -SIMPSYS (pages 378, 380, 383) - -\endsection -\item[SIN] -SIN (pages 76, 78) - -The SIN operator returns the sine of its argument. - - SIN(expression) or SIN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -sin aa; SIN(AA) -sin(pi/2); 1 -on rounded; -sin 3; 0.14112000806 -sin(pi/2); 1.0 - -SIN returns a numeric value only if ROUNDED is on. Then the sine is -calculated to the current degree of floating point precision. The -argument in this case is assumed to be in radians. - -\endsection -\item[SINH] -SINH (pages 76, 78) - -The SINH operator returns the hyperbolic sine of its argument. The -derivative of SINH and some simple transformations are known to the -system. - - SINH(expression) or SINH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -sinh b; SINH(B) -sinh(0); 0 - 2 -df(sinh(x**2),x); 2*COSH(X )*X - COSH(4*X) -int(sinh(4*x),x); ----------- - 4 -on rounded; -sinh 4; 27.2899171971 - - -You may attach further functionality by defining its inverse (see -ASINH). A numeric value is not returned by SINH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\xitem[SMACRO] -SMACRO (page 196) - -\endsection -\item[SOLVE] -SOLVE (pages 84, 85, 90, 181) - -The SOLVE operator solves a single algebraic EQUATION or a system of -simultaneous equations. - - SOLVE(expression [ , kernel]) or - - SOLVE({expression,...} [ ,{ kernel ,...}] ) - -If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. expression is either a -scalar expression or an EQUATION. When more than one expression is -given, the LIST of expressions is surrounded by curly braces. The -optional list of KERNELs follows, also in curly braces. - -Examples: -sss := solve(x^2 + 7); Unknown: X - SSS := {X= - SQRT(7)*I, - X=SQRT(7)*I} -rhs first sss; - SQRT(7)*I -solve(sin(x^2*y),y); - PI*(2*ARBINT(1) + 1) - {Y=----------------------, - 2 - X - - 2*ARBINT(1)*PI - Y=----------------} - 2 - X - -off allbranch; -solve(sin(x**2*y),y); {Y=0} -solve({3x + 5y = -4,2*x + y = -10},{x,y}); - 46 22 - {{x=-------,y=----}} - 7 7 -solve({x + a*y + z,2x + 5},{x,y}); - 5 - 2*z + 5 - {{x=------,y=------------}} - 2 2*a -ab := (x+2)^2*(x^6 + 17x + 1); - 8 7 6 3 2 - ab := x + 4*x + 4*x + 17*x + 69*x + 72*x + 4 - - 6 -www := solve(ab,x); {X=ROOT_OF(X_ + 17*X_ + 1),X=-2} -root_multiplicities; {1,2} - -Results of the SOLVE operator are returned as EQUATIONS in a LIST. -You can use the usual list access methods (FIRST, SECOND, THIRD, REST -and PART) to extract the desired equation, and then use the operators -RHS and LHS to access the right-hand or left-hand expression of the -equation. When SOLVE is unable to solve an equation, it returns the -unsolved part as the argument of ROOT_OF, with the variable renamed to -avoid confusion, as shown in the last example above. - -For one equation, SOLVE uses square-free factorisation, roots of -unity, and the known inverses of the LOG, SIN, COS, ACOS, ASIN, and -exponentiation operators. The quadratic, cubic and quartic formulas -are used if necessary, but these are applied only when the switch -FULLROOTS is set on; otherwise or when no closed form is available the -result is returned as ROOT_OF expression. The switch TRIGFORM -determines which type of cubic and quartic formula is used. The -multiplicity of each solution is given in a list as the system -variable ROOT_MULTIPLICITIES. For systems of simultaneous linear -equations, matrix inversion is used. For nonlinear systems, the -Groebner basis method is used. - -Linear equation system solving is influenced by the switch CRAMER. - -Singular systems can be solved when the switch SOLVESINGULAR is on, -which is the default setting. A message is given if the system of -equations is inconsistent. - -Related: ALLBRANCH switch, FULLROOTS switch, ROOTS operator, ROOT_OF -operator, TRIGFORM switch. - -\endsection -\item[SOLVESINGULAR] -SOLVESINGULAR (page 89) - -When SOLVESINGULAR is on, singular or under determined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is ON. - -Examples: - - ARBCOMPLEX(1) -solve({2x + y,4x + 2y},{x,y}); {{X=------------------,Y=ARBCOMPLEX(1)}} - 2 - - 8*arbcomplex(2) -solve({7x + 15y - z,x - y - z},{x,y,z});{{x=-----------------, - 11 - - - 3*ARBCOMPLEX(2) - Y=--------------------, - 11 - - Z=ARBCOMPLEX(2)}} - -off solvesingular; -solve({2x + y,4x + 2y},{x,y}); ***** SOLVE given singular equations -solve({7x + 15y - z,x - y - z},{x,y,z});***** SOLVE given singular equations - -The integer following the identifier ARBCOMPLEX above is assigned by -the system, and serves to identify the variable uniquely. It has no other -significance. - -\endsection -\xitem[SORTOUTODE] -SORTOUTODE (page 350) - -\endsection -\xitem[SPACEDIM command] -SPACEDIM command (pages 251, 271) - -\endsection -\item[SPDE] -SPDE (page 185) - -Author: Fritz Schwartz - -The package SPDE provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given system of -partial differential equations. In many cases the determining system is -solved completely automatically. In other cases the user has to provide -additional input information for the solution algorithm to terminate. - - -\endsection -\xitem[SPECFN] -SPECFN (page 185) - -\endsection -\xitem[SPECFN package] -SPECFN package (page 391) - -\endsection -\xitem[SPECFN2] -SPECFN2 (page 187) - -\endsection -\xitem[spherical coordinates] -spherical coordinates (pages 265, 355) - -\endsection -\item[SPLIT_FIELD] -SPLIT_FIELD function (page 227) - -SPLIT_FIELD is part of the ARNUM package for algebraic numbers. It -calculates a primitive element of minimal degree for which a given -polynomial splits into linear factors. The algorithm as described by -Trager. - -Example: - load arnum; - split!_field(x**3-3*x+7); - - *** Splitting field is generated by: - - 6 4 2 - A5 - 18*A5 + 81*A5 + 1215 - - - - 4 2 - {1/126*A5 - 5/42*A5 - 1/2*A5 + 2/7, - - - 4 2 - - (1/63*A5 - 5/21*A5 + 4/7), - - - 4 2 - 1/126*A5 - 5/42*A5 + 1/2*A5 + 2/7} - - - for each j in ws product (x-j); - - 3 - X - 3*X + 7 - - -\endsection -\item[SPUR] -SPUR (page 210) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\xitem[SQFRF] -SQFRF (page 373) - -\endsection -\item[SQRT] -SQRT (pages 76, 78) - -The SQRT operator returns the square root of its argument. - - SQRT(expression) - -expression can be any REDUCE scalar expression. - -Examples: -sqrt(16*a^3); 4*SQRT(A)*A -sqrt(17); SQRT(17) -on rounded; -sqrt(17); 4.12310562562 -off rounded; 2 -sqrt(a*b*c^5*d^3*27); 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D - -SQRT checks its argument for squared factors and removes them. - -Numeric values for square roots that are not exact integers are given -only when ROUNDED is on. - -Please note that SQRT(A**2) is given as A, which may be incorrect if A -eventually has a negative value. If you are programming a calculation -in which this is a concern, you can turn on the PRECISE switch, which -causes the absolute value of the square root to be returned. - -\endsection -\xitem[Standard form] -Standard form (page 198) - -\endsection -\xitem[Standard quotient] -Standard quotient (page 198) - -\endsection -\xitem[Statement] -Statement (page 53) - -\endsection -\xitem[Stirling Numbers] -Stirling Numbers (page 185, 394) - -\endsection -\item[STIRLING1] -STIRLING1 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -first kind, i.e. the number of permutations of n symbols which have -exactly m cycles (divided by (-1)**(n-m)). - - STIRLING1(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling1 (17,4); -87077748875904 - - GAMMA(N + 1) - Stirling1 (n,n-1); ----------------- - 2*GAMMA(N - 1) - -The operator STIRLING1 evaluates the Stirling numbers of the first -kind by rulesets for special cases or by a computing the closed form, -which is a series involving the operators BINOMIAL and STIRLING2. - -\endsection -\item[STIRLING2] -STIRLING2 (pages 185, 394) - -The STIRLING1 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. - - STIRLING2(integer,integer) - -Examples: - load_package specfn; (SPECFN) - Stirling2 (17,4); 694337290 - GAMMA(N + 1) - Stirling2 (n,n-1); ---------------- - 2*GAMMA(N - 1) - -The operator STIRLING2 evaluates the Stirling numbers of the second -kind by rulesets for special cases or by a computing the closed form. - -\endsection -\item[String] -String (page 37)) -A STRING is any collection of characters enclosed in double quotation -marks ("). It may be used as an argument for a variety of commands -and operators, such as IN, REDERR and WRITE. -Examples: -write "this is a string"; this is a string -write a, " ", b, " ",c,"!"; A B C! - -\endsection -\item[STRUCTR] -STRUCTR (pages 112, 113) - -The STRUCTR operator breaks its argument expression into named -subexpressions. - - STRUCTR(expression [,identifier[,identifier ...]]) - -expression may be any valid REDUCE scalar expression. identifier may -be any valid REDUCE IDENTIFIER. The first identifier is the stem for -subexpression names, the second is the name to be assigned to the -structured expression. - -Examples: -structr(sqrt(x**2 + 2*x) + sin(x**2*z)); ANS1*ANS3 + ANS2 - - WHERE - - 1/2 - ANS3 := X - - 2 - ANS2 := SIN(X *Z) - - 1/2 - ANS1 := (X + 2) - -ans3; ANS3 -on fort; -structr((x+1)**5 + tan(x*y*z),var,aa); - VAR1=TAN(X*Y*Z) - AA=VAR1+X**5+5.*X**4+10.*X**3+10.*X**2+5.*X+1. - -The second argument to STRUCTR is optional. If it is not given, the -default stem ANS is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does -not store the names and their values unless the switch SAVESTRUCTR is -on. - -If a third argument is given, the structured expression as a whole is -named by this argument, when FORT is on. The expression is not stored -under this name. You can send these structured Fortran expressions to -a file with the OUT command. - -\endsection -\xitem[Structuring] -Structuring (page 97) - -\endsection -\xitem[Struve Functions] -Struve Functions (pages 185, 397) - -\endsection -\item[STRUVEH] -STRUVEH (pages 185, 397) - -The STRUVEH operator returns Struve's H function. - - STRUVEH(order,argument) - -Examples: -load_package specfn; (SPECFN) - - 3 - - BESSELJ(---,X) - 2 -struveh(-3/2,x); ------------------- - I - - -There is currently no numeric support for the operator STRUVEH. - -\endsection -\item[STRUVEL] -STRUVEL (pages 185, 397) - -The STRUVEL operator returns the modified Struve L function . - - STRUVEL(order,argument) - -Examples: - load_package specfn; (SPECFN); - 3 - struvel(-3/2,x); BESSELI(---,X) - 2 - -There is currently no numeric support for the operator STRUVEL. - -\endsection -\xitem[Sturm Sequences] -Sturm Sequences (page 369) - -\endsection -\item[SUB] -SUB (page 137) - -The SUB operator substitutes a new expression for a kernel in an -expression. - - SUB(kernel=expression {,kernel=expression} expression) - or - SUB({kernel=expression, kernel=EXPRESSION},expression}) - -kernel must be a KERNEL, expression can be any REDUCE scalar -expression. - -Examples: -sub(x=3,y=4,(x+y)**3); 343 -x; X -sub({cos=sin,sin=cos},cos a+sin b} COS(B) + SIN(A) - -Note in the second example that operators can be replaced using the -SUB operator. - -\endsection -\xitem[SUCH THAT] -SUCH THAT (page 142) - -\endsection -\item[SUM] -SUM (pages 57, 58, 187) - -The operator SUM returns -the indefinite or definite summation of a given expression. - - -SUM(expr,k[,lolim [,uplim ]]) - - -where expr is the expression to be added, k is the -control variable (a KERNEL), and lolim and uplim -uplim are the optional lower and upper limits. If uplim is -not supplied the upper limit is taken as k. The GOSPER -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. - -Examples: - 2 2 -sum(4n**3,n); N *(N + 2*N + 1) - -sum(2a+2k*r,k,0,n-1); N*(2*A + N*R - R) - -\endsection -\xitem[SUM-SQ] -SUM-SQ (page 404) - -\endsection -\xitem[SVEC] -SVEC (page 355) - -\endsection -\xitem[Switch] -Switch (pages 68, 69) - -\endsection -\item[SYMBOLIC] -SYMBOLIC (page 191) - -The SYMBOLIC command changes REDUCE's mode of operation to symbolic. -When SYMBOLIC is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the LISP command. - -Examples: -symbolic; NIL -cdr '(a b c); (B C) -algebraic; -x + symbolic car '(y z); X + Y - -\endsection -\xitem[Symbolic mode] -Symbolic mode (pages 191, 193, 197, 198) - -\endsection -\xitem[Symbolic procedure] -Symbolic procedure (page 196) - -\endsection -\item[SYMMETRIC] -SYMMETRIC (page 93) - -When an operator is declared SYMMETRIC, its arguments are reordered -to conform to the internal ordering of the system. - - SYMMETRIC identifier{,identifier} - -identifier is an identifier that has been declared an operator. - -Examples: -operator m,n; -symmetric m,n; -m(y,a,sin(x)); M(SIN(X),A,Y) -n(z,m(b,a,q)); N(M(A,B,Q),Z) - -If identifier has not been declared to be an operator, the flag -SYMMETRIC is still attached to it. When identifier is subsequently -used as an operator, the message - DECLARE identifier OPERATOR ? (Y OR N) -is printed. If the user replies Y, the symmetric property of the -operator is used. - -\endsection -\xitem[system precision] -system precision (page 374) - -\endsection -\item[T] -T (page 37) - -The constant T stands for the truth value true. It cannot be used as -a scalar variable in a BLOCK, as a looping variable in a FOR statement -or as an OPERATOR name. - -\endsection -\item[TAN] -TAN (pages 76, 78, 81) - -The TAN operator returns the tangent of its argument. - - TAN(expression) or TAN simple_expression - -expression is any valid scalar REDUCE expression, simple_expression is -a single identifier or begins with a prefix operator name. - -Examples: -tan a; TAN(A) -tan(pi/3); SQRT(3) -on rounded; -tan(pi/3); 1.73205080757 - -TAN returns a numeric value only if ROUNDED is on. Then the tangent -is calculated to the current degree of floating point accuracy. - -When ON ROUNDED is in force, no check is made to see if the argument -to TAN is a multiple of pi/2, for which the tangent goes to positive -or negative infinity. (Of course, since REDUCE uses a fixed-point -representation of pi/2, it produces a large but not infinite number). -You need to make a check for multiples of pi/ in any program you use -that might possibly ask for the tangent of such a quantity. - -\endsection -\xitem[tangent vector] -tangent vector (page 252) - -\endsection -\item[TANH] -TANH (pages 76, 78) - -The TANH operator returns the hyperbolic tangent of its argument. The -derivative of TANH and some simple transformations are known to the -system. - - TANH(expression) or TANH simple_expression - -expression may be any scalar REDUCE expression, not an array, matrix -or vector expression. simple_expression must be a single identifier or -begin with a prefix operator name. - -Examples: -tanh b; TANH(B) -tanh(0); 0 - 2 -df(tanh(x*y),x); Y*( - TANH(X*Y) + 1) - 2*X -int(tanh(x),x); LOG(E + 1) - X -on rounded; -tanh 2; 0.964027580076 - -You may attach further functionality by defining its inverse (see -ATANH). A numeric value is not returned by TANH unless the switch -ROUNDED is on and its argument evaluates to a number. - -\endsection -\item[TAYLOR] -TAYLOR (page 188, 406) - -The TAYLOR operator is used for expanding an expression into a Taylor -series. - -TAYLOR(expression, var, expression, number) -TAYLOR(expression, var, expression, number {,var, expression, number}) - -expression can be any valid REDUCE algebraic expression. var must be -a KERNEL, and is the expansion variable. The expression following it -denotes the point about which the expansion is to take place. number -must be a non-negative integer and denotes the maximum expansion -order. If more than one triple is specified TAYLOR will expand its -first argument independently with respect to all the variables. Note -that once the expansion has been done it is not possible to calculate -higher orders. - -Instead of a KERNEL, var may also be a list of kernels. In this case -expansion will take place in a way so that the sum of the degrees of -the kernels does not exceed the maximum expansion order. If the -expansion point evaluates to the special identifier INFINITY, TAYLOR -tries to expand in a series in 1/var. - -The expansion is performed variable per variable, i.e. in the example -below by first expanding exp(x^2+y^2) with respect to x and then -expanding every coefficient with respect to y. - -Examples: - 2 2 2 2 3 3 -taylor(e^(x^2+y^2),x,0,2,y,0,2); 1 + Y + X + Y *X + O(X ,Y ) - - 2 2 3 -taylor(e^(x^2+y^2),{x,y},0,2); 1 + Y + X + O({X,Y} ) - -taylor(x*y/(x+y),x,0,2,y,0,2); ***** Not a unit in argument to quottaylor - -Note that it is not generally possible to apply the standard REDUCE -operators to a Taylor kernel. For example, PART, COEFF, or COEFFN -cannot be used. Instead, the expression at hand has to be converted -to standard form first using the TAYLORTOSTANDARD operator. - -Differentiation of a Taylor expression is possible. If you -differentiate with respect to one of the Taylor variables the order -will decrease by one. - -Substitution is a bit restricted: Taylor variables can only be -replaced by other kernels. There is one exception to this rule: you -can always substitute a Taylor variable by an expression that -evaluates to a constant. Note that REDUCE will not always be able to -determine that an expression is constant: an example is sin(acos(4)). - -Only simple taylor kernels can be integrated. More complicated -expressions that contain Taylor kernels as parts of themselves are -automatically converted into a standard representation by means of the -TAYLORTOSTANDARD operator. In this case a suitable warning is -printed. - -\endsection -\xitem[TAYLOR package] -TAYLOR package (page 405) - -\endsection -\xitem[Taylor series arithmetic] -Taylor series - arithmetic (page 407) - differentiation (page 408) - integration (page 408) - reversion (page 408) - substitution (page 408) - -\endsection -\item[TAYLORAUTOCOMBINE] -TAYLORAUTOCOMBINE switch (page 408) - -If you set TAYLORAUTOCOMBINE to ON, REDUCE automatically combines -Taylor expressions during the simplification process. This is -equivalent to applying TAYLORCOMBINE to every expression that contains -Taylor kernels. Default is ON. - -\endsection -\item[TAYLORAUTOEXPAND] -TAYLORAUTOEXPAND switch (pages 408, 409) - -TAYLORAUTOEXPAND makes Taylor expressions ``contagious'' in the sense -that TAYLORCOMBINE tries to Taylor expand all non-Taylor -subexpressions and to combine the result with the rest. Default is -OFF. - -\endsection -\item[TAYLORCOMBINE] -TAYLORCOMBINE (page 407) - -This operator tries to combine all Taylor kernels found in its -argument into one. Operations currently possible are: - -Addition, subtraction, multiplication, and division. -Roots, exponentials, and logarithms. -Trigonometric and hyperbolic functions and their inverses. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 3 -taylorcombine log hugo; X + O(X ) - - 1 2 3 -taylorcombine(hugo + x); (1 + X + ---*X + O(X )) + X - 2 -on taylorautoexpand; - 1 2 3 -taylorcombine(hugo + x); 1 + 2*X + ---*X + O(X ) - 2 - -Application of unary operators like LOG and ATAN will nearly always -succeed. For binary operations their arguments have to be Taylor -kernels with the same template. This means that the expansion -variable and the expansion point must match. Expansion order is not -so important, different order usually means that one of them is -truncated before doing the operation. - -If TAYLORKEEPORIGINAL is set to ON and if all Taylor kernels in its -argument have their original expressions kept TAYLORCOMBINE will also -combine these and store the result as the original expression of the -resulting Taylor kernel. There is also the switch TAYLORAUTOEXPAND. - -There are a few restrictions to avoid mathematically undefined -expressions: it is not possible to take the logarithm of a Taylor -kernel which has no terms (i.e. is zero), or to divide by such a -beast. There are some provisions made to detect singularities during -expansion: poles that arise because the denominator has zeros at the -expansion point are detected and properly treated, i.e. the Taylor -kernel will start with a negative power. (This is accomplished by -expanding numerator and denominator separately and combining the -results.) Essential singularities of the known functions (see above) -are handled correctly. - -\endsection -\item[TAYLORKEEPORIGINAL] -TAYLORKEEPORIGINAL (pages 406, 407, 409, 411) - -TAYLORKEEPORIGINAL, if set to ON, forces the TAYLOR and all Taylor -kernel manipulation operators to keep the original expression, -i.e. the expression that was Taylor expanded. All operations -performed on the Taylor kernels are also applied to this expression -which can be recovered using the operator TAYLORORIGINAL. Default is -OFF. - -\endsection -\item[TAYLORORIGINAL] -TAYLORORIGINAL (pages 411, 412) - -TAYLORORINAL can recover the original expression (the one that was -expanded) from the Taylor kernel that is given as its argument. - - TAYLORORIGINAL(expression) - TAYLORORIGINAL simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylororiginal hugo; - ***** Taylor kernel doesn't have an original part in taylororiginal - -on taylorkeeporiginal; - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - X -taylororiginal hugo; E - -An error is signalled if the argument is not a Taylor kernel or if the -original expression was not kept, i.e. if TAYLORKEEPORIGINAL was set -OFF during expansion. - -\endsection -\item[TAYLORPRINTORDER] -TAYLORPRINTORDER switch (page 409) - -TAYLORPRINTORDER, if set to ON, causes the remainder to be printed in -big-O notation. Otherwise, three dots are printed. Default is -ON. - -\endsection -\item[TAYLORPRINTTERMS] -TAYLORPRINTTERMS (pages 406, 412) - -Only a certain number of (non-zero) coefficients are printed. If there -are more, an expression of the form N TERMS is printed to indicate how -many non-zero terms have been suppressed. The number of terms printed -is given by the value of the shared algebraic variable -TAYLORPRINTTERMS. Allowed values are integers and the special -identifier ALL. The latter setting specifies that all terms are to be -printed. The default setting is 5. - -Examples: -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 5 5 - 1 + Y + ---*Y + X + Y *X + (4 TERMS) + O(X ,Y ) - 2 -taylorprintterms := all; - ALL -taylor(e^(x^2+y^2),x,0,4,y,0,4); - 2 1 4 2 2 2 1 4 2 1 4 1 2 4 - 1 + y + ---*y + x + y *x + ---*y *x + ---*x + ---*y *x - 2 2 2 2 - - 1 4 4 5 5 - + ---*y *x + O(x ,y ) - 4 - -\endsection -\item[TAYLORREVERT] -TAYLORREVERT (page 411) - -TAYLORREVERT allows reversion of a Taylor series of a function f, -i.e., to compute the first terms of the expansion of the inverse of f -from the expansion of f. - - TAYLORREVERT(expression, var, var) - -The first argument must evaluate to a Taylor kernel with the second -argument being one of its expansion variables. - -Examples: - 2 6 -taylor(u - u**2,u,0,5); U - U + O(U ) - 2 3 4 5 6 -taylorrevert(ws,u,x); X + X + 2*X + 5*X + 14*X + O(X ) - -\endsection -\item[TAYLORSERIESP] -TAYLORSERIESP (page 407) - -The TAYLORSERIESP operator may be used to determine if its argument is -a Taylor kernel. - - TAYLORSERIESP(expression) - TAYLORSERIESP simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -if taylorseriesp hugo then OK; OK -if taylorseriesp(hugo + y) then OK else NO; NO - -Note that this operator is subject to the same restrictions as, e.g., -ORDP or NUMBERP, i.e. it may only be used in boolean expressions in IF -or LET statements. -\endsection -\item[TAYLORTEMPLATE] -TAYLORTEMPLATE (pages 407, 412) - -The template of a Taylor kernel, i.e. the list of all variables with -respect to which expansion took place together with expansion point -and order can be extracted using - - TAYLORTEMPLATE(expression) - TAYLORTEMPLATE simple_expression - -The operator returns a list of lists with the three elements -(VAR,VAR0,ORDER). An error is signalled if the argument is not a -Taylor kernel. - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 -taylortemplate hugo; {{X,0,2}} - -\endsection -\item[TAYLORTOSTANDARD] -TAYLORTOSTANDARD (page 407) - -The TAYLORTOSTANDARD operator converts all Taylor kernels in its -argument into standard form and resimplifies the result. - - TAYLORTOSTANDARD(expression) - TAYLORTOSTANDARD simple_expression - -Examples: - 1 2 3 -hugo := taylor(exp(x),x,0,2); HUGO := 1 + X + ---*X + O(X ) - 2 - 2 - X + 2*X + 2 -taylortostandard hugo; -------------- - 2 -\endsection -\xitem[Terminator] -Terminator (page 53) - -\endsection -\item[THIRD] -THIRD (page 50) - -The THIRD operator returns the third item of a LIST. - THIRD(list) or THIRD list - - - -list must be a list containing at least three items to avoid an error -message. - -Examples: -alist := {a,b,c,d}; ALIST := {A,B,C,D} -third alist; C -blist := {x,{aa,bb,cc},y,z}; BLIST := {X,{AA,BB,CC},Y,Z}; -third second blist; CC -third blist; Y - -\endsection -\item[TIME] -TIME (page 68) - -When TIME is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. - -Examples: -on time; Time: 4940 ms - 2 -df(sin(x**2 + y),y); COS(X + Y ) - Time: 180 ms -solve(x**2 - 6*y,x); {X= - SQRT(Y)*SQRT(6), - X=SQRT(Y)*SQRT(6)} - Time: 320 ms - -When TIME is first turned on, the time since the beginning of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed -after the results of each command. Idle time or time spent typing in -commands is not counted. If TIME is turned off, the first reading -after it is turned on again gives the time elapsed since it was turned -off. The time printed is CPU or wall clock time, depending on the -system. - -\endsection -\item[TORDER] -TORDER (pages 296, 315, 316) - -The operator TORDER sets the actual term order. - -1. simple term order: - TORDER m - -where m is the name of a term order mode LEX term order, GRADLEX term -order, REVGRADLEX term order or another implemented parameterless -mode. - -2. stepped term order: - TORDER m,n - TORDER {m,n} - -where m is the name of a two step term order, one of GRADLEXGRADLEX -term order, GRADLEXREVGRADLEX term order, LEXGRADLEX term order or -LEXREVGRADLEX term order, and n is a positive integer. - -3. weighted term order - TORDER WEIGHTED, n,n,... - TORDER WEIGHTED, {n,n,...} - -where the n are positive integers, see weighted term order. - -TORDER sets the term order mode. The default mode is LEX. The -previous order mode is returned. - -\endsection -\item[TP] -TP (page 165) - -The TP operator returns the transpose of its MATRIX - argument. - TP identifier or TP(identifier) - -identifier must be a matrix, which either has had its dimensions set -in its declaration, or has had values put into it by MAT. - -Examples: -matrix m,n; -m := mat((1,2,3),(4,5,6))$ -n := tp m; N(1,1) := 1 - N(1,2) := 4 - N(2,1) := 2 - N(2,2) := 5 - N(3,1) := 3 - N(3,2) := 6 - -In an assignment statement involving TP, the matrix identifier on the -left-hand side is redimensioned to the correct size for the transpose. - -\endsection -\item[TPS] -TPS (pages 188, 330) - -Authors: Alan Barnes and Julian Padget - -A Truncated Power Series Package. - -This package implements formal Laurent series expansions in one -variable using the domain mechanism of REDUCE. This means that power -series objects can be added, multiplied, differentiated etc., like -other first class objects in the system. A lazy evaluation scheme -is used and thus terms of the series are not evaluated until they -are required for printing or for use in calculating terms in other -power series. The series are extendible giving the user the -impression that the full infinite series is being manipulated. The -errors that can sometimes occur using series that are truncated at -some fixed depth (for example when a term in the required series -depends on terms of an intermediate series beyond the truncation -depth) are thus avoided. - -\endsection -\xitem[TRA] -TRA (page 178) - -\endsection -\item[TRACE] -TRACE (page 166) - -The TRACE operator finds the trace of its MATRIX argument. - TRACE(expression) or TRACE simple_expression - -expression or simple_expression must evaluate to a square -matrix. - -Examples: -matrix a; -a := mat((x1,y1),(x2,y2))$ -trace a; X1 + Y2 - -The trace is the sum of the entries along the diagonal of a square matrix. -Given a non-matrix expression, or a non-square matrix, TRACE returns -an error message. - -\endsection -\xitem[tracing EXCALC] -tracing - EXCALC (page 266) - ODESOLVE (page 351) - ROOTS package (page 373) - SPDE package (page 380) - SUM package (page 404) - -\endsection -\item[TRALLFAC] -TRALLFAC - -When TRALLFAC is on, a more detailed trace of factoriser calls is -generated. - - -The TRALLFAC switch takes precedence over TRFAC if they are -both on. TRFAC gives a factorisation trace with less detail in it. -When the FACTOR switch is on also, all input polynomials are sent to -the factoriser automatically and trace information is generated. The -OUT command saves the results of the factoring, but not the trace. - - -\endsection -\item[TRFAC] -TRFAC (page 122) - -When TRFAC is on, a narrative trace of any calls to the factoriser is -generated. Default is OFF. - - -When the switch FACTOR is on, and TRFAC is on, every input -polynomial is sent to the factoriser, and a trace generated. With -FACTOR off, only polynomials that are explicitly factored with the -command FACTORIZE generate trace information. - -The OUT command saves the results of the factoring, but not -the trace. The TRALLFAC switch gives trace information to a -greater level of detail. - -\endsection -\item[TRGROEB] -TRGROEB (pages 299, 303) - -If TRGROEB is on, intermediate H polynomials are printed during a -GROEBNER or GROEBNERF calculation. - -\endsection -\xitem[TRGROEB1] -TRGROEB1 (pages 299, 303) - -\endsection -\xitem[TRGROEBR] -TRGROEBR (page 304) - -\endsection -\item[TRGROEBS] -TRGROEBS (pages 299, 303) - -If TRGROEBS is on, intermediate H and S polynomials are printed during -a GROEBNER or GROEBNERF calculation. - -\endsection -\item[TRIGFORM] -TRIGFORM (page 87) - -When FULLROOTS is on, SOLVE will compute the -roots of a cubic or quartic polynomial is closed form. When -TRIGFORM is on, the roots will be expressed by trigonometric -forms. Otherwise nested surds are used. Default is ON. - -\endsection -\item[TRINT] -TRINT (page 178) - -When TRINT is on, a narrative tracing various steps in the -integration process is produced. - -The OUT command saves the results of the integration, but not the -trace. - -\endsection -\item[TRNONLNR] -TRNONLNR - -When TRNONLNR is on, a narrative tracing various steps in -the process for solving non-linear equations is produced. - - -TRNONLNR can only be used after the solve package has been loaded -(e.g., by an explicit call of LOAD_PACKAGE). The OUT -command saves the results of the equation solving, but not the trace. - -\endsection -\xitem[TRODE] -TRODE (page 351) - -\endsection -\xitem[TRROOT] -TRROOT (page 373) - -\endsection -\xitem[TRSUM] -TRSUM (page 404) - -\endsection -\xitem[truncated power series] -truncated power series (page 413) - -\endsection -\xitem[TVECTOR command] -TVECTOR command (pages 249, 271) - -\endsection -\xitem[U(ALFA)] -U(ALFA) (page 379) - -\endsection -\xitem[U(ALFA] -U(ALFA,I) (page 379) - -\endsection -\item[UNTIL] -UNTIL (page 57) - -See the FOR loop construction. -\endsection -\xitem[User packages] -User packages (page 177) - -\endsection -\xitem[VARDF] -VARDF (pages 257, 271) - -\endsection -\xitem[Variable] -Variable (page 36) - -\endsection -\xitem[Variable elimination] -Variable elimination (page 181) - -\endsection -\xitem[variational derivative] -variational derivative (page 257) - -\endsection -\item[VARNAME] -VARNAME (pages 111, 112) - -The declaration VARNAME instructs REDUCE to use its argument as the -default Fortran (when FORT is on) or STRUCTR identifier and identifier -stem, rather than using ANS. - - VARNAME identifier - -identifier can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. - -Examples: -varname ident; IDENT -on fort; -x**2 + 1; IDENT=X**2+1. - -off fort,exp; 3 -structr(((x+y)**2 + z)**3); IDENT2 - where - 2 - IDENT2 := IDENT1 + Z - IDENT1 := X + Y - -EXP was turned off so that STRUCTR could show the structure. If EXP -had been on, the expression would have been expanded into a -polynomial. - -\endsection -\xitem[VDF] -VDF (page 359) - -\endsection -\xitem[VEC command] -VEC command (page 232) - -\endsection -\item[VECDIM] -VECDIM (page 212) - -The SPUR declaration removes the special exemption from trace -calculations that was declared by NOSPUR, in high-energy physics -calculations. - SPUR line-id{,line-id} - -line-id must be a line-identifier that has previously been declared -NOSPUR. - -\endsection -\item[VECTOR] -VECTOR (High Energy Physics) (page 208) - -The VECTOR declaration declares that its arguments are of type VECTOR. - VECTOR identifier{,identifier} - -identifier must be a valid REDUCE identifier. It may have already -been used for a matrix, array, operator or scalar variable. After an -identifier has been declared to be a vector, it may not be used as a -scalar variable. - -Vectors are special entities for high-energy physics calculations. -You cannot put values into their coordinates; they do not have -coordinates. They are legal arguments for the high-energy physics -operators EPS, G and . (dot). Vector variables are used to represent -gamma matrices and gamma matrices contracted with Lorentz 4-vectors, -since there are no Dirac variables per se in the system. Vectors do -follow the usual vector rules for arithmetic operations: + and - -operate upon two or more vectors, producing a vector; * and / cannot -be used between vectors; the scalar product is represented by the -. operator; and the product of a scalar and vector expression is well -defined, and is a vector. - -You can represent components of vectors by including representations -of unit vectors in your system. For instance, letting E0 represent -the unit vector (1,0,0,0), the command - -V1.E0 := 0; - -would set up the substitution of zero for the first component of the -vector V1. - -Identifiers that are declared by the INDEX and MASS declarations are -automatically declared to be vectors. - -The following errors can occur in calculations using the high energy -physics package: - -A REPRESENTS ONLY GAMMA5 IN VECTOR EXPRESSIONS -You have tried to use A in some way other than gamma5 in a high-energy -physics expression. - -GAMMA5 NOT ALLOWED UNLESS VECDIM IS 4 -You have used gamma_5 in a high-energy physics computation involving a -vector dimension other than 4. - -ID HAS NO MASS -One of the arguments to MSHELL has had no mass assigned to it, in -high-energy physics calculations. - -MISSING ARGUMENTS FOR G OPERATOR -A line symbol is missing in a gamma matrix expression in high-energy physics -calculations. - -UNMATCHED INDEX list -The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. - -\endsection -\xitem[vector] -vector , integration 233 - addition (page 356) - cross product (page 357) - differentiation (page 233) - division (page 357) - dot product (page 357) - exponentiation (page 357) - inner product (page 357) - modulus (page 357) - multiplication (page 357) - subtraction (page 356) - -\endsection -\xitem[vector algebra] -vector algebra (page 231) - -\endsection -\xitem[VECTORADD] -VECTORADD (page 356) - -\endsection -\xitem[VECTORCROSS] -VECTORCROSS (page 357) - -\endsection -\xitem[VECTORDIFFERENCE] -VECTORDIFFERENCE (page 356) - -\endsection -\xitem[VECTOREXPT] -VECTOREXPT (page 357) - -\endsection -\xitem[VECTORMINUS] -VECTORMINUS (page 356) - -\endsection -\xitem[VECTORPLUS] -VECTORPLUS (page 356) - -\endsection -\xitem[VECTORQUOTIENT] -VECTORQUOTIENT (page 357) - -\endsection -\xitem[VECTORRECIP] -VECTORRECIP (page 357) - -\endsection -\xitem[VECTORTIMES] -VECTORTIMES (page 357) - -\endsection -\xitem[VERBOSELOAD switch] -VERBOSELOAD switch (page 409) - -\endsection -\xitem[VINT] -VINT (page 360) - -\endsection -\xitem[VMOD] -VMOD (page 357) - -\endsection -\xitem[VMOD operator] -VMOD operator (page 233) - -\endsection -\xitem[VOLINT] -VOLINT (page 360) - -\endsection -\xitem[VOLINTEGRAL function] -VOLINTEGRAL function (page 237) - -\endsection -\xitem[VOLINTORDER vector] -VOLINTORDER vector (page 237) - -\endsection -\xitem[VORDER] -VORDER (page 359) - -\endsection -\xitem[VOUT] -VOUT (page 355) - -\endsection -\xitem[VSTART] -VSTART (page 354) - -\endsection -\xitem[VTAYLOR] -VTAYLOR (page 359) - -\endsection -\xitem[wedge] -wedge (page 271) - -\endsection -\item[WEIGHT] -WEIGHT (page 152) - -The WEIGHT command is used to attach weights to kernels for asymptotic -constraints. - - WEIGHT kernel = number - -kernel must be a REDUCE KERNEL, number must be a positive integer, not -0. - -Examples: 4 3 2 2 3 4 -a := (x+y)**4; A := X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -a; X -wtlevel 10; - 2 2 2 -a; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -Weights and WTLEVEL are used for asymptotic constraints, where -higher-order terms are considered insignificant. - -Weights are originally equivalent to 0 until set by a WEIGHT command. -To remove a weight from a kernel, use the CLEAR command. Weights once -assigned cannot be changed without clearing the identifier. Once a -weight is assigned to a kernel, it is no longer a kernel and cannot be -used in any REDUCE commands or operators that require kernels, until -the weight is cleared. Note that terms are ordered by greatest -weight. - -The weight level of the system is set by WTLEVEL, initially at 2. -Since no kernels have weights, no effect from WTLEVEL can be seen. -Once you assign weights to kernels, you must set WTLEVEL correctly for -the desired operation. When weighted variables appear in a term, -their weights are summed for the total weight of the term (powers of -variables multiply their weights). When a term exceeds the weight -level of the system, it is discarded from the result expression. - -\endsection -\xitem[weighted ordering] -weighted ordering (page 316) - -\endsection -\item[WHEN] -WHEN (page 147) - -The WHEN operator is used inside a RULE to make the -execution of the rule depend on a boolean condition which is -evaluated at execution time. For the use see RULE. - -\endsection -\item[WHERE] -WHERE (page 148) - -The WHERE operator provides an infix notation for one-time -substitutions for kernels in expressions. - - expression WHERE kernel = expression{,kernel = expression} - -expression can be any REDUCE scalar expression, kernel must be a -KERNEL. Alternatively a RULE or a RULE LIST can be a member of the -right-hand part of a WHERE expression. - -Examples: -x**2 + 17*x*y + 4*y**2 where x=1,y=2; - 51 -for i := 1:5 collect x**i*q where q= for j := 1:i product j; - 2 3 4 5 - {X,2*X ,6*X ,24*X ,120*X } - 2 3 -x**2 + y + z where z=y**3,y=3; X + Y + 3 - -Substitution inside a WHERE expression has no effect upon the values -of the kernels outside the expression. The WHERE operator has the -lowest precedence of all the infix operators, which are lower than -prefix operators, so that the substitutions apply to the entire -expression preceding the WHERE operator. However, WHERE is applied -before command keywords such as THEN, REPEAT, or DO. - -A RULE or a RULE SET in the right-hand part of the WHERE expression -act as if the rules were activated by LET immediately before the -evaluation of the expression and deactivated by CLEARRULES immediately -afterwards. - -WHERE gives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression -can be a command to be evaluated. The substitute assignments are made -in parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. -WHERE can also be used to define auxiliary variables in PROCEDURE -definitions. - -\endsection -\item[WHILE] -WHILE (pages 59, 61, 63, 65) - -The WHILE command causes a statement to be repeatedly executed until a -given condition is true. If the condition is initially false, the -statement is not executed at all. - - WHILE condition DO statement - -condition is given by a logical operator, statement must be a single -REDUCE statement, or a GROUP (<<...>>) or BEGIN...END block. - -Examples: -a := 10; A := 10 -while a <= 12 do <>; 10 - 11 - 12 -while a < 5 do <>; .... nothing is printed - -\endsection -\xitem[WHITTAKERM] -WHITTAKERM (pages 185, 397) - -\endsection -\item[WHITTAKERW] -WHITTAKERW (pages 185, 397) - -The WHITTAKERW operator returns Whittaker's W function. - - WHITTAKERW(parameter,parameter,argument) - -Examples: -load_package specfn; (SPECFN) - 1 - 4*SQRT(2)*KUMMERU(---,5,2) - 2 -WhittakerW(2,2,2); ---------------------------- - E - -Whittaker's W function is one of the Confluent Hypergeometric functions. -For reference see the HYPERGEOMETRIC operator. - -\endsection -\xitem[Workspace] -Workspace (page 99) - -\endsection -\item[WRITE] -WRITE (page 105)) - -The WRITE command explicitly writes its arguments to the output device -(terminal or file). - - WRITE item{,item} - -item can be an expression, an assignment or a STRING enclosed in -double quotation marks ("). - -Examples: -write a, sin x, "this is a string"; ASIN(X)this is a string -write a," ",sin x," this is a string"; A SIN(X) this is a string -if not numberp(a) then write "the symbol ",a; the symbol A -array m(10); -for i := 1:5 do write m(i) := 2*i; - M(1) := 2 - M(2) := 4 - M(3) := 6 - M(4) := 8 - M(5) := 10 -m(4); 8 - -The items specified by a single WRITE statement print on a single line -unless they are too long. A printed line is always ended with a carriage -return, so the next item printed starts a new line. - -When an assignment statement is printed, the assignment is also made. -This allows you to get feedback on filling slots in an array with a -FOR statement, as shown in the last example above. - -\endsection -\item[WS] -WS (pages 29, 158) - -The WS operator alone returns the last result; WS with a number -argument returns the results of the REDUCE statement executed after -that numbered prompt. - - WS or WS(number) - -number must be an integer between 1 and the current REDUCE prompt number. - -Examples: -(In the following examples, unlike most others, the numbered -prompt is shown.) -1: df(sin y,y); COS(Y) - 2 -2: ws^2; COS(Y) - -3: df(ws 1,y); -SIN(Y) - -WS and WS(number) can be used anywhere the expression they stand for -can be used. Calling a number for which no result was produced, such -as a switch setting, will give an error message. - -The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you -do a differentiation, producing a result expression, then change -several switches, the operator WS; returns the results of the -differentiation. The current workspace (WS) can also be used inside -files, though the numbered workspace contains only the IN command that -input the file. - -There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second -stores parsed input, ready to execute and accessible by INPUT. The -third stores results, when they are produced by statements, which are -accessible by the WS n operator. If your session is very long, -storage space begins to fill up with these expressions, so it is a -good idea to end the session once in a while, saving needed -expressions to files with the SAVEAS and OUT commands. - -An error message is given if a reference number has not yet been used. - -\endsection -\item[WTLEVEL] -WTLEVEL (page 152) - -In conjunction with WEIGHT, WTLEVEL is used to implement asymptotic -constraints. Default value is 2. - - WTLEVEL integer - -integer is a positive integer that is the greatest weight term to be -retained in expressions involving kernels with weight assignments. - -Examples: 4 3 2 2 3 4 -(x+y)**4; X + 4*X *Y + 6*X *Y + 4*X*Y + Y -weight x=2,y=3; -wtlevel 8; - 4 -(x+y)**4; X -wtlevel 10; - 2 2 2 -(x+y)**4; X *(6*Y + 4*X*Y + X ) -int(x**2,x); ***** X invalid as KERNEL - -WTLEVEL is used in conjunction with the command WEIGHT to enable -asymptotic constraints. Weight of a term is computed by multiplying -the weights of each variable in it by the power to which it has been -raised, and adding the resulting weights for each variable. If the -weight of the term is greater than WTLEVEL, the term is dropped from -the expression, and not used in any further computation involving the -expression. - -Once a weight has been attached to a KERNEL, it is no longer -recognised by the system as a kernel, though still a variable. It -cannot be used in REDUCE commands and operators that need kernels. -The weight attachment can be undone with a CLEAR command. WTLEVEL can -be changed as desired. - -\endsection -\xitem[X(I)] -X(I) (page 379) - -\endsection -\xitem[XI(I)] -XI(I) (page 379) - -\endsection -\item[XPND command] -XPND command (pages 253, 254, 271) - -(Part of the EXCALC package) - -There are two forms of the XPND command, which controls the use of the -product rule for the d operator and the expansion into partial -derivatives. The default for both these is ON. - - xpnd d; - xpnd @; - -Example: - load_package excalc; *** ^ redefined - (excalc) - pform x=0,y=k,z=m; - K - d(y^z); ( - 1) *Y^d Z + d Y^Z - - noxpnd d; - d(y^z); d(Y^Z) - - -See also NOXPND - -\endsection -\item[ZETA] -ZETA (pages 185, 395) - -The ZETA operator returns Riemann's Zeta function, - - Zeta (z) := sum(1/(k**z),k,1,infinity) - - ZETA(expression) - -Examples: - load_package specfn; (SPECFN) - 2 - PI - Zeta(2); ----- - 6 - on rounded; - Zeta 1.01; 100.577943338 - -Numerical computation for the Zeta function for arguments close to 1 -are tedious, because the series is converging very slowly. In this -case a formula (e.g. found in Bender/Orzag: Advanced Mathematical -Methods for Scientists and Engineers, McGraw-Hill) is used. - -No numerical approximation for complex arguments is done. - -\endsection -\xitem[ZETA(ALFA,I)] -ZETA(ALFA,I) (page 379) - -\endsection DELETED r37/packages/arnum/arnum.dvi Index: r37/packages/arnum/arnum.dvi ================================================================== --- r37/packages/arnum/arnum.dvi +++ /dev/null cannot compute difference between binary files DELETED r37/packages/arnum/arnum.ps Index: r37/packages/arnum/arnum.ps ================================================================== --- r37/packages/arnum/arnum.ps +++ /dev/null @@ -1,2490 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.90a Copyright 2002 Radical Eye Software -%%Title: arnum.dvi -%%CreationDate: Wed Jul 09 08:51:48 2003 -%%Pages: 6 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMR17 CMR12 CMR10 CMMI10 CMR8 CMMI8 CMSY8 CMSY10 CMBX10 -%%+ CMTI10 CMTT10 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips arnum -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2003.07.09:0851 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics -exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict -end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ -dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 -roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def -dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} -if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} -def end - -%%EndProcSet -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 58 /colon put -dup 59 /semicolon put -dup 83 /S put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 123 /braceleft put -dup 125 /braceright put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC -FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B -984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384 -46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41 -89DAB7CE91F2FC0CAF6DDAD09992D56F72299068192610EE3DE5DB7CF6366B4C -D74F414484DCCDBA449BFAADA39D0F27574E604E31CB513B18E3821A33076151 -C2BCB6E957C77A0AECA48C587ABB5E8C7624D2CD1BC0281FE40CC2D3DD1B36FC -CC468011824DDFAA0539291B9B8004F29F21B2A9D8EA7F0DAD273A107AD30872 -AA1D431330C9ACAD4CCF8496D39021E50B89E6C76EA6E4A377AEF9264FA03610 -C2764985C02FDDE5DC2794707DC72EA36F645E4951E3A798A77A0AF822B1E291 -3B11C1EA40ECC20ECD7E0FCE86BA25BE17D4CE5A775DF4F288C71B517DAD29B7 -95E29D421781966838195A2377289BD2F3ACDF4725CEC703953E51370D85A9CB -D90DD7BE04CA30617A1E25C98ED606433DFF2E4721838C9394B1FBF803C25D85 -AAFC79981190949B4B6A3297CFBF7A7DF2864B176A8EDDCBB2E5BABEE6736B0D -4844CF197C4D264AE1012A5EAB2FDF42E184BCC24A0D1A2243AED468CEF04C3A -1EF126E2E6D2C7661CB832BF1C814D29DA8588C7E41D483DD338EFE03DDAF602 -44F2AD705801B18BCF5655EB6441317B433F27E5E906660B4BD8389E87686706 -63C1A3ECD47AB26795567FF68B5D9EEFC1BEBFA031B4F638378A1FF94F4E83F2 -9C6A288628FC17A41F31F8147A7C3F74FBCA043F9AEFAA99AAAD74E02F0E70E7 -CFA4ADE3FA6726D2D54BD5A5125D577BAA769F3FF565C7069CD1B72CFD6A4E07 -545CDD90E798CC331281793CD79660C4954F2DB36197526AD773CC4FE56023EB -D0F184B325D61DCD0404FD8EE0A9957276A165B7E381CE8C4CC8D6DE768246A8 -1F791E89F12E0DFF711927623712D3AF396126ECF16AE7CAF09C7936656AD6B2 -1DF528FB47181884512221D583FD79349A6EEF072EDB437577227FC2601BFC3D -AFC8A1EC3AC2D43E99D9499513B15A57C31D965A96603F3695C842F98D9D2214 -B4AAF4F49A52D20412419B482C743FF64AA51E391434A70BF6F8310EEE54432B -29B489D54EB36BDC4330147B7E77B52DD6359295175C19522BF9866EB38DFA96 -68156D5BA54FA5A9361DD2D6137EEA78E1F302B457558AC77E38B9F39DDF0BF3 -A102786CF22D3509FB50BA6624F44E5DCF9DA23F007084009D2D4CBDA8BCFAC9 -71E9B767E789F203AD77114389F695A151ED7D5F69AC82F8BF34319752333B17 -762B8D9BF16F543C32CE4E6FFC18B8F0D55754A24CC5F4EDC1616A5C4637ACBA -BCAFD345E13D1B35861AE5C64FD80861E7BD6D06FA2D8985DB162B86780F22B5 -3A0923F04D91F60DFBBDC8983B7BB98F353697F255931538730274E715FE4951 -15F46414C6A5CD18089F072E9C95CCA6FB0255ACB34BCE671464D8B254929FCC -BBC0C9D0114C8B2CC6FCC7813A6F4CFF3047B3E4C267B6B1C92D685DEFB052F4 -3050A296B17F4385C2E2E27CD9A04A92962AD4CC6AAE282B12E0CF9D894157B0 -8274217467318D2AA669D6E4E13333D3FFDDA197737367C3F765366667A1F4A7 -B0B615E855DD1BAD8B8F42DBF99B20975EAE1F90E4B534B0304BB13CDE296110 -4736A44D33ED4529DB5F9B7842B3DC0A9D38C79D8FB93005D8F7E9AB955737A2 -EE4181095BF4FDFE4C6CA50EA278C878E7D7B9663B7BE1B9D0A30458B0D5F379 -DF4F07EAD5510107AE3D51CB20926E57998522974D946F39B39A4537A103A4E4 -DB49A66108FF6AF93DE38FC22F7BCFE79AC2D54CC34525DDD2B2CC9FB249BA37 -219B199D9DB786A1B414666A64C2789890B59A724467B473D91D04FB784BBB67 -44062335C5D1576DFECABDBE9190DDB0400A735C0514839E2CDF2FB84EB6B51D -4B0F9383EA1812303D1196C085934E727C961CD25F83654A2BA8B6D6C86614C2 -6E07F99A09ED5E6C3FF849E29A9DD40A302C6D66F4BA5F55278B3D229A18871C -283719B8457CE945ACAB0439A013AFEECD1AA837E25550AE7C51FB714D2AD16D -A1A42564CBB31D4F49A54FA9359FC2CB9F4D13EC27B6AD51695BE58E1D058875 -09B914DA6DE0056FA5FBE3C7AC6B0DECF74CAC262523E779743891BC2C5D9899 -B5BF788A1A4F1D90EDC454FEB236F5C5D8A1EE52BD8920C84BAA1DF2A5254C93 -B875C4B417E2AF7C4E3B28A1AF84D31EA2BA5FD303D51F1055025C16E348B6C5 -A7C28E511AFA2CE2A903E2FC88B01CCE1DF18BA3C1D0ABD743C39CFEA7A35761 -BB66950CEE07AA03E8D0BDCF3B3DD171A0C9B8A0A69EBA464EFEADAAFEA4ABEA -A6ABB5BE7E33B6CEDCBD646F5C96412BCC17613D314B3605A0EFCDCDD7E1158A -7CCE08F216B73A31FC0FACA21A5F695EA58281B9ACC532249C14E007FDDDDB27 -80C51FEBCE5CD34860107F3EC47270998A76EAF525F46973450C1A5BDEC04788 -3ACC4E3158A7976C6C2DEF51654F9C4673B594ECA0C8B346783166388C8B2711 -F52002457E0ACDF46EE888300074846B015F56F34826785042662F6CF29A6543 -D277B4808B6D25A03E3A5E4B557973EEFF662454BF848DC032BFAE8969E03451 -B24A8565305DC878BBB4F71A6EAB34A6BD823BF5639E8BBF2EB4222B1EB4A4D7 -D90FC227A49ADD8EC060AEC57408809CE7381F6C8B56B0915B7903674D829F2F -B4A2789D12F44B4B24BE3B6842686697E8B4314890D453505E612E007BA9D613 -1651DE6FC63BF01D1AE6CD21FB0CCF6BB39A324B88B1B5A3A47E8501FF38FF47 -49ECF2DFFBBDED86D1ED085952EE550F7E361A582B8FDA00BF86413A7F9185CA -FDB40E7872BB3FD815798AA5B177362026B232901FCB22762010E5F8B6D14ECD -C1D1AD1C73C0F921FF91D0DD552A0FD3AFE609FDE5EC107801DB0728EED88C80 -ADA9EB65E591937A9FA57F9E4D843EF7476A44912C81E1CE9371D6B45FEAA105 -BD1DBEA72EBA16CEBE153791C71A2AECC5DD907988B2D7A24C1FDFD9C5661AB0 -690E1217B781B7ED681F9718573D6AE700F011CF5B7DAFAB677D413BF1B0F7A0 -D473D85B4C1A591FFA095A967C7D1B0036FD94BD2FE4C9DCB9F0AA4A86E5882C -6ECC6A1FE60B8E75352A5D778C809551750E6EE678B36F9920C72F13754574B8 -8A851F0FE70FCFBB59DEBAE377EEE0779FEA7ACA433FB78BBDBF2CA785A4E8FA -EA1B0EB57A24C5A0B96E7B5E74FFB14F8316DD43F613E812A1D550D0606D462D -6B49E1CF675432DE98E0299A41B24A62352A0C6A84BC48DFBD5AB5A262148528 -15A3542022D0975902B828B7FE04C06FEEFB02BC5ECF515F60D03F2ED9762493 -A43D24CEC6E94811E38147E033F319FCD5D1F1CD48061B716D922220BC46E1FF -519F5BC801E3AEC388EAB7260AA25E6E471765A899CFF15D016F8D379228E685 -785D9225773C7ECABA9C8E54446BB417C27A27EA4C6A1B1FDF2CBC9FF0981E99 -7A981557F145C02B8561F8C5F68DE92EA50089D016CD8707842A50830108E73E -ED6F61CD49BB918FB6652D23E9AC564E05F6C804FEFF4BDF9E1B254E835CA5E7 -2B9CAE072C553A40F0B47EB8FF7D4458223EDE184E93523D00144C5D77D2CD92 -91A41A9A80AA23FCCA53645805AEB346EFD1E6C6003F6BD75DEEA7F088B3AC69 -3B9169D57841CAF39E1831D499C2742C32A9C2D391B117331C00F6ACBF7B3219 -1E727300EBCB31AD969EDE6A59BCA2E3F71ACCB0D720E0832DA18588E66FDA6C -6DB8BD854E12E6AEE0ED05713A0E351EB1561D46DE4C0B5CA2CD72FAC6E67790 -A98F6CE278478F2DA27C47014C6C9BC0D554237AEC7381EAA973653AA8E861D4 -855F5ED1EC4E3232713DF6B9B1C6483FF9129BEA5A0B353D1978C7D093C679FB -7F9583E8471FD533092399CBEFAD5F8014DF42158DAF378D1F77E59E26CD652B -2AA4A4DDC19A17E72979F3C1115D8C1762852C4D60BD37418DA1E36D9EAD8AD3 -4D78160D8FB83597AA5AB22018BB2720419535984CFA2C2F646067396FE7403B -DAC9F63912B6C4EDFCD4A9C88FE36B36E1C3DD5AD185DD77071C17BC7154B059 -2E1A5A36DD8FBDB21ACCB4555834E3C372239820C94D1104191071515975EA4D -855BA6C15DCA9957D7C5AB2AD857FD0603E5BAFC8A44DBFC727FD6CFCE566460 -B4AFB524957413F52A686350F2410137E326AC27732AF2120648F7A3260A4D80 -826B5CA975377CEAB7C5F7A58DAAC6CBC623BF39B916F4A45D9E0544A5F4B61F -3D3E037C53F3D1FE7CDDAAAAEA63298290457053CEA87B37B337A3D398ED9C91 -8BBADFFCDD865D60F62F09CF2E40B79DA5A95DD5BF41AAA792CBE996CF1D4F57 -A3C8AECB4FC88CD7B52C8803A4103B79CC12C5DC5844CC19FF1CE383CA34FB56 -5DB568114EEFE1584AE76F50223AB931D75AED57EF7F444890096F48378DA861 -A9C7F5114919EB10B7B3DE1325F72296095B5DA08D3309B7AEE85519E74B6405 -61B1D07413C7CBAB308F5711D0DD8498F3A59BC881F82D60F0F2F5BD55DF4D6B -16BFDD13920B59E418DDAFFED78D43FBC271993440219767A28AC7CAADFFF3EA -F77320158406DD17B84D6AF3BA143D3B653728174C2718304F2C90E82D2CFBA8 -542AD26457CAAA73E94E6197F686985A309BB016C75B412E0FE5ECEA3C7AC08D -86D240911D9C9CEE45DD05E75291A1FC5FC7C872CBDBD29C2B21464F53EE1D95 -B75A81B2B6CC1867C3BC0346CD52903E00384C693964048BFDD6DC8D89506C9D -0E24A164876C44DBF6EC25D2EF620542D73E6DACEED611CB6CB846A3DCCAD477 -279AA5235DA35D2F0B0E98F3BB3D81E0E539671C849CBA4F74468E91C67C8FDF -58AA6213C4239A4966C913D6F11CF70A7BF812D44E99984B0090CE19206F567E -B25963808434C690EED0BDBB8EF85683FE2BFC98E8CA02BFA6E353A6A6461F35 -55419433A83E044FF1C1074A1D1E117E05308E4EFDC854D20043EA21979AEB75 -05D378F530D121FDED1CFDA1BB6734A0B3E16551A4A35DD7D5F16EA286A2DD2F -B04E69EFDF7C06AEE17BC94406774587B4162CAD1D8F9DFD18316F5028FF3E5C -22C142AA991C474786D676BA1439C26B61B0FF5E1BF2E715555675A4F01A6FEF -2F28F83FBF6DE8DAD4D3BA2FF08D6DD6223FA43BC37B925EE0083FC45BA91563 -D449AC9962E49451C4C4CFFF04A99401F36AB051E930DA75A5E53C2D0B8677E1 -63D950D3CB62741FA439021BCAA66EA22423401831015D63ECC9738ED70ECF43 -AF8C8990CEBB79CB242B6FA2D1586B62F6D7D97287939822978B936771F2644E -11350514483F34867AB209BB47E1FD66F7B19A634C5C568CFD5B960F38366E8B -70D6DF9F8038D00255BBCFC4C3570ADD3510C07121212BBF31AC3DBEAEFE9B5E -A94964CCF4CA58C192EAB6A755BA561A8428D311B88A7B1B3549BA93A17909A8 -EDE4F002CF77F6516E84EB780662720F7274C8CF20444180CAF92FAED0B10710 -E534C7FE4F3D4A0595D7C47CF76E2E351811076C9377D58FBDBCB51CACFCC223 -97FDA32988696C26D654A40205EA039DEFE7AC425DF925D82213218F4F08E5E8 -DE306315690FDDE9243B6C0E1913B3FA49B588735FFE9184560F2C5D1EA705EC -34905EF641462C3455E266A6F297031D5094BBDC7D03E777B04A1B6428459567 -C2931C6C71DE270DB5CB48B7F501D70F4E986001519FF6BECF48578F16A166A0 -03120D7CF9F5BDC231546363A80E4F9F5D90D08C5C8F24C3FD5D9AE074F101FC -265116AD34CD9B5243829A735DBCEB51B3EA99E278C5AE61936E92137AF1D1E0 -862B2EDE0FE317FBD8FBB70E7B8EC85911597F0FA5F0624F8C2A4AA9B76FEA42 -2FFCB06911D6B0AFEC93071126F89D6F3AEB8D3A67D6293FDAD8A754A48C7CBA -61B09C23A2C0C487010698B1CF1455C729BB0AA7C97DB88317C970063BDA2A7C -ACB5BA08E005DDBEC628343A8950C1260F760E4358144216D97EBB016C787D63 -BD5F15D9DAA24F7C7E3E9CF74A0379C9B3421E4C78160A0750973A1C9192AFCD -731BC18890833BA5F62BD5EC0C7CFC282C29926668543C9CB2D23528750A6470 -C17DFA5901EBDB1B7B7FF4EDF10E5EE4E1F14320BD0C11AC2F7D6E45ADB2093F -B0FDFF38456913E3CFEF6C6D9B9AF176EE9B3188F8DFE459FB0DBDBAEBEB7784 -ED9419EA2FECEB743B1983E343C6C005A1A696AC30004F69B02D7918976A028A -4DD6811BA2AE988E0BF51C13D1FE24F395DA37381FC23308C8583DB7EFC1D341 -21C9D6FA5ECD2B884730CB1F7632BDDD8A0213D80E4C9505D42A7507C6FD5330 -91250A786AAA2EFF2F4AEDC5545CCC6C0812B3111666C6F47ED294823DF4E36D -D824586E6C9FA3D7D8B81B791C46AC416F1E76598D529A785EB95C065E61A118 -0CFB32B8F7451640F09C8DE8FE38E84F1E910787848C7B1690C7446D40BEB208 -27EA48F25FE845743505D155716C8613E5DFA13365AE172858251EC6140921DD -678D10D52DBDC9634FF7621277D2D4289DDE78579AFB747744A9A25947602384 -F743C93003AF2525BFEFE9D293424D2C22A14F30197E87EE976EED42EF86B51E -987CC26277B7B8004CD055A61CECCE610101F7803909FA489CDB1057BDB1CB95 -09BDBBBCD4C44A2C8F61975454FF9DD28D39CF3F174162CE0891E77A2D287FC8 -168EC5F7B0CCBAE27380B9E53B3299B2E4118524DCB3F6558A199E5E7705B103 -DA0FF94CF4EB687228D601EE2CA31FCFE5E0E770D85933DEA0571D8164BE8C0A -5ECA311221785349459996E8C8AC193077BBEC05524F1376D33B9D9B9607F0E7 -3BE887D734DE0EF89B8C9ECB7D27D27AEE007D6308C6CF648BB381E4B7B89C0C -56344A989EF1740A666AF51F6E2EF0CC0EDB6A3D454DEF7BFF7A3C35E66C095F -92A057E846732807159B7C9260364AF28E9164E444CA53AF5A57305C7BFF18FD -BEF4F69B40E16B060C7D3C1FE53A947FAE6FEDAB338746D2E4EC7A81DBA6F3AB -444CE6E566DBF1D9BED64172966CBE9F303BE3A91DEEE81526BB05FDC87E310F -8AA60F05E0BB6BA6C7787DD659498E1EF87D877387C0955EBDBA61EFF797BBDE -82F5AD3D9F35E5F21CDE35D9EBD4748B6B493AFE53E88F0AC714D1C25190C082 -F994BCD1E61296513C8A5B20D4AE2AD2317B92DA69B4BF5B2300F54B0DB5BD0F -A40D143C5DFF141DD923F15C1BE92D5F5D233F431DF5F7FB77850DD7FE87DFD1 -5FE615A2745F41F51D273080596900E7F324CC1AC3AF00EF518D20B8B146982B -30F265229F8FF8378736FAAAFE4E8E4E171866E785065BC830BE5D42C51361A1 -719486C26A6859AB2AF8B2A80FE4DA46F1D4F2669A9769A90DF5D561A7ABBE0F -F628671B06B3D5884F9FF96145C4B01791829AF81245C43891026EE683B97F5B -3FEE40569C45A412E6815CD0F5BAA5FB8C2AA7BCED340EE8E2A441266F20D20D -3F09306BD40F1F2CDD12066D64A2C262E6C37115AB962484F77EDB31D76D70B4 -837182F6C1667456A0540CBA0D04CF4787C3070C743A8EBFAB708C487794608F -334484802DC5F4CB8FAF55F34E9659151F45468D73C08E2D54AE4C89821B26AF -62C3BE7FF3D038830A80CF6144CAFC04872B92A7F301981E29637FEA1B2EA19D -24A524DD9778426BCEDB6D38E04B62D660993A0C0C682798430BD5BC558BCA8F -253E04C626AAA94E8AE11294B59B8F6C259F228CFBE0AF74238B2B33525B0C1A -9697DFAD7A07A3A8E7745193095D244C21455BC84C5D89C720B542D2F2CBD6E5 -3628D3D87B5AA688E80172C91E1C3D1F3A0AF4A96D9CD3A5AB83B358B91DCE35 -D7891ECB123744A3EAE4C2425D7393DD3F27EB438D6D1451FE0BB7D0FBF05F83 -93CB07A85E89921DA2CE64BD286DF1B7D5146413F3C593384809E7161F7B7D2F -DCB2FF192C5652448C98A1C6AC08EBE8AB3939EFEC24BCAC6605667CB676A84C -63859718F3D8510CAA9ED0E9E4158B1541E9577DEEA17B6E976130DCD683E3A8 -2CFDCDEF2020C6895F3CCB8FB2E039E6CA72B10CAD20CAD9975C354CA46CA1B7 -0E4C1F676A61419D8855A3DEFCAAE371A618AEDC9309EEDDDD19F17935BB04FE -62E3FF4BC2289BEA1E0E03491BC5E726CC9C4C826F8CC2E0901403BA957D9FFA -1096BD6AD436B0848C66D01E704C1D40346348B8AB4371E8BFC506B1516768A3 -09312D5B1FF6EC660A3BAAE3325C305383FD82EC190F9C324C31269D24E44C4D -C2A3B773116CA53131388D93EA1C2A4E18AFC8A024A5F3EC03DF9C7F8A009798 -DAD8D8F6AD11315F9B28C4033CAE9CC6516DA1EAC5662949E47C8D323DD21537 -A183EC09E5C85C9EC375713D6DF064D24D8E807670E3E8284B47A98A12A67AE2 -070AF99121F47F9BF0BFA7B2DFA0DEE499E95CB6D0189083716FB82C37575CC5 -C352E4D8FE914CCF92B95E3ED690B894E483EB71FC566D441B6DC4BE666C2DA2 -A0809133413059059C1D89D12D140F150EBBBCBAF17023E8BE16621ED2B6605E -924FBD8CB20CFB0186CD8BDF269238BA449A7EA1BD49CD54C3E80C670EAC988D -600639F1FB303CC6C2773F580D9EFB5227D8D1AE737890F8557CED815DA9FFB5 -2B978B39F253E7FF9704F2208348C79CB67CF8054FCB3203F59F46FC3876272D -E6DA035BEF9A5FDDA305C2011C35E5DFCA1754361B5979B164C7551547E6069B -EA8ED9C491A29449A3D3ECA39FA6C17683C03730180AA7955180500528DE6965 -8D9B91D222EC18B97234F2A707D8D92AD7F1AC04713A4860DB3A532308AAC05E -268EBCE9185E1EC32BD034ED893D5B7D6EEFA1E22D19F8F46C0C045B4E0DF4A0 -76F7D5E0AD62075B9F2A070B7F557AD4A2554ED1144B5DEF2F1E3B53FBFF02C4 -B504C792EBCAA8639750353A9876DFAF2062B523B82862A247469AF9E183D73A -FD02AD9878FF30F563C9083E7290DC62FF7E5E45174CD72A0A3AE935911F4ABC -37AF66A02BB717BEF8AA0006184E7ECD60957D2F3EFDA90A0B3EDB332AE3EDBE -8B3FFCCB8EE59F0F1D27B1BC5A34B38FDC2274EBB07FA200E29595E9AB8FD952 -497F909B60F255B50D12750A13EC94A2B3E9FD1F7A2F4F1EE27388006D9B3451 -6473F3760BFA9801449E419528B2E27DDC3BC2EE4CF426959BAAA045D89892BC -1F14A511C1CE0E7DE57180A65157E00C9C3F730ABFEBFFAD1F074638D5479B1F -74FDB3A8F163DB8E0EB89025C445CC59B19580000391639314E4B6F2B2EDE422 -F217CDE67BAEBF1F4D998163339B7CF5F06FF7BB277D178AEC097963A3E722CD -AB1E70F0E72962F48D79331AA783350C7E0C69453F5B1ACEE519DA55D0ECF0EC -C12E1DF4A5EEB3F4EB3C9DAE7D8250259FE947CDB20B652E04C75200C6AF8539 -4FEA9D49E3F8CE442D7C02CA1C1CCA21798B9F36F0938F9BC60E5609B861E8AC -29407C6F32FDE1940C1379A392FE19A13A5B9AB1ECDCB0FA0EBFA714A9F09881 -64AA1E145D68F5E98F4F53E34ACE7A1AC5E503DDFDD68277B4BB91B348B84C64 -15F834531729D61118AC789825F66DFC36090AA629943FC4ACE00CD3C31D9867 -8BA170CAD98F7956C9412EF6994E3230963CB56ABFFF66F55D81E04E7DDF8A6A -5D2FB0E43DADB8D163D4B41CFD93735F8723A2644F6E8CE26B6F6F332779805B -411985A75AE9D4DBD2229B866FA7DC0F0D1C4FD25733BA57E345AE5DE6B6FB0A -4A5B98BAA6E7A03E419410E6CF9958D457968B0036B62EBD27FB80A24FF75BD9 -1F516801E81494CD06FEA43765F517B9949C2E7741E1F8150A3415B1277BF8F5 -BE3AA27065A40745ED07F551D6B56A3C489B8CB50FB4ACBAC52B3DD267031344 -4EEDBA2DCF2E34C92368458EB59F7961DC4A4AE08567B1596A8A8A4DDFE9EA36 -787B52C205897FDD4D2E18A2DCFE60E58F9AABF99295C44B5C65E21E55E45857 -7E4D233094591F505C76F93291037FAAC8438D413A5FDF97C08D3E399A9E688F -02F7334980BEB7F05B414DE3D0E2756BDF447EA4284826D5ACCAC73B0C8B62A4 -DECAAE2F5E9DCCFE1B9489854EA743BC9A32ED799904FABFD47DDFA552DD3FAE -4AAB6730DAC8396EA270975D5FB647D6DCD051710F7C2A64CE9ACD02CC451E81 -9A1CA666B7D5CD679C7A65B313DBD9414B2E113219713295A342087BC39FD2E5 -AA68F7D5C0BF50C1D9C73ABED5B8D221FF81CE1D76512AE966D233DCDD9E6724 -8B1BFDAACDE7EDE786C6D77554337B4707EBE9FE2A663053797F532A565DEB01 -F78C31F9652081068841CFA84B5C9DF48501E345CFD3C8FF76B49B40E901245A -C252B30941E03A9BF47C237733DE663640A4F6575DF748EA3999DA44823E2826 -86A4BEAF05F5D95024C0F7D1BA48203416E99EB5350EB221F0D712D9FDA347AC -0842EA63F9A948C33F117630D4761319FAD947DF82AB69C74EB922A9CBA56939 -3F7305362DAADBB4F63054D690515B2BC254E4BB645540E4019FBE9D471DB2A3 -A7379F0680CCCA2B47343147850A751A2DEB860E313AB02536EE4A92FF127539 -FF845355964F2F6EADBC6191 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 121 /y put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F -21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 -06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF -55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 -B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 -0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 -1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 -7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A -7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 -356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B -19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 -C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F -244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B -AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 -5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC -D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D -993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 -2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B -E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 -309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 -F42EDDCF39AE522A1DC2D80B2772B05DA60F3DC15A815A6BAFEDC399C7956E75 -3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A -FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472ADBF11 -05A77651F118824F6CD00209EFB60C1D32D46A78E8C8DCB8B0E742828E3B7D17 -DF5200D68189C91FB8489CDEE8BC223C4281DDCA5F7DA80BD5C2D66A14695EA1 -5F05E03500579ADD440ED2C57F535807560C6FE3873143D792734FEAB93AE8DD -633BA6FC5683083402BF086D23594AAC84A4868AFAA32AFBDF86142B350F8F62 -E2531321E4CCF34293024EF8AB617BAB11A3A5EDA03CAC5AC431C893607DF8E5 -C3DC8646027A7554625A16FD184A70DB5FE6DCEA366B64430A147144CC9839F5 -72829FFA42BC3A8406D680E44A0305C9C9E265E91AE82EDF30F73730DCD4AA20 -8B63D3B568DBA690DFC2103EE47296E0EE2D09503D052E6EE60A7F03A4E52CB4 -C07B2F4902F698DAF126D524A1DBCEF316B5930C959E73D48C2CDA0500CAE984 -618883799767E29BFFDB71FED3E563585BF18AEB612D85E0E7710B8F10212ECB -89884A3B91FC2DB583334F5558D64BFA4E1CA60ACEE230D19A3C06A0066A888E -57D4D9939917C25E087C54438DF51FC16BEFC404A09D391BC4326ACB4926A396 -DB87304137F1BEA30EBB861211E76AFF4F9F1C2608B1FC2DB14FF1F82DD0158D -A0F85BB76D92E0F1EE702F6EA24D2C36A5AB72DB0D47E51258BBB3711184B3F7 -2EEF7E4536D181F7F8B1B9C192F1C86B8EC6ADE9AE1B07AE199BF06FD74AA0BD -CCE3B8D553967BF8F9BA6C238652850B58BB64CB71F564FE3868242F1265D4B9 -2722911437AF3DB3ED6211E9E3B1DA1F56C8F59150724AA308F692577A3DC61B -49D9D6C58C030FA8213C3013AFD6DF192219BD39FC61F5614C1FF3273E02AE5C -CECC5100330C72ED2F0ECC27300E96442AC9DCCCEF450CF6AD7F13E3532C0002 -8B43F9CBDBDAB4EDB62F3B53506422E5476ADCD28A5823ECDE0AF279917C05E9 -9898DDEC22293306BDCC9D3DB7048C65A4301793D8AFA047294F427D6B0C4253 -A366C11D3691BFCB6C37505B4D7CF0818C97BE90C9C127A2D6DC88B79553A3C8 -388A62D36BFAF2CF760076A109300AFC2C8D6DD4A8C459A8ED3EFB70874264BC -59ACCAA7E4E93CB2BBCA2DDCA0B6868B69FE89D3C5AB4ED42DB0E7F6A9FCAC9F -64D0C77C25D6EE90275592A4C68CCFC5885B046C6615CB900F9638FF2D339985 -6310705F99B1E650F6BD09EECC1CCEB19E28D6AD69C9926A49F9EDC51CF77F58 -7D9BEFE08DC7B0F30D85843507AC14C04D24B06585779D4EB0DA7A32E9528B04 -7F5F0309B4968046A602D331E529D70F67B67BD6EC0398CA363E3E4D84835147 -84B8484C4953A1A4FD859A3BF7DB3FD787200CD391D5E8317A7399DF33FC8DBE -4834AA255DE9AFB4BB5031336B4289C74A4EF842B316E2A26C13D147C37566B4 -11E50A33931F9270C7F84502197F79B22AD2605C7585D9CBDF2A3062F8F090FA -FF4DE362F3533777F48E8F1758F6AF7D81945BE82E741CF952D0EA3510C9834B -57EA19AC45806B75F721DAE155C76172BC70231701D571E832CE2E67F0BFC158 -054F4E4F4E5846AA22E583FA2FB96D635D05C989F6F23C5AA37527D5A6FB20A7 -C4777FC8547BBC2CC076A5CE02538B57FCB360546C4C286B2340D0DA6040D762 -AEF28EB326AF954AA913C002C15B0764E6991DC232269B3F2A9172979729D925 -8FB20EAB26B7BEEE607A47E9CF2D7D4A68078940DF2ECCD552CD78E72C6938D9 -DA841DAEFC4C8C9A222D0B12F91FADF94358C0135EFDD5F652F30E75078152BB -3F696A5A6FBE07BCA3DFECADDB17EC4453081A8E4F82F7DCBF92E70E375C980F -B16AA78BB25F935A78B954BB20BF6A9D7B8D977D8CF36A8AB49331D11B96C6F4 -1146A4852DF7298790F6C967BEE3843057B1FE96DEB55B99AB79CD579D4FCD32 -C883233BE4298C82722375B382F576A67BDCF09B9E010AA66C6F579262075ECC -97FF8B0C300967D8BB04A5CADACC19581B1E5F71DC4E56AB8B2E6E49DEA59335 -622C206DF33F14C5F12D74774107CA68D4EB401A8269917B4919A53EAF94C7A5 -599C0657210A2B5BDD27B8B4426E019E6019EEB391FF64A45FC1130660099D83 -667FCF15EB76FDCA51625133018E9BBEA11ABBEE228711C4171FEE6E8C54BAB9 -9483AB09854C17D96E265297F100E8DC2F70FCB4C00B0E961CC01A1ED51D495C -24B34F4294533E29AB070476713CC5E7724972BDF3D5CC7F4AFC2CEDF2F31928 -2EE6029B9C79B1579A16CFC15DC4FC55163036B695DFA689AA70418AB305D4E9 -29C686F69BB2E07B36CFA47DFC15A1F582E45FD1E0DFEC8988D625DEB4EE6AA3 -F43978E6DD985323C21BE29D6DF4F64A9A7C6D446BDD2029DD3E34C7F4852263 -0B21F2392750B2C30850F99893A6DDFFAD9EB3679D91C05E3A264BA723158E0C -58F261DB35CFB613D0F733C14B2AF20D8EA028BE500A01EDBF85854EF2585B02 -CB96A419A508734D56D4E34BE68BA16606D214D8107A3F04B802187C694450C7 -C00AAE7873C0D9693A765EA5FD97C3D63D3396D624C9B362007A191F79F6B05A -8AB8D92A54754C98B5A21767BFDFA1D789AA8022A763DF85A70ED637BD04D0A6 -8429B82D6291E96A33DF224A25A57A66373F58AAD14784EB0931AB037772A85B -C52977EE90420477AD2EE3CAAC7C2D1507921B62CC6767F39FAEF4986B52C883 -44E0238A747E28ABFEAA98051F000575EEAAED10AF53E0E608C08B7CE8098693 -0A36B89D3829303201ADDF53C10B5899198DBD24A600D9219B346AFBD8B5378D -6845635736B1E08406CD3EC68A2C0DF2D155A2ADF8BB4BD4B14A1960EE46379B -04A3F8B1DC7BE71B2F33A5D5F35DEFCD8152F70C1735EFA1493EFE2084FF7F02 -FE53BF7617DF4C83EE6BA8378ADA069CEB9C65E1EAA2D8CCD1577B3C4BEA8A41 -409A0D6B522182448CE4CDAC53C9843255D92B59528BEB24377EA6D6AB0811CE -A84D813EC91B07F9181490D32B4F9F5E5EA793AF9745F8188582F41AD7E26655 -A7D932A956A9DDF6B939BFFB724FC73AC4277CE7B38B91DCC12DB9B263209590 -976A9CB20EC7EEF8106B3481666F96539FA4B1A62D86146A4D3FE02B65B06616 -7A9F4AE2C99EDCBFAFEA66C19A5BBF499FFB50FEC49FC3D8117B48148B617BBF -A797F14B89DCAAC8C4A03464FBF3464716D65F922674A200FB4544C03E667916 -56EE0BD69D9BCE58F5A9B871620F66881A40788525713288C5E893E2EE2F5BD4 -365F6C638221A3874A6727CB5648157674A36D46645D58E684F52D849ADC1462 -1F168A7A2B9DB84139B4C5F9B0168A4A1AE964FF0E77953B944A4AAF9C724449 -D4BBD5841842CC0C45DC2334D0959DC58674389951CAFD655531C743CFD0B4B4 -C257F26216BA8C5B23CC303D13C42D4627B458BCDBC904E2592DD182153B4857 -2CC05F8BD2A516605798AB46020EBAFFAC68D89DFADAC92C7CE866E53F522108 -C957C40D13898B1D750AFEBAAA4E200D30E62182611BABB21DA939034ADD5FA6 -382BAD96CB579BAF122D461F06A745CF8F93E884D770187F25E7B5ADF53ADEEB -AF139081F5F76824FEACCF20531AA75775FC2E1DD54EFCFEA8C6114CBD16D845 -CF96E9C79324CA9596EB0FDB2F525C1E2B80671A9728509188DF5E6804F8CEDE -8A33C18C7707B3AB83EBB3ED00DEDAEE332090073C5FFB84CF42A852D514DEF2 -893D8D2E4EA1AB8E7E1D8CD7A0F11F9C32807A6C5B858A65E90A5B52EE3629B3 -27E5D7B85AAA9F839D538AB13E80C2F9DC8E42842FDE7E87F00D73539CF2A98C -5116CF9C32237BDF3F2399B206400D8096F07A21302EDA56EA952D323954C49F -0F7F73FCE0B466BC06EB196A291FF75EB7CC88BC40E78048F77FD509CE9145D7 -9105A329B35DDA3E7F110DAC4E755E4B0C4C035FE98B5F93565FAD17C06FC3F6 -F92794EAD552D4347FDFB369CCD5DAE68BEC6AAAC62474A64EE0DEDE7E6F936D -813D24ABCA3ECF357A2E073CE90A4DA9F140D8114011432EBCFB232FFF5585D9 -EC4A52BC82CC947D22B6272A319345E01CCC6C66DB86A02E0D0F334B5ECA5926 -40DC45DBFB02614708581566BD72BDAE828B026EF160EB2A13AD0620E9D1395F -852FFCA6E4DC58880DAF4EDA53752FE0480F1F98582FED653DD961CC0B828068 -4D628C44CB5986E291E62EFF29C664B92B5C8971CC69379524B03086528A4979 -0893E0710BFDD6A7172BD54C53844C1B158FAA8C2190B844C302D72819930555 -588E461AA5A2E9102918A086EADABE78DCEDF23D168369DA4CE1D1E04B3A282E -85B7BD37B3F370CADC4196368CAB440BD42F57CD176AB47F91EC90400D5B377A -52E8963016BA274EA40DC2087797E0F80E31980C77DF487AEB6D51A863FA0DC2 -F97D25188AC62C39BF63AD54C58BE11532427E11255561B7F9F51B24C7F473E9 -301C4C6CCAE4C59631773233182EC613F33EEAD2B8BCCCDF6AB4560A6F2D0918 -0F2B524C908AAC0F570894E270F73EC3FCC88AC122B11C10A3D32DB06F3983AE -3CF8DF302A5EE37901E906006CDB76F033FA8B9CDED5CF8053505A1BCEF7FCC0 -9B5E7EA8B59778BCE19F842D05F27852466A94A7829F0986289415420CD437E0 -B1C0E80D5C08ADCD95BE909CAF0A0177B5C38FFBE86B6E95DBBDCFD70EC5A652 -E4D074C32DF2FB5CA7F1198C04700E2297CEAC0B4332C50D749B2B1A88CDD7CD -586E183585FD0F3C6E171ADBBAAC5452E9B8931543E8B972F34C229C3EFC1F74 -86126A6F09BEFD99237DC0370FE2553633135D1A88FDC8E80CB773566B17FC19 -BA4C4943F0C4906DA0868246AE661B061C4C7AC536DBE7C44C8BDC515B73BF07 -357C875D30AD11DABAE16C58C94BD028CA66AF418B2E26D891A97BAA52B6B030 -89AD1EA21BB0922600B12FCCAB4460A56856703FF9B757925E45C30DB168FDD3 -FEBDE1D8206D84D6BA010DCB6E33C0DE05DFE7C0D1A1BA2E899D7F26C128C964 -C37CFA0256F30641DCDBB2CE50A1463BCE18593C5D3DDF082AA86C0A9C0C3407 -C4B2688EEC3CF503100DEBD28BA5F838EC535971044CE34E6EB207C2CFA4DFCB -846E942E5373B0D009A20432507CC3F91E4D84C52385ECB64910BC42F6123777 -8498CE1669AC8F1985BCDCF7DAB36243C57736A7285779432DFE0AE79D615CAF -C282A61B1313F071D785EF1CD7346A90A237B2B6F428182F2AA9BA95C8E82C20 -1E789E22238CF071B837182A49C66D38C275E3F2AEAF87B7CD1B75F451645D0F -2E99EC7848326F99DEFF541761C2D49BD2537FD9719EAF0045A1BD5D1ADF4563 -817D7D3FDD746D2C51B696C1805DFE90BD8B857AA7743205865FD8D64DE29152 -B01A67BCDCA61F19B85B26F2BEB9161ED9272ED223E8FC0DB0596D52702D4311 -2DB3392F5F4AE340C2CC1FB6FAD06EABDC172D7AC71304A297D0F729A34BCA2E -1F7326D683C0E3F0AB5C13EE7CD96C90D308147F95D847BAE1036D504D4A6B4C -C7D64DAC564129B019F2324A2E407CFF17EF053C847D80B97CF0E068CCE6C3B6 -918EA14DC10C11AAFBA8D00C15785BF8997B2E132CEFA24DC4970AF213D008AF -9B397919B9934F7C842224811BCEBD9C823D655C3E92E883D7679F4466C6A8F9 -F375CB5C742D521A6C40760614BE189A84F0C050F991931A3B1FEFD1804C38E5 -5782D79EFC00379EF2894A81FA7ECF1FD29D043E838B18120B22D524C8353664 -2C1BE532182DB831D6FC4D04CCD61EA904E79DAA66175211171ECFCAEF7A9040 -288812 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 63 /question put -dup 69 /E put -dup 97 /a put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -/UniqueID 5000768 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B -61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 -92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C -EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F -43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 -FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733 -4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA -55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822 -C98237911453E479EAB0B483D222394299B2E316A364801A09F2A1A3B0A8AA8B -DBFA82BD9A0A1E60FC5F7F3EFA1DBEB4DA5200E2F29D25BC8614D6C29F336C5E -9F60656D2F7CC4631005135EF22BFCDD25E2C8CEFD0151FF96E6C9AA8352CD22 -E77594549E5810ED4B2A01419CC2450289CDBC0A6BFF8EF29877FA13D418CAED -879EBB382B32154997E95DC1364BAB09FF0740310E86A38C6000228B31A13832 -3C4E3200FFFC58752B3FE0BF9544154F5E92D63D8CF4BB41CF35ADCD5851E214 -DC90AAA5AD058B4AB0353B91B78666EDD9705B6616B6189A5C2514ED89FD687A -89BC9348CE48591719102119E9423E7C84B6388A842F52A16C3549B9CF47DCEC -A8F2FD49C4D5979128EDD4962A90B904BF69E8A210B647D095C3EB90B4544E0C -EDC71EBAFE14896CC19E2DB36116A78239D574BA9A29377D4802C19C78DB92CE -31AF6058904AF1B7567846EA0D6CEAF6BA883ED601999CBC9B865FA98786E84D -D5EEFB812AF7063F245223C758B95979BD72B7D5F06053643B0EBEEA272FC935 -299ABF395179BA96A6C9FB6ECE627E300CE92231142FAD469A88BDF472845BE9 -A914353F9B50E76596CF31A30BD6C429490F0CC591217AAB40D2097308AC29D1 -F25C3EF360ECC5DE85C9F339E8DE7FEDE7A7792CC0585A7AA1A4706B748F5C67 -9E199AF1DE5B07C4F847C59E949370AD28DDCC52D8891C13C10C4326B2E01BF9 -8A309017DAC858DC83C6E831F5FDBA2D48889E00E062E1618BEEB8968BB436D5 -51CF9A01BAACAFA7DD34D44808D689CD29B01B5F9E648150199760AD1D1D2218 -2A74C7773F68111CE4A4B88FAC55D2CBBECDD75929A975D334C954BCD7016647 -802833DD8CC0168E60652A2F99CAB5906B761B5F5E087963C8B579466D5A3237 -732F80C4ECF89E1C4C321CB9B1FEBF16ED5278A52F23B5BDDDF215C9D7D252CC -16B0F62C8AE77E4271245E983E935CB1559B3F4AAD3485DCD5800121551279ED -557A5ADA55DF8F2BAE134AD136563107700B396B45F585DA77276E5F1126202E -73D4446B572B0D95AA4D9819898F0DFACCBFCB59F5EE0397976DC00C42574F74 -57EB6624057280A8C9838EB752CEB15581CB63120EE57A37004467595FA2B0D6 -7D6BC1F8DC307021BB77DA471381AEED0AFB44CA77F7E9D35DB83600AA25557A -D3E0D7276EE11255E1279B307DC73102BE5B38BF4C4F71052257D04B2EDAAE5F -71BD25ACBAA0129E7E6135A1ECD01757F168EAD23B647C70548221912A0783E4 -45AA501F3D9EDEB750F0CDC5BD2C04B45728E124127EEC735C7006761C694ED7 -F121154B0EE544F4D74D04A0E26A54F23C229B8BAC2246917B9F457473EEC6F8 -36F3A22227D9F65DCAF1D0AC3431DE36219E8538E22A805756603880A3F6BA72 -43D8A82602741E3ED8B4BB5F7AEFA8CBA07B7231740FE30D67B931F1CAF1FFA3 -823C210EB751D4BE2C843842E57452157EB99496A1D8CD17E632A22983D43D08 -9A940C46B6D7D26EB28A3E6A34C01C8495363295DA0EA5E311452076D156A6DE -4B1AC3EF1DE6ED39BDC45A628FBC10F0687E3B2EFBF0AFC0D54DF87F014BC790 -9C9C6CA34121D8C2530887D93D0839EC123A62FDDB1942178B81CA96FBF3104F -AFE8BEA308FA97321787FD51797C72E57781175189D4F98988CD59A694F38538 -82FC249ECF9B681153E0C402E68D473010FEBD254A1C886ED24043777C22837E -9E12DD07010931CEBB50EB20635DAA02AA81E57BDBD84FD751273795240BECF5 -C86AF2BAE9C15A412D9D6E1785F391E003A706600F441F609CE437780EACFEBD -F5C1F2345D54C4FF4746763E96D6BF0219B75E06B17548A37914EADCAB71AF6D -7579F832AA57218B104FC14AE8040D2A2823D33A453D844FF5099C87EF9BAF04 -C428FD91B817EAD01E7F1741087C6966F6EE97DF4B14C644A227FD30A8B4BBF7 -216425A28EB050D1412F82C70683BF226CEFEED06CED5F7BE69D1900B51EB627 -5E51BE6EFEB7944466154D5B31B96DF14A2D34A4650D82C79A3FCA6C7B5564D4 -9CE9C279F3C476B8F5453AC78974D7D79051FF405EABE588A76FE2190642EB69 -363686D0E786172A46B09CFAF8C0B7CA5E7B4744809F8F3B012C8B14B0A9E266 -1AB1DF1E753BB0DA6ADD9C01B33860EF095BC3F0202221846A9C364B77B5CFFD -49DBB146DBB6334239DD3E0C2E62D1E0A080E1593B2315D79539F6D95133BB6B -1217478EEB5393B12B0DDFBE6A643ECC0301651484CB0FEC9EB6EB82595B1D5F -1F7CC919FAF93B34A4736508C6181DD0098C16EFD72C62C0D70692C0687C217C -A2B97D9E15C71E95E78375375A4EFE0F73726BA3C6AD61873B2B7B31E38D4954 -985FD9DF3B3A4D97F9D816260F75F5EAD864FF2BA531AABC4BF8E6FC4C01FAD8 -E6027704DF86DD3FBFAFB6045C82A6F648D9DA30BE9540E18203BD467EA8EE68 -4A2E52BCF113F80689FC923E5A34885900DBF17E10568C3AEF0D54E24E4F9D6A -EE77DF2E3FCC9CFCF4A5ECD70499DFE023B0491E14CCD343EE93498BD4DB50F2 -1C6F5AB1A16F627DD707C3C5BA3647F040E1ED62252F11AF2C36E19785906CB0 -984A24064326EF6BCB6B8F9B20182595E8B5DA20EA3B46B2152DCEAA14816859 -E07BB29CCAD6C672881170E426E8B87CF98F916CD8012B0495AD6F7954227DF6 -635A9F3B4537125E9DAA0EF481675DFD91B48FBB410EA30F74AB221D2DA820F2 -844F581A6B85B5B92562BC3B1918CF1395A3CEFAC2B818E8FB1CCED8B5117233 -EC790B09867613E82946C8E7411E7F0D76523CF3D4416881AB6A27FAE98DE26C -41D077687F560F8A3039C1F03C8EFE6CB3AD6BB2D8168372B9559E2CC5E93001 -0C3BB33400E0E79FD3D525A7A79C79D1460A65F08F7BC52BC1A73A6C204453B6 -185EAD00CCF8CFAAE34F66F83D7BA09321982E048C8915E84A62D3B7BE089CD1 -FDAE0CCFABBAB4CF6F0FBA498D755994DC99E00979B0D2903691C516024E497D -6102C31AF898990F6AF1E02FE39CE4FD48520606840CF5DBDCB16FB83145BC25 -D112F575FB19F12E064A0E96590C72C6FAA2B1D6C11BF8E0BB53FEBB2773EC3D -EC85E5476FC510B1DE6617A3D63F01F38C0D898643BACA45D99A5BB820D874EE -8F7FE39E42D7FEB69E8D301DFE21A72948959C93945D911E06ED45EE889A1552 -E33EC31B65989536E1CF7CD2FD2B8D28FDB65DC69E08B0A07A4096000B82315F -B91720AA892C5B07A675DE507089CB119C223DC3915A9C90D4D85CE82C10A65A -C9E0273DB050CD2BAF84BB6861E8B63298BD085280F9D0F1564E1CF424BF7DCD -428488DEF8B0E3406F8759108E3A7DC682C39DC2A262B5E0B1F1F2C5ED008AE3 -08590124A6826AE9BD4FC438D1E991BF34393ADE719915A409D69400DE8A1CCD -3F88FFB4CCD1A32A2B5FDAEF4E68F052B2E27F7355FAA88F03C3F9E98FF17708 -9089132DB2FD73E48749EB394B8B7A4097504A856D1450E91D2EC6E0C9A6DDEE -4D34178E2BE0075EBFB13CDB90F01CEBE9C0977F68649EF224CA599CC4CF5CC8 -74D13579563DC1F884E197437EDC899C4D41C91D940571C18FA077F3424E4900 -2857CB66418432C7A33B5C486BEB57623C9D2C88EAC67FC418BADADFE2B5B3B8 -22031C0CB5FB090DF999C808FD7CC5021CFB284F2B54141FAF3636F59AEDD2F1 -D69D8F3AA26554BFEABACDABFEA8CCA13CBE27561F1C355275C4A71ECDF7D9B6 -B17904B8F0B34C39AA3D3C74F2075FE5CB5DAEB49F2BA9F2982B5DC987E2DEAD -E73514EF1B8897B684E90DA2F43BF9CC587332F12C7B1144F3D00EFEFE5CAEA5 -A5CFAEFE1A46DA150013948ED40DA458454F104CD8AD941A1C2DA69274230FB9 -3DC7EA9C30C2FE91CAC6D4F2653E53524E22823DF254DF778CE6260CDEF96B56 -832BFCBBE6B7AAA72ABA6C6D0A15E141972362177B1221874AF5561309EB95D6 -3180679296F0C3B1FA1D2A905D172A25F7307A233856277ACB0469E333453988 -08BC481ECBC5497CEA66F10C0F2E3CA6BB1782420CCE6236F5B394CF597342B9 -0088AF71BE20169E72D4352E7E4E3C4DCB32D1DFCE82015074863ACBEAFF5E68 -97550C5EC8753674EC1CD639BF9C6D6853E0C67C86B01FCB2EA49F4841E9C39F -A7D653C3214D0DADA2C15C30A79451BF9A1970871596CEE969D0DC3DB371D805 -5B049F51CD1D858D3DA38EA216F272A83557E10CB199153108B8FE119863B9FB -499A4ED9E5B59FDA1239A3C48AF2DFADA11055AC1162FD3E13A1479E947B6D66 -2E6737803298B43C10427E414BB47A115C69A34165A5D9E9B93C18CEC707FC4F -8A77109E6BF553CF83BBA192B5F9715FE7DD834A0A770D33B8FEA82323504178 -81244780D147B24DE926561D3E0929E6528659DAEB8DCA6AFCB795F082BA38A5 -370D80CA7D8F69216F959495787235CC812DA74A41BB4D67D64C4BB807EB8229 -A8DA3850609B3C2EED4EDF3781B64D988488DE6A11276F1C765E56FB18468CB2 -095BA24637DDA4C15958C91D1E1072EB1A9953277D441F1432B5B7FE3D7F5968 -B97ABFDA3AB20D26FC4A30332B7DE2C13F01A18CAB330DDD44D779CC94412A4B -67024D29A0556170C8285C3E77943AF775AC353578779E74BFB9D7F474536BD0 -4A50986C65B4968467C5CAA8A17CE9ECC234C2E83B712DEA200CCF912BA6C84A -CEB05AA65078EA6AD724CED1AA15A6C52FB9DF1142E5B50C3FE035F38CEDA895 -A473CF4AA7BAA8AFA3842CC902CDF02DB477515E4B4AD6F605F6791DCFFC7DB8 -A9CE4F11A335F7C361A6D11864D2AFD87929AD43B3251E3B6BB21296A9F76E86 -339A6BF8D05C130EA342750C40BBA4CDC781CCB380F5FC40596407281749B8B8 -A5A3580A7732846B385EA7EF1FA6EA176C30749775BB37AE3B28B45B3019D8A4 -E64FB905EE7C3F07E94BAC161C7C6BE5A79987D763382C9AA6C138C4CB75145A -B664F9E077D8CA93E8A66085ECB5F75C92F8B174420BB1984A318234330CD341 -59EEC2D33B1AC13D1C9B2F99601AB1505024B72639071AB08C09F678ACC29DFD -558E4BEB6260C39BA33073B3C03994B2DADD19C9461015E8760D0A2C6AAD21CE -E965C336D80856DBBF21175076F546E9286A078AAC1FE175CBD95220B18B9BB9 -2D4746C8208ACB460656A75019626C556864B5971976E8DD8BD5DBD9F9E67CA1 -E80B2BBD39FBF7AF8163732DB1CC450A61C7371C9E2BFD3B4374F47E8A436C35 -1250877B1D3272E05C2FD102CA7D897ADD90110E26AD2E9146910B7292CDAD14 -7C8F129B794E35FD53A3A052A66130CAFCD70C2D42605FAE5C8F1DB85A434A6C -917645C7AD2A00465398FD119230992C0221C9E55F092A0859B5C59FEC8651D2 -1F0211904A1838CB379CC7151F7FA6754709E080C7FF02BA547CC8F6DEC13DD0 -6C622267434C390899F27DE1A911F96433D5473861F94CACAC80196696F79783 -4BED58A7175881AB9333741F43A2878CE211C08B68042B4AF16C87316413B97D -B680A2A3F43E30FAF472A7C710C9CCC62213F34FF703C697047C07E7BAB057DE -96D2CC17214ED91B0AD60570E29E215DFDC8B5A7D693D0B89EE901E9DE66E7D3 -ACAD29A5AC2587B719A9AAC339E9A246957453B84F0480F02E70DDDD5808950C -E525A295E625A97C0C5D3B4D742CBF576A07BCCECEE90669707375A454F734CF -E384527DBD3B3205E698ACA2D8042EC6C793884903DC916B4D1B2676116EEB6B -0E3804E9C6B45524D651CD2A75ADFB6621A3F461851808AA9AF36F2EEF44CC31 -2304ACDDF5CF4D09041683F21046F9DB9CFF210FD41FBCA788024581D0D2A196 -E7BCC39512E040D8D9B978B21BC7885439DCB9F6087898C1F636DEDE167AB93B -7473AB661D943FD198F7EBDCC9FC415C0ECD2BF2362F32221BF3181843EB1735 -AD3440079384119AEA0B6B687FA3797B77E0DD48043BBE534FF834D82C7AFCB1 -A986CDA4A1270DFA4D398A7EA361AF2F56BA34E2C35ECE28A1E96C301BD4A12D -B92627D0D721A9807B400A8D4F94842013EFCEB1897BB13FBEF60C1F3041B13A -74C57D37BBC48339119E4E713D5C3AEDBF3DBDCB7A7373CDB412C797D7C5C615 -9518C6D7E476F452A5B41968E12B1847709147961731522132AE54C5948D3078 -333600FD0DAE516CC007586FBF105993C3606BD765BE22DD8B29213118F33AED -A88463143453A9EF319F5F888191989EE746D0D382 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 2 /multiply put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 -C627A8B149D71F3155BFBF5A359E54EFE40EB6AAF7344F336BBDFA5241D39DFD -19DFE4F1B56DCAAEA84D9290E81FFAD8472517CB517C9F8D04EAF8E87A58341D -57386FF17BF29235356C3F85FE85CCB75DFBD407A6B76C198356415768FE0D58 -0F0E0665E6B2EFC269256FCE0146C415E35D900293555D8B6CB2AA451586E477 -93461FAF0803AE54B9FEE351771B08F9F7D564B5F50CB4E660298DECF4DC0F67 -0A4DA5738D89F708019CDFF9443964830B406748B60EF34EA35EDA7DF1C05A1E -A385C5DE4B171FCD735AA0C41E54B09D133E48FCAA3A75F1B05C2AD4CD792534 -4160FCF0C48076AD3174E1A970FD9A285EB251E016B2739E373B43F17A1D50BC -02FB2383DACFF35A5503EE8D0C8147908BFF5FA0D9D06F243AA8B4FFFCD8FF4E -ED02BC -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY8 -%!PS-AdobeFont-1.1: CMSY8 1.0 -%%CreationDate: 1991 Aug 15 07:22:10 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /minus put -readonly def -/FontBBox{-30 -955 1185 779}readonly def -/UniqueID 5000818 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 -5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F -80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 -1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB -DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 -9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 -CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA -F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B -133F1E59A6C75D5F3F5C6AED02D738369ED9541D8815D9BC42D34C187B1ACCCA -8D5FFF1FA552AE4D2C870DD17119C4BC8D4E6DDDE0E925FBC9391C91D374019F -B1F6AEF0498EFAA5974AF35567983E6F1A3963D01C1FCFB2CCDE0DAA89CEA35F -FF4081BEC095A7E0889C4326D0B26B343528F28A7EBE951B6B59E77CEFD4FFDC -D8A90A56EC2B520060869AE646FC671A833C92A49961EAFF92500196526B5CE2 -3792E028EC16CD1402D86FB8AD69679F70A14AD2276AD0A1CE82302ABBAE8D54 -308988AD -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMMI8 -%!PS-AdobeFont-1.1: CMMI8 1.100 -%%CreationDate: 1996 Jul 23 07:53:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 105 /i put -dup 106 /j put -dup 110 /n put -dup 114 /r put -dup 115 /s put -readonly def -/FontBBox{-24 -250 1110 750}readonly def -/UniqueID 5087383 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 -5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC -4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 -788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 -C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 -617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 -D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 -532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B -5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 -4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 -DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E -B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 -A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 -8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA -D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 -AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 -AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 -A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 -AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 -85B3851248F26A134F1CA36BB88B0AD4B229FA59662023679555405D8D35C6B5 -0D14F086BB408D87C283F77F8F8A0069D33174A8C6768B4151EAAF21A8787BEF -0159C58D23C0E242FBF9066C634085E35CE5C7CF711D9A8662DBCE33B5649EED -B6DC25D9E809177ED0BABF2864F6852B5CDDCCD9AA9913D3351DEA202F2116AB -299D54354B4D4D8154D0C5608AA6D6C4ED09D5631AB2C2119ABD376657320A58 -6CC7B243584F1A5031B293D60B146F7224E711B28F794E8D9799C5C8FC799704 -DDF1B7489855B0EA10204CC3A1F9976FEBB547F4F5E23AE0224A84A717E53C5D -2AE90A92E29991B56F5C0AF5FFC088E306A5E0810BC3D5825FFACD4A18002F1F -80B45654B03540D99B08C7F961CE01DEC8C24AF5DDCAB1522F6165C0DF3A7AF8 -3005C127B12BB19A54AE14218EB5FCF3CDD612C1D8907789DBF85876744C061D -1B05C8A4F4F00F57DA6C366E6501AC0E3337729A10798D1B9B7ED3AA8F41CE34 -BC5C9783DC8EA73473C28CA115024C0980EA730E1350FA6D42B9535E47017A91 -4D753EEB28C8BACA4A243890487340136A6F7AF2198C0039FF2B061240AB5EFC -4C2E14D0CECE15F416306CC46BF801E7374296EB93FE3042BAD9D0BE47420C89 -8AFEB8ADEAE3CDFF731E08E5C351330626F9F46BC70F9D4F0945F7508621993D -E07A5DBB18AD00BD74BAA7FB659F484688C5F029668C7C4D2716B4F50F14F23C -D9D87861D31BE4E9DF010979582DEF6CB89B094DCFAB38FECED082E5607C438E -4E9824337C2CDC16C6E170E4B9EE0511FDCE4B607A93D8D3B80BD39C7CD3A96A -7F355AD40BEF95E9DA4528B81F724FC9C8787B9CDD13FD2E49C29B733221E0EE -B6C1716FE77451E0A0E8BA73410C7AEDE8364B096E71CB57EF38136FCB9B0E7B -595EF9A091BA8010725BFD45A562C324E8EC59B27B77BC00ECB94E464F5E54C6 -BE8DC7B8E70734350CB4AB9303A36835FD4CE0D47C827E14646B364126E23B94 -182C7AB4E5EA52E86E1E289146592955AD2459217A0DBAF194A268B431CFF177 -BD437D87586D2A0C7EFFAD1BE937B7D147C26A44702E8D9EBE34102057AA0772 -09F33BD5949A451DA65F7D7BB968630F5DB6F9730CE12CCF299B477C7DD49928 -D2D83DD49F09476DFB8BC1593B08A66F1C9CCBF17C9560B0A03DDC1B6527A2C9 -6D596178D97AA176782F2460C27FE2BBA7D524AD01F08432B49EE086653A9B0A -19722339950746BACA96CE7266F8C77F679D841B263E2E5089FE5769D502EF20 -860D106A02946AB4F9E4DDE29190374DEAEEF8B3ACD555C24678909A53C68592 -4B3A8C22F9EEC6F4D40F05BC79D267E9891141856DAF742B45B071CB7F36B2C4 -964DB36968DA074DB9EEBAE443222AC2476158206023DFC5435E4F36289EAEE1 -E5D91D2F1D7C43D8FF638DE531E0479F260123CBE93790D67EA1D65B3BE19E21 -5A130DEC73C19E4935C0E2AF507C4E10F0F1B941D9117BC7854CA8D7EA763D24 -9E9D69C3F5B2CD2340E27E7579AD9D5540EACCAF7947ADA49B058E092A32ACF0 -9C0EDCE85C321DFF4049AE7B4F877FB0891B1A93069EC1B7FBE19374AE7BF804 -33A03A13D5530BB948E99FA593C658D8B64DE71BDD7895D9BE395D0175A632 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR8 -%!PS-AdobeFont-1.1: CMR8 1.0 -%%CreationDate: 1991 Aug 20 16:39:40 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 48 /zero put -dup 49 /one put -dup 50 /two put -readonly def -/FontBBox{-36 -250 1070 750}readonly def -/UniqueID 5000791 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 -48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 -9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB -0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB -8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F -EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 -FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 -9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 -D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 -9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 -ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 -10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 -83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 -2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 -4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 -BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B -041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 -3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BFD4563ABA4F -D926227FAD2B2D4975835541FFB0CA8654F704B399CFBC46C30721F9DC3FA7FA -7196507B14AFC2D4CB46C2C91CA4E17E5CB05F40623E9C0CE38B0262B2CCE65E -4BE1326F3D0029B504E7F5A0052CDC692F7C1C479FE568C83DA5A5E7371113DE -04541DEE7FCE53875040E5341B0E947CF0FD55F1F6D97F025C9C51C131FFA91D -61DD3CC460122F54140CF02EC0BC8AADA195C76C63050525718026C084712245 -04C9406F091C40FF9B435C5050DADD9B95C03B27112E3A2B6E74F2B7D85E26A4 -CA8F5F65F64A062EBE106B9A3EA18CE87C48D7056F96FBCAD520E90FB31BCA8D -FABB9F9F21C0EC92927F71E4BCE55997B166E198D8AB71CA7C32B9F483521C75 -FA28895412D70550DD9E17AF920381B93B6D7341BCE1FF9A40982595FC47F7F7 -579D7F09CF4FE4A80E28A607D55650F75FF841681AFEF3421CA05D23B9020EE3 -EE37BC46AD452BC2DD361009E3469D7647E83AB90A7614193F5CF25B8E78EBF2 -149D3CD59906605B5C949C297B87BA189F6AEBF87DCD4F1CF27EFD4CFBF9D6C6 -DC4D8F7AF3F2F65EAE42C4810EE6871F56591279480FF6B50024B3ACF68A1F58 -156FFF84EC0856518094646ABB108CA65583BCD2CD9C7DCBF30CE1DE7630698E -A32B4380FDA920DFDAC489CADE8D9EC0559D59759585355D9C5D82A5FD61F9FE -6EB7E7820F5038AF4D0BDCF040F1A438034E2D2D452AB75DA4B52E284E201CF0 -7877D7DE73BA8FECBF7A819A7F75994A185C73845A9A9FC8D946628688C37F9E -8F385B367D5E17E318C34E798C5AEDEAFB7FA0855443C6CB6633A7A271AC94EC -80 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.1: CMMI10 1.100 -%%CreationDate: 1996 Jul 23 07:53:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 58 /period put -dup 60 /less put -dup 62 /greater put -dup 97 /a put -dup 105 /i put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -readonly def -/FontBBox{-32 -250 1048 750}readonly def -/UniqueID 5087385 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 -990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E -6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB -DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 -59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 -D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF -8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 -6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 -1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE -03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 -95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 -74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 -3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 -47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 -AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 -42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 -40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 -B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 -95601766758D28AA39D6FF7952C9CF80458BACD8BE9F677A3C5CA138C56802D5 -9251F4F6BE86F2F64648EA170396DCB47584B9E3EC0A226B4A4C11E5875AA0AB -7CF4C8B7A78AFB362BED6062191CFCA784471381BE7018BA29B4506FD216DCA5 -2D2827DA7C52FA96699B78E0004C7253C365B7B308EB8AC6F2A809BA7261D7FE -FFDECCB89CDFABFB55BCE9031983728DCCC7C550C50AEC4A0B5D6675724BDF54 -0884F7A7DDD8B0E34A2ADBB94EC58027A929A17136E59F305E990A54AC737C64 -CCA3799D501E3A870BFC0756A6B58A05D667683D94A36B5C02D0EFFB7C9E5EAC -3DA9ADC6717AE93674076A8A5CC11023E4408148ABF4DA98CDCC2431A495E09B -079A41FB241A5DC65D8C64AC84DBDD73AF2E7540CD9491FE6E840447D5335A4E -267E0DD8B80376A28CE0EAD4BB11E0112CD2BA2B119E340A2D5983D83C22B181 -33AB1668B19CC8750229AA961124D587D379000F854D555B72466EB73A2FD01B -C87DD4E5254CBCFB4A16EDDF5CBF1B6ADFB3F8A6A07EC223FA688185CEC766CF -733D342BD86DD0D4950049AC229C016D9182518F677285AA685F24C8F419EC4B -5F1E1B7DDD132B4AB37E29A74B4419525D3AB4077AA60FC59AB12C4FD209E82F -081A5C0644CDFF60C992BAFF1E3A4CBFEE09599BD91B9CE1AC7E0E8E5B5A3FE9 -DB90690343E773D3612974D74266CAC4E2529C8701B338CAEA87E70848EB78B0 -A4D6C39BF92FEB8225677A46B7A839BE5D9F26DD6DDA4604796B7231496C32BD -F7AF97D43264BB173DD31B7EFAC2E868D1999F23FAA4477897A597026749E33C -3B1FD76341E6E3C850BA4DB7C336A80FD72170A70F8A65EB16A00CBF52FD1861 -736A2518ECDEA5BA4C6E01A514B3A3AB39E49F67228CC8CC077B608281E8FA76 -F624C94E96FBC34ABBAA83DD4BAFFDC044371272A3854C1E75FF1306C332633A -D87F83C555191AAAD708E43060356BA69443A77F8F5F93AF088C2B0A68AF5E6C -6B278AC302A49BD8FB5ECFFC6205338EB3D0879FB65E328BE9C7BD284F7F5DF2 -44164832356A5185357A246D2DA21349B50F1717366B4907625715DCD2A7DA46 -D41274A0C8FB0FB0D52F2B1AC1D24D67DB4EB884348E0E222C1A67CA9F722797 -163D42DF6F1D9614F3DFDC017A9DBC0220D416236B00EF3CB4505DF0465673D4 -3ED7A98FC112179988EB51656915D9D44CA352AC63C8F0A14C6A263CA9F802A9 -C5DF376C56D904EB50675FAD47A5B8729D49F608182D583BC809CD7325B20D95 -F76500CE481DAE233FBD444740855C7966A670DA44700CF472A1F7A9763D5174 -BBA14C5304CCAA3736B111EDADC2251F3D03655793BAAA5CF77E6FDA37448C09 -071CA13D1577CF630672911E691A146E6B40611D327B61D5F0182DBB2DA4C60E -52E8ED1EFB739D84E99A115799F41783C07F6C2CC20412FD36A5A65471B114C9 -00201D13DE1207600D8F388C73A0490F6FFC3295C56604E0BC0E24534C8D6827 -AD0B0BF8A30EFD17B5F4001436FF51C2FE196D967519CE1591F9FE958B69B487 -1387957A585E9F67E1050CAAEBB7EF1FD149EF51E4FE724A8EF38ECC71412CB5 -D3CDEF9EBCA82BBFB672D351E9E547328DD7B909D514BD2A171CD69CC3F86C63 -7AABD036FD3E00C6165BF004055B88E31C4624DE2656DBBB2015DF66395E3D7D -7D8EF79E2FC6F3AD74BC604807A4BF633F6E043901C4B2F0D5672F529DDBA385 -15D691BDDCC7A4FFF5FCB0D363952495503BCCA1EEE09CDB92D6C965945291B7 -85251671DA6801FCD216ECE2C12A0F8A9C661481F46D89205307B84C0252113C -6AD760B16BA90E0DD6A3C5484A4BDD44002D12D4DC43B98A2216A50D8EB3403D -7E423139EB08457938DD691FE6EB20B84E4C4A0FFA18C1AD444AAE98AF23C574 -351550B1E7EC16CC8AE1B5015B77F4CDC215E3F529FCA12971DF75A13DBB1444 -092DA51E0F14BBF7FE82720AB3A04BAD30A441FB8C2CA1F4B074B070EE636BA4 -9BD1C08854CAF08C22223F6FB0CB8A67BBE295C520B41262DCD7D8F3BA1E8C4C -6BB8E1DA81144B125C9B767FFD743463DA6FD36DA3B02AA8A3CB81B2AD6E90E8 -A1F11E81D345FFF7BDE8E722075C04CE2F6624DE1B33866087AA56F5903FA03E -A97F4A4E310FFA38AE1A6326DEEE6901198C7CF9048BDF4965539FC634FE97D6 -21FF32B1317168055E2E24D01C2176CB96BF24F854236645C7B0DECAC9C8BAAA -DABE14F8BC3A0F1CA18883C4C769ABE2FFD0547E0B2D74A9601B73C5653093F3 -EF09428F784204E03AD5D3F9C7FB0B8232939D1CAC61FCB6D2EA4E5B73E92C09 -6A4758416F5AF1F5A7907734176D85C7D24A4256132B1C566856EB2D24266B59 -635A142D1C617BB8656A43DE2F3224186C8DE5510E6C461234ECCB1D06CE5FD0 -6104AC19D9D06E547E59F01F40B908B1FD3B3321E725F301E6220B0F0088C311 -DB482ADA24778BB574456718B4DDE850F260B12FF313F53234A5336320A43E09 -5BB7CE09E60402365BF31C4A226D844D0F2BC6D6EB8664D3 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 14 /ffi put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 58 /colon put -dup 61 /equal put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 77 /M put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E2A1040FAF2DE1FD6AFD5FD97EAAB614 -956897A7BA8B194E613047BF469C7B4261CACC1DF1648E8A86E926F8702B5ACA -6CEB4E3E85EF23EF5C9C53097F3BF17243B8D4BF0E6B0C5982FD14E4E916D363 -E265322DF0823E9990F966A842ED69BADFAC2CD1754FC84C0FF6750D2373F997 -362DDA16A0D73B178FB7B67307204AF174AB871C254B8E7CD77058113B702B2C -13F341A972B67756D65C6A9F553C365E20F0BA59F8537C88E0C13F87CEC69C9E -0775F760C4EE10819388782A2CC2E9C000DCBA76E4EFC7B390E50611F3D4F6A9 -CE60FC3B742F046E84B4A302F5DB51092CD59F103DEE2910757696C3F131517C -416687E6DF671911BFEFE08D1C5D0B16F9302960E29760EE101C5BDFBA4176A0 -260ED46500F88BD388506DA361B0E9FD796196E66B332C82CFFEB7974F9E4428 -B82C64ACBDF865B4356C4E2C8E6ED840AD5579B7E08BFA3BD81AB1FAE47901EA -E298F60FFB651A0ADDD1C312033C9D1FD4D0FEE44FAC4B0288339260EA04A5D5 -DE3818E473E0994B2E20DAD9A162A813FCF85C86F68CB548AC66A1F21DD103F5 -9F2FD4668265DA500C58AD8EE472B30B7BAD8B85CCC2020107EF548D374E89E2 -704D3E6926AB30382F6A4FB33262E029C44D874EE1812B3F153E63FE095A87CC -113B93091131B3AB42D9AB7366E90D0961C777227A28DDECE0BA67F787720D3D -C5683F6B5C7B7D12DE631FE0295EB63EC5DB38E64DB524FE3977178AF94D5050 -D539B7D5656CA1672C887BEBCB7D875496B6C8FBA9A8C1BED057B42F0DE1653D -F305179E9558AAAC5AD74EAADE8D2B862E22221DDF3A89648C906439AE07FE19 -27CE25814E3AE5FE82EB4090A1BACE6368F58C157823DEA843CAFDCB1B032E30 -DF3C8FB669970548513F3190DD3D94D9CDBC26DC1BEA29A7B74417957307B167 -0FA6C3DE33F6EF3D0AA0A09EF98FF43B1D23ED27CE0393A1761C1041B8CB9532 -F7F8FFF5D3874E5D5D8A0EF03FA1ED6743BF4019DCC5FF31D71DA9FE860618EA -ACFBF4978B2885510BD2D405B446D923560F730E04A7C81BD952368A40C5C107 -248B52378E7ECCE829DABF3873ED27807460184A30BF70B703B01EDB0468A82C -50547DBCD4204A19770A190BDFAD6FD71E0A16BC974D8F0867DD9FAAD38A467B -4BA8E73CB37667A4E9937C66A66DF8D146E68C6804073D604998977BFC1F87C1 -FB5F6088590EF3CB90968EBA82895969C0533463F7FF2E989AD7FDA43115871C -F3784C84C1D91F691B46FD11A114770309DDAC48A9A2169D6B7A02B9C88C2890 -D487AE54F8E455756590A94DBCF2BE11F46911B3303A51EB464E0A27876466D5 -9A118A25830FAD40C8D9813E02B284555BA9AFC78B9B2C3BAC419B073BD9B490 -C383D7102E93C5DC8D2EB3F557FE369EE7D9ABAF5FD9D0F88C49927AE04C0CA3 -5BF18F98411C0062CDC76EBACCBE0C14AD6E6BDC7EB748429A98D0C100D758C4 -23D376E2C0BC2A763A75A6480A236C8C4D8B0044E0974BDCFED45289F709CD70 -B5A70CA192E0C1B43A5D2857E13432D0FA253424EB2AC136DEBE952D63253CF8 -B2ABD58C320DF9C0EAF264C454AA0028E1F56B6A974878725833B757AFFAA833 -93B4DB37F2EC6902963A7AF12EBCD1862A16F25F989EBE41076CD2FB8D8E3578 -9A2C6F00E9E7C3A32B67413B6B15A7E5EE4629C4840E5FBB2F4EDE53EE467A52 -0AA83EBB397F36592E7BBB7B271B81C6D7707EC40DBE60896BCDAC0529F25BB5 -7C466657394EFE36440D190464CBC150219DB93D66BAD6F6FACC452C24A093E5 -2D0665B53ABBB0027EE8D4E06341B28018B02ADAB738A0D02AFE051CACC1BD02 -7AD41A9803BB1D9851D8DD3220CE7147F0BC2438A540034BEA0A62BEC8B76253 -F462459A9725E160106809956457087B4DDC52C4FD5D83BB8B65DB672A57FB0F -57D02A42C4ECC6FA46BA57FB802C523D0684935A1AA2FC3D67F8D0EB3A5A0666 -2EF54896D591700D8FBE1697A6FFE6D20FB56044D1AD712267A342BBF78CB6E8 -C0762E12028682221BFA7FD6BE04E72E625BC6E6ECF29362D901F27787463780 -5E8FDD124F7347F2744A6F47A48B449D1C66335CAE65BE7DC1FAF6816D947F6A -62CB50170220A6467FB45874FBD58F2A69CD25C5875EF90A03122B6ADA5CE314 -34BDAB08F269D8A5C286B29E9989807425CDA141AA2E684C27895358E3FEB96E -A7B65BC33AE8B41B1677348F547DD99C1CF67E1044B155E54AE55E2A0E4FEF83 -83C07325CD0E3DFD461203366D15F514CC9A9329E2634AD6E3E407FD014920E9 -D531FFCB1353885C248966AD958D919241B275137C92482A00E2DBE0711B0BB2 -5F50DEC765807A84A65A8979E20745989F2C9AE2927A7EF70565B61C625D1F2D -D409BA6E7B59CB2FF629A4ACA5C72D87D3C27930AAE02CCC26BFBED453822C81 -078DDCB4536E4FB9A273B04E51EA2F34D442FD3C7BE0743EE75CEDA1A03F46CC -EBAE816EDF081BFA93D5D628704059B2A90FE670E0D2C526037D4F6964C07AB6 -B2A9C1CB5B410291488BDD85807CF4A2263C29304EACDAE85B5F0AEE93AD6DE1 -C613522613D452514A07425DE5B33DEAC287B0783A383CB3F943A6B268DD06A0 -0F56D9EAFC5752E56CB95D151CAA5BDC4D5B1BBD85FE2E382CD3194CDC35C51C -07D1142940AA3DB7162AD50BEC3722A727A6D79349EABAFCDD0C835A1D641C88 -A9493D3E7EE8C89CA6A70946526D0049B2DD60BE6900FDFA4FEA016C52596264 -C403698578A99AAB76A4533C111A14823517826496DD8BE9E3C28619B2752A37 -D9A47C2EAF27B7FA3112D9C9827FE1DCBE4FC6CA6E4B48F473B8F3FDBBCFD34C -75D74F03E388D540031288C735B24A8D5B601A35FF2E3F360FB4E2070E8E4B15 -B3DAAB0AA09CE95427647F69F3ACB528C3436D84ECCF415BF56B91D9DB5B4806 -AF0494B61C4E446540CB6642672C0579A7A8BFD402CD49402E0500EB4D7A16B2 -254768AE131E7463F2A9816062781605BFABCAB57893AFF1CF0F838A25FFD75D -A832F4760E6FC211DA85989614AB3A1D2D97475B1970170467E43664DC648DC1 -C3690E3EB33B5C820C5BC4C1ED1AFDE18EE9A533ADC6F2F63BC6E2A09882AEE3 -BE26C47472F9EFEC0D623DD3C10B3CB14D1BEF488ADF2A001CD8D8DCE1CA3A2D -DB4262A08CB3EE5C95C20CE41F6EA646CBEFF392EF00A7DFBF025B6CFAB58E5D -12C87FC692742060BD1A033E45BE8D231C5F17A83BFED7CE778775D347011C46 -6C6950020F7D4B6E235DACF38169E795E49C4DCA758C6A7EA0240CF1FB6F5E65 -4CF71151CE725CFD2E0716D1CB052DF98D5E208484D1D87F890A9833BE9A7309 -0E9145979BDF325DD83536F4FDA19C575B67F03481C5E150FC01DC93C6E4AD8A -A5CB1FAFDF7C9006EBA89D4EC52A74E1790AE93FD54FF98E62385E68BA5FD89A -EE7C45654FB03BB40D889FA498F1650A4F9C075917820DCA5292F6F2522886CC -47E218CC0BE89CEFDD87F35E23DFC8BA9AB4C66D9C9878C0D133DFA2C94BED20 -9A75E25176292978C1B949BD74DA950B6FB4415E1B529D9E39A62962240BD227 -EF77B4342AE5B1B3F6581FD0AE70768A640A8A9F3B5691C1C9EB6C5E528476FD -C79B45BDEF7DCB51AD484C72E6DB5CF57A2F0F2EA77DF98DB2B17B1876F9B0E3 -DB5B64E96B55E1B2F9EB65E70C53208C0128F834E519EBFEC70D0FD7B751980F -D214F399FB687FFED317905E1C816AFBF755D2F1B7E90B929DC20DA4B771EFF0 -E43414A2503EA8A297922A36CCA6D921EE9DAF57C0CE633BC5311B965CEEE275 -788E634F9FA695C0C25569E4F2BEC0B8F424F1D8C5D0EA988260A95525582324 -7E6D31D066FB80D9D7889ABC1E4187C4FBF58C582697906944E5768710915BE3 -B41BF0504E2F41013B7A3B0589DE91D386334FF42121D22C254E2B8C8B5F8427 -050EA7C47D425D1C89FC2B9BAF0A94D0E8CEE40AFE00E0718F04F926F87895D1 -6EAAFDBD6138D77331887F2D55CE1A835F31E72E983880DA00937244171C7FE9 -A741175BBC41DB7A0BFEDAF20F43C350F22BBEE74B2AF51C0F49E629FB83D85A -B599914DE6C2C857195AC85A672739850E16BCBBE920013320604D6568803D39 -8F6BDEBE7B4A5ED0C15265B858F7723F7B79E20999BD6BC5B886123CAB494844 -DB0DD3A9CD3415B1EE4308F943BFF68FEA2AF83917224E5FA6367A771A20A4F6 -79AB28377FEDE3DB08FB2DAE1E24D3C30063D1EE3CBFD5B43B7BEE20BF29E6A4 -72198B49BEF8D019620E1D8EE0D4DE270567B61C96E6D1BFA098B86EA3AC1ADF -C01F2BEE1BBE965E849F20070BF82EC5089F51102541B11CC1B4EEE2F9027BFD -39684B85C35D228F9C8E491892C406882D3A8F93CEBD83E055F5004A686FDC51 -280C18C68EA28BDACF53A26C67D94F98399F3A94117CB3AC1C1C07E6733028DB -69742D7A453CE15C19E21222E2AB993EC8030EED6E036846DD45482DB447A64B -109FC32F6928AA4D1ACCB22D35EE6AF12F9ED587306B554CFA90E69D41E7FC14 -4E92BC9FFF5DC9BAA1973228B590A2BFF4859EBDE5AAAEBC7757E369CD37B96F -106F7C149A10E51031B85FEF48285A1C5ABD8B26D156CDF89BD95C27F185FD00 -F773C41B06CC49F3D3AB05849E91FA51FB3AA0F247C9603513269EF27156DFE3 -A708599C08C5B94F3CE77965EEA584A64BA5C533843854B520220867524ADA36 -814C92E1443EFB344C0A20BDCCB34288D62FD675BF7EB3D6F3295D5256769B33 -4B56DF9C48D550398B008C8F0B52C17D06996216CA2CCB5BFBA3CE9028AE3231 -804EAC3ED7A412174CD8B9F49093319B1CA96CA39603ABF2EC451F9708A1C7EF -460D46A74AE5DAF5C2DD508CD895A71BF2D97130B309A8A6C136CA3146B16C1C -74F6944FAA3E630FED6CA5858435822539942F4F1FF3E53A2098592C82F1BA01 -8B4ABCFE8B1831C67405B24841AA4C9D6C323F421927A796ADE31E673D1E5F18 -A30333B895500624C63EC0D2C3C0B9B3311266E987E384F911F452D63A7540A1 -9428ADB8722993C0089B4E64117CE93AC21DA27E80E7328652DA1D4E9E6A0CD6 -D18E901E0AFD95D01F346CCE3DFD102A881125D70932326187705ADB75B6DE8A -D1B7BF9E8EB8C54E4FD16572297A835A20CA53F45AADBA22F433C6179431D80C -A479F2D58B0D7574E7BA7C182A8C805BF3B35A3B98A9C9058100999CF6E63DB9 -82AEF5B9B2D362555C40AA96688ECD98AAE3CBFFBDD1C2FEB71EE757276EE252 -590C50BAA2AF539F53AB9CDFE3FF8400E0BB870653BF23DBC8C3B4E409536053 -466E276197011BB34C3F33B16E6DB8378865BAC15842E30DAE75886F30345945 -2A84BFD439AF83ECF72A987A28130901DA3CEF40200A6034F1CEDC5EBB5EEE7B -D3736EDC244188D48EA1B08EB40A19033137327AFFD6063B3BE87D3A41558120 -6D3D0C325BD3BC0A4B516DC513826B5F37748E971EE1143D421B254C83BE2BD8 -934CDF3682C86670CE5C1A0552CF854841D8AD8859E3743AD9B139F27D0D6FF6 -7AE5712CEAC46457AC82C4A79F56CAF9D78368DAE47989E670C31C68122B3125 -E879215173529681D5ADD0B8D28A5DC77DACABC59C223AAE811D882B0BC79399 -430A5EB7CB2C2315D2BA2993C3F7F46BE3F1EEBCFF5FC46921C4E393C94ED58B -55485D9ABA86664F918FF7414C7187D46546A5F9023D5965F29D405791C78F57 -F4BAD309E0CCD31C6848A813B98368EE0E3B7AB10A0649CCD7BCAE7F6D55806F -2D646022AE9552468C0B1936AA72CEBC56C5C4288F7C7C0605FFE78CA71D8FAC -6B45AD0CA1E251B6094160B5B7A3203C191EEDBA3B5EFFF15BF129F6688C7F76 -78230FEC610F6D908461FCD932EC57432DE4AF6703D2F2CAD51B76E2A74336B7 -4BD1B5C6BE1F33A0FB493385C7809BBDB820D58794AF48CE0F3DBCE3172C3C20 -2BCA43E5750C8A76DD53168C73D77B14E855C8888E63780774FFBB44FB0415C0 -CE70D715784E6CCFBBAC81F231EE8A5BD8ED5E4A86426083D4773F3C82317369 -F01DE58CE2085F7DDE3C93E8C557B3FE3DA2D09A237FA7492B45DE0C1D429A48 -D1FEF972F73C8172DA6446D06128630083DD124B9ADC41787701D9C7EAE79194 -3C2CFEF7DE89541E4FAABC39881A33A4C5AC604735DB04671F3A14F94D0C78A1 -BFD33D80E7584A0C2B5CF59EF28021970CF490B54ADC3954EEAD79F4A04ECAB7 -942A391573519E703E425C4A1E40E4124F4DE7BEF5ADC2CFE4B7DB54EC8D9716 -6317E78BCC28D4D8D49F65E95B8E392AE865E58269F6FBBD0EDE42E3FEC8B42B -6B5CFB52BD9DC8D532BA6B958AFBD63E929B529A79301F416C06B854DF4540C3 -E111DD9860F6F4D1FF68246116C079B5748CA330325B5268F41B072747EC9BEC -C27D78523F014B011A0E41259816ABD226D9EFFA7DF38E95DA11887CA6E8A2E7 -2875782847087788111A2C88472FB7D6A900188F359949A88A93ABCC231D7358 -D51037ED4F1C6AC08EA1471114D492C14B04B62CBD12B82A497F684CDDFDC7DA -FC26DA5DA52A8A18A4C6FE15199F76E9E6729AA1D240DC90E90FA67BE09B8912 -DD5E608290C8E75D2B40E200289953D346019D4523180025DF1BDF37C300E15A -24A8717158979C1F99E3990E654A446996749F53F52DEA7780D943E447B33288 -B68BA18796E19FDBEACA8E8E3415C7E857FEF013225EA96DE3D964DBD5125DF2 -AA00F1E9C3B30C04FA9678FB0E1E5B3E60D38E264F22EB7DBA1CD46C4AE6134C -307E76C1108811B282FCDE47568B4F7642D723612E84C160E051B932D8F6732C -92921FE3E446A33CDC6EB53F959FD2FCCC88B146BCD280455ABD7CF5C7E2FB28 -05684B8163A073F83F3745C35F3A62AE0A4BEE8F6EEED01B16A24332EF65FE7D -48EB0458D94BF50D2DF3B4DC8B771D7E20EAACD168E823A7760D065AAA2B94FD -EBF6B0E9E6E8433B9AFE85E1865842526A44CBCB381D66A03BC66C76584FCB9F -00044D423BFBD93A0510B4B4F626C85596C0C11BE3008A509E39AB5C47EFE354 -6F87ADBF5263D80B9AF1745CBC4B10A1F1B5F0FAFB3CDBE96CC4652D420C3C20 -D75F32E72892650F29BA228FFC15662AFD34B6D02CC96CAF71FD06473309BA28 -1718BC85ACD00FE00E1259E4A970F9D56B1EA25E473B4852C6D56B56C6402A3E -1C4652A6EBF6ACB11F621BE6B1BAE6B75C116E28E230D70A6807826C7EA5A0C4 -3F5E89F571034C581C9FA5B36B5B1091D42E42E031E92C6A10341D52B5A44483 -4ACFC17C50B0C42403CBEEC79BFC67D6874B9D8D755FF0E1E26BA2987D3B4235 -BF9B5DFF6085B45B28142D6142236DC51614F331AE07DC6DC15812CCE222A74A -F98B82534E5787F678F9E747AAA67DD09368A154E5D761CC933512DB74E03053 -BEDB9B0B775170221F5FC45AD59142D5CABF50EA33011040405EF28D6D33BE32 -6608B8DABA70E0CCAB8EE5683E0287851F644EC4509AE08986E7BE729EC28764 -86AC2D3C7F39D967A95A16990929CB6526F3D4D32B7FF771615EABEA30AFE4BD -6474A7F818640DD9D2F2CE9CB5871A99C8C07F9D1FA1BEF3BAC1F9599AEC579C -D0685B359BD175347797B3D2FB40B565F8BC3E017EFEB1B1B218AB981C658192 -7B672F15A3EEDAF596E10F77B59FE2FA13DE71838B7B5879C46F2E2C30183901 -AB75DC039CC8C9098DCAA68B9496FC4093CC517372DDEF101203956C75018FAC -046F9D2F04F3300F1FBE31566EA35B752F42EF6E91E93D40EDC21374D0DC0F25 -06F3393807467C2738A3CAFD3B6E819DC70C9AD9758E29A5986291F1FFCAF816 -A38689937355BA937A8DCE46B9A72F9FE4EABBBB65567A2F696362F2970CFFFD -991DA1582851A96451B0653F2B5D0D86D607B00C7ECF86743FBDFFC23FF4C124 -E174D6114E6BC0B84A8119BBC5E7EF2641587EDF78B8F7A67504F7F1336EE5DE -A70E56DC24DC4C0BBCD6F96C523EB11D996788D791524BF386E3B36153F0261C -AE5B6671E93E1E1950B204772846DC789EB3901876C7BFBC866587BEA1AB1005 -0B17D1B8B09B477FCCE271E6C68C61A60E85494FADF55980EA5556FE3C4DDDFB -825D95091A7787E5F8297E83F7AE8023B11FFD0D05CDAB52AF9EA71A72860C91 -FF072D940164B91A3AFDFD0A96F9764CCA9677F4517AB894C01F819E0E72BBC6 -EBA71E8150F3E76ABC0CB2E5C6F5FE753A2801E5467DC32BB394D7DA0B26B49D -4C2EC49876F8FF0CDD69CB474B9E7C506050537BF27A6C982B668689FC4D328B -ACD5F1E617FBB912E1FB6140D76B91B35F3B2D1CF8D957B2B6C6C1A97FA1AF41 -CA56B8B8AA0550554298CBF5609B7F5C23EAEDA24E4FDC7357B234BF09AFF31A -F958B58BA4EEBA11CB890AAAAAC11F04804035FC96196F106E9EF3AFCD199516 -FDCF85C896B375C69019509BEF0A05B59C81656D654591DB60777063A2724B77 -C8959A36D811CF3FD971CD6F87E72F9094D4216FBD5A313339961DB572D544A1 -ABECF1F422DE8896AD7D8A8F15015C22E047480568F45AB81F68FB60E662C9D8 -C9481CF1E74411EAF105A58AC29D9D5AB32C9DCFFDF61B008EA132517EE3D813 -8BABA87C0D98761F3DBC3E6BA6B6D86CB8C743E8B368028CF7592059B4B70B5B -1A1746F411C947B69E6411C24341AFA7865BD45D33696763E488DEFB6AC7DED7 -585844C386FF2FFA7FD1564AA150AE3B75CEB89BA4D32CB1AD0FB799C4985BA6 -7A7FC9100C77E9231212EBB5B0A3A1320B2C4E24EF0FFD4B1CC2FF7DECE2BD9E -80CAD8147CECE4663C8EAE64B788F1625FB1EB9C31897688BEC6308FD11C0D83 -13BE76E0E5A86164C99D560214F16F9AFED7FC7FD89E2D04C8240F31B41EF249 -3F072D2F597583F2174AB18B18D9E7E043FC12EB040930E9ED080D1367EF42A1 -264B26BE1DC5E72E67B9B7D8491B92E71FD52329EAE2CB01B5378B97BC1DDFB3 -B1D67612007B89CCCA8135A78C42A8B1E3928C50838152DBEB8BC2EFB2739BB8 -393B6161A03DE4D4C327A634C960C7E17FFCD9D9CADD812029670F865F45B693 -3B3ADF59E2EA06F3FAC27339ACCDA422060CDC337690E42037A6AA25C7B03633 -BDC5689E02DF9B761D1298F3FE87F56456D68ED089785C51873967D8BEE08A6E -1FB01EF5DFFFA9FD6C7049255DEEF49BF1159DB61585196A2CC5BE595B68BFE1 -DD35805933F029566B6D36DD6BC14E96C9A8D435DA500305C160994EB69625AF -88B0562DA2B6ED46398E581F2D7A344C02E9444A88ADEAD38309A708A4A30342 -0CB6F38A9A11586851EC9D30B2EB40FC4479C268819DD68262C15F9A76F85B0D -E78AB63AD27906F65938CD61EB802E96BE120D7C92094F2080F28031E048B408 -174BEB1193C0007B091024E33AA63D842B5125BD15B32E7CA2DB0DD56774DDE8 -9F10430AAE098B4B912DF94E39D692B33A5A3E743619F7DA4782F1D3718C539F -C8AADF17A5638BAB1068A8B73C833406C94F0603A63923110E06F2AAB9B703BA -0080C4D0924C71F51051239A2DDCC2DEA6DADA7090AD1993B9338FDDFC936C34 -D0D3CF6963C0AB4B41137CDBF487DDBFEF6A79FC0DBE8CDCFD45700BC551979D -44F9AE482E452E5AB6D90C5142087E752A01E8002373B48A0270BACE95C8CC70 -1A6A7FA4FB2FB5396A62561C644A68CBF2CA5A5533AC3222B1AE0CD9DDED1198 -9802EB5C91A8F49AE8C5A0BDAD5BC544CFC9E50B52DB74B31DD61DEC7E31DEE9 -FD0E429D9F29B1D99515E42B461A90A5A90D4345D6401DB8F4B91BDD8F735A76 -101295D3C0EF7EFFBAF8ED1987D64A01A3E69B91188939CC0CA3CDFF4E9BF29B -CE07223E2F3809FA3539F5B2FC4F6ABD212595F5766A9AC2CD6A43E171642F82 -655BE91B3E1C7C5CA9A0D293DAE6DD956A041F249D439854582B3670E82F135F -653767476611BF76365562DD28933F3EBEEB196DC06A2C61271290AFB6383A77 -D5B2B7A391216802B176F911D3179E558C4160BB21C41CF3DDB785A8FCE2C80D -D6CDF4233248F068C795E4EE9C8BF78DE2D4A3716D5BFB4382AE03D415B705AA -BD3F98981266E9EF982B614CBBE422190DBB28DB11B2DB7ED0E293534F5F1FF5 -9763A0F3BE819627B65732AB62975411E030311C60C37D663DBB7372C5145680 -891A80557B91FE3A6A846A0FB85ADF20A2D5EE53A1B138AD927E15DB4BEAF63A -B27463E7289154393966C7012DE5627A41EED6E1DE6B6550D30810364FF46AFF -4C846047204DF4D1D47B6BB25F6F3EA293FB5D14AD4A08A7911FA1891CA6E283 -972727DD2C8EE205BD7A216E87E68BEEDE8F07AD299923A1B8F9AE31B35B07B4 -7FC38E6201D303523597DEC5FCACE9A537D21B8C87557AB902639331D7CB5B51 -A16933FB5AF1F6F8D6DE31EAAEA0D9E311A2098A9A4495D226B2FE2A248C41FA -242CCE1DE1DCC340C9F7A73CD912D63BA718D614A419A6CC254A362FE9B1C0E4 -CE06BD7C2555C3F7DA13B2EA023E783EF2645938B2C34707A24AB87B2F3426A5 -A3BFDE6BDD22C9FF52538F3BC7C7ADB51C3B1247E773517C94A83ADCFF61646A -35F63E85138D70D09CDE947526FD35916D0590B2A5F12590DE2109D40B5A8ADD -F9FDCCA51DC15A1E29D29012668FA2CCE5CA85CA84816C7F90082735B36842FD -00F40C192E717368C634C4005AAEBBEA6E887691874C9A8CA9499AAE33B040C1 -8C6E9BF4417503E8C02FA72052861C3D138F5DB3A9EF5A6381DF5E2A2D980143 -B354F06EC5719468926CBF7ACEDF2AB9E085E2D3A0AA261BC4266D6BC2A26A36 -6F18CE9D8E68F21DCB333E5D812D46B0CABD57A128D412CE8179CB50C5317E19 -40A7774955D3D2444071C3CFFC800116BA099678FB1975F78237DB6D9552A22B -1BCEA6F069F7E0BE37B90B4FCAA2272F846CD6A8262BAEA6DA010DF6A7EB9C92 -CCAFF394247FC54BF54281DF64682011788D2C2CABF504BF11FB2B7BDA652179 -3396388C2BCAC35AD2E11D5C6EC8A7EB2C9C14B9AA4B8C8B8DF0BF4DD2F978BF -3E6E654530E1A6321B3CF09492E6969075AD5509609372345B49CF85938B63C6 -151A21DDBE77E8E6996850ED6F46FCC507AB43585845B0EE4277D4426A84EA37 -6E5586A224744D1C01E43106787C481239B08E411AB91898931EF386E3CA37A1 -840360CEAAAEA4360C992B4F7466A6B4CB352F073B9B835E62513196677BF825 -9EB92026609209AAE0767DD893CD97BD1801880736A62AC21525A4E88AC752B3 -B9A4A472F943A9B5A6B9F4C6F6F24CC1A879175406CE71E1E068BAEA855D2DFB -EB9A83A3EA0513E449FC3EA78087CCADE8AF747A3C04AF2E5ADA2E5775B0CE85 -44B629870837FD5A5DB2DF154A41EBA8DB3F104E97D10A98F421D6038E8A58C4 -3B7A5F3E393AAB66F009789B76F947CC2BA79B2E20C636C59EEF0EAD84F3EE39 -FDC3D6582EBEEB6628DF71F64B8C1C83C7AF58E4E19132C8E6FFE6EC6B882129 -8552D42F2F070EB5FC9C689419D0BFCA4B005624F84D75BC6D8CCC6CCBD22D88 -23B83EA456EED927FEB1AB4EE3D5110882DCDB27DE1CE25E36805580EF2EB880 -7F4C18A72B8427021E6BDDF3AEC7EB4DC47A41A0235B827EA1283C1085E6FCBC -D170375D2FB19AB6102300329D6A5C4617DC51E3F704BDC6AAA76C19EC284EB0 -50DD8D3397B2A28C2DFBFBF05DFC1067D827E366165294042EECA5686C507A8C -0C887D1A3FF6CC060383735176CDDCCB2D1D47B7D62C1774DE9E36463DECA2DD -62FD622508008D8870FD7E6AE4E8389F2383DF88F4248031AC8F98E2D0D63087 -2F1E4342590CA82C69415624595148A3CB9FCC40A7147BA4194F86DB865B8F69 -D1AB504BF23734FB2F7FD69BCDE68C6D5C93705B70EB60F08CC763572D5BF37C -E64E60B897033EE717A3EAA11EF7C8284AAC81C848FDDD27FFD68E0F024E4054 -CC0C89ACF93716F6C2D01D8C3C76A1715BA4A809D73BDE433E74365397B20DFA -492E99E222C8F853983088DCA5D757527763120619083176AC3618C87B9B65CF -140D6CD64FAA4DD8AEAC9F1E397CD6B172E8A9E3B008777301C2FC782923B37D -8C9CAA832299A3E5218735781B753A97C6663B7718990304815E6F2A0A979672 -C304EFA5DBBC04998964F34DF5FE19CCB30A5B8E5C993DEA512A588130408DA1 -904E10EB65778ACA5391DC6E435F2823957ED910120789D96709D29317642EA0 -701409E937340212F02DB6D5272CA2D01BBC231F010BB8A0146C064DDE19FFD7 -B89F26ACB7BF96D62B0DFD6B5BF0E084F659D1515371004EE2206062139EA96F -FF57E9B02C4C0F3454A49B87954849AEF87B670FC95D891E629DC8AC79B19E9B -5E3C65AF40030DC259691CD9CFB7D5BCFDBC99609894E24ECFADF0BC40B853DB -57739C55283C120D71A3347C671BF0AD9B91831B5E9A008FB4C6CCDB613BD551 -71905CDFA923652B171A4E30139D34C3753FC2EBB1D2F1F24A6A703031857AE4 -D4EE2DD8717CB16621AB0B4309CBA6FF50EB3288DB0681CCDE2B030BD137DDDE -0D5A61B62589E47E12A9DDEC080524F5E0DE104D2E3B40CC1C53194C23B9D8FB -DD216042FDB92C02BCA16E3B46E05EE0330D90972D54B1A33E90C672FBD1C5E5 -450338F6CBF39C4063BCFF351DC0E786DC17AB1C6287D9CE775C20E4F8D174AF -63D8CCF4B516C1507FD4D8162602051F190A2B7A5B6C6D3EDC61F8D37E70B886 -C1D37299544D228D0B9388B5E7535F2936441C59E9E92DEB831812CF2C24288F -0D55E859BD47BC083C4C0EFE2CCA81662AFD44ED9E2C4C24F67DAB8B5932BF41 -ECE566DA17536BFBED20915EFF40B14C88B0C8E6738AF3D2EA4EBA5A3033E4B1 -40DC6129D2685B5F53157FFBEC7C8A2560E8C598B5339A73A416CE0FC3557390 -2309FC2362A4EC5DE8E4081D57C94BACA48A805E2FCCEF55528AD1F7D014D789 -84B6450BAD07D65CBB924900BEB5F08B9A073432B32E658DD2CA5B73E4FFEC93 -4906C4722A4A2A3B4798F1BB6AC71BC439BC85AF436BBD1B92270A450D0EDF5A -9F0C3964B09F300E2A1DDCB36D79B545BD8CF4A9C207664A29A77328F0BEA111 -4F707D65ADBADCC7735A1993C0708D50F999B6B31FC4B32B401A443BCF6AAD5E -C188D3BB6DC249128D0C9BB1A9AE14B44A95E9D4092522F1F6724F927EA9BA54 -F9A9CCC7008884B24BE818BA228FE6CB9467245034747DF4F1804B2EA92C37DA -8FB4A7E8C81F3FC4698AA29FACE15A0A3DCF8B2B74E0E19D02FDFEBE6104FA88 -C50EB79195631661034819F2C72F1490AD2DB3549B4903758AC9E32B884C57AA -87AC12D0ECD5E4D9EC12C1C39A77061D2A175799F1E69131A7494D758CCAC403 -0BD8714215EA594D0D87C2A7AFB9EB96C39ED0BD8AB51E0911E43B8724495CAA -12A4EFF873D3D10F5B3CBE4BCBCC1C284999B906F57BB27C948FE75FB4E0E107 -CFD6C0396D3B0F5D1BAB8E5BE0E4A234606A6643F9EB02069622CD24F6C82DE6 -FFF8C3EA2DA46EE72262D50579BDCD41C6AE6EDF5AA41C7AA8D35944956C730C -6846658ED7F83703D122D8CF8177627839735B5F78836E5F6D0E1C743F029640 -39CB7C4420994CB8F52FDF7B2FDFE22BE2A793503E939A8AD2952F94EE6CC215 -7EB1796426AD05E1EC169E7F6CDCD7CFB75A715B62441067614F179664F0B97F -EDF95572B0C002633897C6B06D8898D800E9988D153A3A50B616D564FBDD9B17 -D490376F4CCE8665B91E01975EC156F952BEF95D825CB7718FECC46D39C80644 -88D6FAAE73753542950002B98F7BDB9EBA969E2DF02D0CF529E6F59670D30CB6 -270C07419DD21D0592428DA1D0F96DC070E02FA169CCE595B43B72C4019A5911 -0B0A7BC242DBE78A153499EB04869F5A5BCFA61592EA6190D7FD7333C9827FA0 -0E9E848A5888651167D798D03E36FBD7EFD5E03BBC9B84ACAA5D5FD3C09E895B -09CCB00C848F9EBA0E8D81A5D6E4F8CEAC6CD229AED32D1B0216BAC234A2E82A -21DD4287A0A47B212A5C525E0010462AC845C708779BF76E8A085DFB7CA10259 -685370D32171DBEBE8AA28281FCD25C73699A432DF44357F2A2E02D2A347508C -7EABB5F379D31604EA828DD03FD2F7CAF187CC033FC44AB065E1268EFE609C00 -01E6C6E324E18622CCBB52699A8A81F8EE4C3898EB10F22885DADDE8F5C8D628 -2EAC647BDBA46F9732E782EC525357C525D71AA14361CD10ECACBB264D49524D -0EFDA71CA6841D7D129A2314B0C91ECF0156330657399E4D210E90914074EE11 -522A045972CDC3E6F76701379DB0657B14DC83DBAAD561CEDF2643FA0D4804C5 -13044960CB91ECA86EC738C6A25CBC77145BF55F72EFACA257FDE8B4309E1CED -0654E86A64A24D910F41C5D1C6A3AE33E3D874A6ED91A20183BCCA092C7B048E -70454F4E04BAA725DE3F3BD2454E3829AA3D5B62ADBC48A125A96E3D4E4027E9 -E0B696D849D3BC34F081641DD2D6A893664372CC8A57F8D53BD34ACE65B0B036 -1C345BD3969E78B253F5078012A8CD65E7D7186C04149978635237984A1A8CEA -AD0A71C52F813F33E81D39FF8FCACD22659AAAD16D62BFDE9D0BAEE76B246D4A -5A18A3832217B3FBCFDCAA72D0791B9CB69E0172DB01A644C620106F3A7FBB05 -B7CE2C03F96983A894C358AC5EE55A834FC7C5F9582E34013CEE3D20BEF5578F -100DF7EBCB15E6C5C058E19FFFC1FEF12FB3CBEF57ECF0FDA7665B0FA7780A65 -8C23059245BDA944490D2FC07408199FDEC629 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR12 -%!PS-AdobeFont-1.1: CMR12 1.0 -%%CreationDate: 1991 Aug 20 16:38:05 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 40 /parenleft put -dup 41 /parenright put -dup 45 /hyphen put -dup 46 /period put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 55 /seven put -dup 58 /colon put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 71 /G put -dup 73 /I put -dup 77 /M put -dup 78 /N put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 121 /y put -dup 127 /dieresis put -readonly def -/FontBBox{-34 -251 988 750}readonly def -/UniqueID 5000794 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E -59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 -51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 -DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A -AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F -45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 -821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE -96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D -9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 -26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 -140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 -1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 -1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB -377D3061A20B1EB98796B8607EECBC699445EAA866C38E03ED7D4F3EDBCA1926 -2AF6A41F67AFCFBF3630C943FA111E4CCD988A7363F7C2B75EAF5830B049460E -0D2B337988F150B9182E989E7750C51BA83DF37685483F86D1F47478883F3F6A -4B7F768DA5AA89E8F163029ADD4A9209DE8A4F285766C06EA859639B92CCCDCA -F59B1C2BB8D588CA754D1257BFF76B53984DF4937093AAEF79009D32A29A4C16 -FB610C7D6713482C48D7F9E8410C0F00AD6E67021056B6035534E79F05D14EF2 -4E8132B64B758FCA7C82E68839F7C04865241D018CD40479E07FABACD86FC192 -61DE4D8AAC0523B9BB8F90C04C31CCE37CB2CFE826895DE148C1BD5E8454C2AD -E7009CC11F70915733D047B218C46B56FAC6A7BD41F3847C44B9FD35105A0FC7 -4E4777E10863F5829E2DEB690C0075E9B958F06868C190C35F5582DB79EC2F18 -8971AE73A7CFCB5B528803CF484E372D6692953E0246CF0444CF380026BD6304 -F82EF1E6C0140260032B989D7F78C13439AC73B5191488FF4184FF7F1F16A322 -57F0EEAFE20F035FAAB8D41311C0B6FA524AA935A484D44C35E59F85F6A19E76 -A80A9DB7E65700040FF31EAD41E6C6BA8F39A2FEEDF57A689B6C81216E70538C -492CF765DA60E3EACDCE8690DF277A2ACCDFAC5923B7159EA8252B2D7588EF54 -CBEB648880C0AEA0448D3496E93AF798E9A5BA11A623240C04445A17FA5FE574 -7BA792C308240086B652E0009BEEDA55D9B6DB8D81F9B66B80AF5E8C93726110 -24E4B597FFD1B34CFAE7FC19F130246ADCDB41F12DBB0CAB26CF36CEAC04B868 -A9B3FB2F43938F29A9AA76038E5C75FD099E25F43C2627417B30DD69EBA75EEF -F647FB718789CE9FA9621476AA8D1416E9518C115E32247DAD3A4F60F76F8470 -A42FCF69406774F163A23923AFFA6BCD6FED3A7B8E39A09C3F92758F516A47B2 -95C34D7A609E39603C1425BCE9C24A36500A4D5D20E34D56A1A1DD48F89EC645 -668A39DE16E9C24308B5AF177761A8D31ABEC0F85CCCB6999347DA955C01E7A7 -E9D031831F9D646E8C08613BC661C3B9AD4F555A632A99E27D98CCBD2491BCE2 -9F9E7355EB95438C20FE96BD096A0AF7094B4EA5C9DE98BEA2F63DDAB0675981 -CB6165460CDC2C96F41708DCC2F7C933562F585C32133CED87109E03240DB2DF -8C9A7B7A34001FB56429F6616CE0504DEAD5C6F0C8703BA3FDB3BEF11053BA21 -6E13572C4F5A2DBDA38330FB89CD0709E265E34413DD542B0D1F21326BBD78F8 -6C970F47DC5D92A19CE4CE73001F165E2413A2572E67FCAD5751B90BE251F9DF -74FD4C984B37C8C994A0B824C2A2DEE539D4BA787E745817E459203EF6E6690E -A7B47F6DA0A2610419190C8D3933C416DBC85800F37E30D534868D2FE6283AE2 -21636DC8635227F6B5F19338131D343387F43F0BFE5BB8CA3FE446D4D4511B9E -8749B6A4B2CEC9FF9A3E87D9B8E6A300D40B6B385CDB1847A78BBC03E0176DC0 -CA6543C96A26FF580415221B28857873BCD216E4F00FFA745DDC978E1C7D0A00 -7D3EF37D47077E771A768499812DE25AFD4DDB3726FA7C02D3B08BAF70E44768 -338A66F693474109B8ED9A865272A2496EEB37CF88D6830CF6ACE30030587279 -763A1CD1A07457F210D0004C298D3E5028EC65A0443133FEA20D1D2C4DEE1EEF -F80E850F9FAB43D2629BC501604823F8F7A7CEFD79DC0D083B0036E88903F3A2 -1D02F03216F790B4F98E8AB714272BC4E861A529F5C7B7586524B1EC7132EB64 -8FA728A744E5F2CE21B351179C7E3E4C7C8A25D70A19A610ACF39EC288C42E2F -4379D6661A456AA3205618A99B161FFC76E64070E83AD88A5724FD2E7546DCBA -578133856DAB30DC4F55E9B1A6CAFDF9AFFCD6FFA4A3015FCB2FB8195981D344 -B8FE0F767A210ECFAAC36BD2AA10E869D196C40882CF1945C730898E11DD6A5C -5FD70B61F4FB0DE92B71188B7D74106A9DE887590D54F9CBE83B1A9EC463EB5F -92ACBCD8BE29C8DC77D3A1779EA3D06D51DD9AF36E5885F710D360618884405C -0B327F5B1E4293ABBD9904EDA51166F69556D84CB6E8789B8D17B671A866CB92 -552D6EF6AFB4296B6D46E0864AB9BE4C2B4E4D2CEE9E25B93FED9942421F452A -69507FDC9D3812608D24FA7FA9DF60D48D375014A736F7DEEF73B1A36A0040E1 -52141DEE5CBE62A2DABA2B5ECC36218709F053753896F76ACB432B220A51DFAD -BC5CE929B1B203A13263A3917EF157AECC29993B7B6C00B1BCFE1B35D9836520 -6A0C075128024CF436BB6F46DA4E2EB4B80E4B05458263CC853EE2B72511F9EA -2424CC663D26E09F54B1B2789A2B8894D37E5EFF12608BB3E53BB6D074A7F010 -F44AEF517841D139905BC7F7945C077ED9291078276B8C887C9EE59E3BEBE7ED -10802BCBCE1353CB5EF5297F6684B7B5F2F7471A52FC1F4F30A139C966063D90 -8EED36D526EF4CEB119756FF329FC88FB685804E27068ED8008FCBB922C93A6A -22A863DBA991371E83FD6E341F3BF5CFD50D1E996245DAA44246EE5DC89EFCF2 -A6D246CF261780F02A792AF2F8DB45DE1F77BCBAB776E413D2B21E39DCEEC439 -A3ABF0ABBA06460CD8DD3C0A3621C70098C354C364A44DE2B088142BFB178A8C -B5D5AFF634A6C9DBA6F8D4C8AA871E13A13AA81B06F34C0B1978F3249A8C7585 -C27BD8A21BBB8DE7DF53E1C4C3E22D0212788AA9D2D8C78D447646FE7A5BE352 -B213E358A98967303C130D2A1520B85DCAD9C65E9F5AD62038FA951CB316CDFC -FC2CC49192574F9278D48A3EAA31CE99E6514CB9AD1E4B9CC53C6A4571567F9F -B5527296A3EFCF29FB28F181983855DBF353787D02563D057D9F61AE1A500A38 -773F31BCD806F103A54D2B353A04C7335113BF7E1748ECE24A5299EB4A0A832F -3823B236062B435652484E33381A9EC5F7A136A3BC999A05CDE2B8CAA44FBCCF -CF6B688A61B26018AF7F3830DB9A867606DF177A23CC29EE2589D472B26DD326 -AAE7B0B77D0B5B2D8612086ED0CD97A114D61F2EFF4A54CA9B9AF1909253DE26 -F93A058E9E17378441B4A04869ED3C8E1BA64EAC2FF2D5143D5C85E68A08A48D -E86D90DF4FF6D385F346950C7BC1CFF80633193E7CA2AF5EF6B18B8C9AFBF9D0 -342F49FE1A172E0831DB32F46428F306820383717E02E525642B5F97523FEF5A -0FF13C164F5E68B626283BB39D86EBA21014B9DA132366B90358F7EFCE2FF63B -59098C8793F1E3A0556CE510D8653BDC5DAE41DC49EB7C2A0A3B74F0344BCE09 -475DEA529233D73FDC30A1195A2DC5CE58F5C5B87EC98B6911B3E72074A9E65A -5764C98E96430A6F7DC541813E16170890737C560FB9CE7E94CF08B83350CA57 -9781264E64D31D51079DA51344E0C909EF512F1CD8099A0FF9B523C6D6F41CF6 -8516310DCC5574AF924D908D8F5544E89AE6EFD90BF35C5BF33C271E128DFFC3 -2EC935642A5B9DBE2DFE1F761B22431C4DFBB1D940C1C6BDB053B3E368816956 -9E7F12BE58CF0A65EE28058E6E72EDA2EBBB4165AC4DAFB63E725BBE723A25DE -8F77E180E4AED4477917CA83F46842E10C1B7EBE81CD398B8AA2C5498240A5E4 -0B7B3FB66CED699927EE77F65994B5E2DB628A38E001E29161B7F180406327C2 -FB99991627DB64EE5073750B555D272450F5869D101E322F0639A5957648F55B -1B1ACC374CE61B2D92795D5A5909D7657D4B185F50D0C1F4753FF4A0F3A3989D -59554CB3AFE16FE7B7AD71F1571166F81EFD80E609A4CEDB51C7B64BAF872731 -E0CF124BDAF8883DB867C05469826908BFBCB06CE8ED5F44779BACA7B9B9F1FA -618A218517683587FDF0E380C070115F9B7B68910DA0D747CBE3324DA217C909 -7940BC500906EB173E5E4A962D00568239CCF55F5340C1AB0F3CF652DC51B02A -88DD7E766C61C27178BA74E246C54B07136CFA24598BDD2C9DE114FB1BF9190F -DDAB035F1E2626D75F3C4FB16ECB735F102F643FD5BE548207B6152E543C9B38 -DFFED85EA122AA396ED84D608BC520DB5310E40ED9048AFC2BF2D6D67D0238A8 -CC5D3EA4D4904C81176FB16E162CE9FAAE879A8AB40F4279B717493D9654E6CD -3529AA632FED59AD533CAE3CADF97088F53D76D90F1D32C1A2FA1BA3DC7BCACC -831929AB74DB50411D93A40ACDE59828F0240B7E5F22EB33B250481D72ACA1F0 -03F32C6BF58DFD23D41D3BC6FF35ABC1210AA3961393CCB59F6C145E7FC3F0CE -7610E9CEF5D8362632D465F626848DA2225827A3B1F234DD9B1436F15241B611 -205FEAB5CA4A0F0196D03E98CF5350374CB2B0C128590606F90367E1E59FEBA4 -CC227FDB1BF76DEA5C6B387ED2C692A8137032C63474BC6F4ECC614DC2DC2D34 -B909714A5E587ACCCE1F33FFFFD523D6057B54FCB91D3BF295CC0AF00331A97B -6BB59FAF270052084E65742F586B9AEE9CA8F23786020D4675A00D7458C03515 -8AE35BFDB0568C4167484117E1533E97FAAE8777A24F23B6EEDDF1165A8F79F4 -07FA775744B884E7823A3C71127372861791985DDE658CB716FC24FFD62BCE1F -376EA97FA246E3A84CE86C0799F4ED5B97E47A281C3795C920259E1B60344F71 -F348A91E11E02849FD4D35F8C00E3B269EF189B882CAD3371237D72D577F76F8 -8917DF158DCCE92C4A88448248109F48E7735B2F76800F07D38BA448842ADB41 -6E2495141FEB9C5353867C43DC4CA44CD78205E48C555B068260D4C3CD915644 -B3133860C612A70EFD86F766A8B5F58F751CC85CFA1F611C747AB087543D784D -B3251025D76AB4C8E3D8E5879C94ACB17FB14E43F4434AA47DCED09AA7B14303 -D9C329498FC9C18A2F16F2CEA0C1871F463365213BF5BE6FD73443DF4C2B315D -16112FB71658C74751342A42328788E897A5E41963C471025A2A8777803156DD -6F8A3B86446BCECF54909BC8B10CA3F0F76B2C8409E85E7AA8AEECBB3B5989AC -6D3DD08BE2DD771744AD9F4742E3CAAF7468EB089CD9DB208332F9253223D889 -B298C1DA4A738AB5334EC772ED0760F46918D0B5A36EB0A75C613E7FD27F9BC2 -757E48FEE59FCA61FAEC8D52CC9BB7778426BACEFB6F34AA00BD6F3AD942733D -ABA5AFD9E135753ACD10C6C98F4B675B600CD90FE072979034F52C3F5F69AB06 -F2D1FBF1665429A533ABAF680A09BFA23A8CF30B251C33CDCADDA5BD3EBFFBFF -AB3994264BDE155C2D3D178BBEB87DD9BAD56FF523DD89CF59A739A2E2F2C199 -26A36F502847903DB74B56B6752578369175C4CCD126FC3E663E1FDF998CB0AA -1EBAE68F7D0764C37DF051A39D94DC7373C01168E4860888427971C484C670D1 -D948C1CE80A33FBCCA22876EC2C48818DC4BA44B75CD71219F71C13ECC9DBD93 -16729426B317A96F0EC8B5756FCE378F66B7DAE618481D42070EAB39CB8EAD98 -38A9B1FC60DB0599E13D1DAAB6F01080CABA9CCE74BE4DBD2DDD75289421C93B -95BFF62BE5E933E86ED6C48E737D281FEF6363BA80BE999647A031F099BFA7B9 -05DC6598882B7FC4924B9C07DFCD6434D00965E39CEE67E962C0E00398D6379A -4A3F09DA2976693B52D5E761991F81DE966E570F27BFC94730812CB97740AE45 -05CEFDFF6C8D456211EA75BBBF3D586C93792DA1A2E288A23C936616FB8E99EA -024E553D356F8AF0BCC25FD04D39C32F59AB9ECE1871A2360236E17D4C62625B -33F60D8099F48F1A623AB7BF17479EAC1E79FE7697FE6F0AEC04D946FD8BE80E -15989541AB9875E54B89F1C4F4898E85166ECA0E363524C851DA96936A228DB6 -EFB783E7E950AB04CBAF20D82FA14A4854BB45C91250B6511CB848D534B7D0BA -C9FDD7B0333C51A7ECAE985E2F63D3B34AAA97526A226C886334F7BAD7F1962E -E78A46B57FD8140A7F62BB545A449B23890FA2EFEDE3929AAAB45F684DE63AC5 -AB6DD3385C0D8B652E692DE1F3A5146ACC4150025E4AFE84E66EBFCF89447D99 -67FC5D49DEC3A3FC2399B169AF5775A49A39A8728C25D2215B06CC8360D9EA32 -A7628FF34576236828A7230D258318A2CB659394027250A8687A9FC62D3A5860 -1DB2162E63D824E30947DB24B1307FC9211B97F807C599C331D8CCC318A5626A -EDDCCBE52D7B2C44F3E8B88AA5A8E667FAC018D49D6315EEAF20295621081928 -98BF9B56C323920A1434F01D3EF8820D9F7DEC306BC77E287B20B65A8339C292 -FFC1702B6E69EF5F7E77A33DA7CFAFDB92B18F0E974A9471678E55BFF8617636 -B2063901697C0081CCE420C2219F692CA261ED06CF2499F2B65746F25B421108 -11FE780B43C173D8F703602FC8DFC505EC70B815A7E3F0FA451A561DEDB2D668 -0860F088748941B96691AA0580650B3530405A3E7DAAADAC9B37B2D6BFF6C1D1 -6F01508203E62A97EEEA6CB4C06D35B443B867E7FD6CE2977F8A88FA48BF010E -EABE7550D3BD230891AC08F4D86451847F5BCB3866CD601D522A05ACD3805E5C -0DB90B2B6B6A525C496D5C1F521AA7FCA3A0A8B75CB9F5189C28CDD3DF91E5E7 -E4A561D3E8AC2695C4592AF817BE67C9EB0317E272E31A61EC647D67452632DE -5C2A8A2F0AD295E54B4FA12C458B73C1FC61BC434A6BA9ED313213521311B10D -F4950C47A75104FAA6DD81CD8A47D2B1E82998A7DBCE69E39DC8A4156058A9B5 -E91EC1B56EDF26E0A8C65E35DC98085BB09798022A65AF0F642FA178E25F6025 -32CFAF1BC96D13A41740361F77AC166043BA226966705E56A07AE6912418217B -F77D89F805D2FAC90D09EA73E781ED810E809A1483C4AA306A0F6DC18A7C5464 -470D6206E207518A6C161D513B4CBE21972A94A4B3E683C809D5F0C44287A4DE -1B4BC2C046844C224F80C12E1549B1B9735C7A6F2C674CD310121A152C77043A -B065C3645CEF5EDBBBD4AA859BBF55A391FB8FE038D000770E8B9465DEA73F08 -DBC075CD15B307C4D6CEC848CB9F73031506F2C14C5F1D5F6F0F8CABE3579A8D -76F47C9D04193B81CBC85BD7B29B0C5118387D3ACD77DEA2628A7A2E9E902E6A -35BE75FCFFDD6F25B81F386ED462D133ABC34FE11E57D364AF8D865EE4D43758 -49489A54307E207474C662304385D8310BA35C933E6C02EA2F83241A7668CC05 -514D57064AF1317304BDD102D1FAD48B17A36BE87B7506A8AAB0146FCB78AEAE -7201325076942257039FA7CEE89C076C79DB86C05A2D8A56BAEB5F627C3CDBC7 -DBC2B8434CF77ACE4ED5717A9E65937384E95875B61CFA332FF8BCC924C17B95 -156F1923A66713F6AE6B8E93AB0E6853D5FEE63F05DD3DBC5BE02940A02FF9E5 -8752F5AABAF676549AAEE14FA8301C10865F59D4621F0DCB6CBAC42DB689A6FF -F26C4CB31032EFC1D757E328EF22232E08B7FA710CE0A78971E73D4293AEA510 -128FA95A45B2E2BB142F791F2A4953CCB54366EC5105960C3BCCDEB9E61FE503 -F19A8E5806AA00B20959EF4A2363A1D4E0E7F8C8B3B17FF280748C68301626BB -524825E4FFDC8282080D2A01DD4A52A6A8695C1DE259FCB5F8AFBC229D8CD3FF -E827651FC3A2E1DB554003CC384EE879D17CE28B4CB729EAA7F591E392148090 -8E354CFA967DAB9BC3989F8198DA1CA0376D9A30563A6532114D192E1BEE49CB -2AEFCFBD99DF85DE35FC6D7F47F17751EFD188F3102E8C728882F38B1439CC3C -E8B192B1DEEFA44F426082C5E23F7C5490CC71903ECD60B2149934D50755DDF6 -A6311C3F8106FD60A93C49C9687A862B180B200825799463FA3F5232CD2FE108 -6D2CBFD50D397687250150B5C9637F96BD6DC8F1EE3B7984E91CEB820BE80FC0 -7FA182B18FF0942C3B52FF39827BD95D1A51A96054226749C9971B0C5F5B7308 -180921DE6F53072DB0F1022F4ABC5168317A2653362C4D5B2B95EEB58D20713D -9FC1F23B709A6EB4CDBB45C5F5884D7073BC3B4BB68C743CBB16BF821C03E7C3 -248F6B133B0642D826FB0B6E2E238797EE418946AA6F39D72B443E664A75C0BC -616BEEFBD6124475BC73FF287084CC2FA0140BC00099E37F196026A61BF7FF54 -A75C68ED72804FA64C02FA8F13D384F9A33A706D25D4D8CFD6E527093D55C31F -518F15B0089AF76FAB8ECB0E3F2C2CB82C18E2DA6965A79F977A889883D7EB13 -A63E1D577F871B3F4BE481FEB6C3EB586F432254396CE4756BEC5C8A3D7DACCE -2868802F0657A2BA555535E8D22B8CAF94A0FB749361C3325E103B8C9BDF1C73 -2532FB3FBFC6C383DB86508BE687924AEB342983B7E37A526DC84958A25C250C -84C9A81F1347ED98E840937EE2916BAD19D3D25C3211ADFEC665880042E752FD -D1E22269BA9EC87F61F5E8C89C9AD33B1549FE2A6EA4C75458ACA3BE2B095BE9 -3CBC989CCF4659EC49252E1A5901F7CECF99BFE596B3310366AA8E9E032034EF -89D715300EB4AD4A1D4000A9160557EFF42231F0444FF134BB8ED4EF1895050F -A4D039DB706A7B8F4C6FA566718FD1605DE511DC61945516B5F1291EB4009D11 -081B089C27D0072307DE2E92399E1981D31608FAB88873CA75412FC5DFE04B09 -6F39BD9769AA46B08492B04818920AC49DB3286FA97E83AEB0EDAB17660DFDD2 -FF347640A46926C84D323E8BEC66BD654607D72A9C8757C93D8EC21C8362B627 -D02FB64841CB836041E49A2CFE7495C6DF23FF10B5A806DE1021643941EE086A -C8CA4DF8D79DAECC4BAC24FFECC13181BEB728DD2BDB557F039C88322FC128E7 -D81D5ABB4FEA4D9D3E15F5143113B4145751ADFBF5CD98A7B452E60A978D464B -FE6C70C21403DE8FA79B8F375E045582DAF46E009EC253255D980B51EC9A2235 -56EC31A27A40A0EC38FA7760789CEC6E6E07E395E1C26B74F7F013EC1908F8DC -BD6ABCF0C0789F2E2BD705945AA0FB08780D911A36F5E121A368D19F8DDFB796 -68A3C33B35CC77A44C3B8580BC97C938B30C4B4E1B529F7C4A5B92085D373742 -FF913FDD1EA32DB3B7862ECBFB553EA8A990C0712C049E13BF7A34F4252B36B1 -07848704EFF698D7476DF2C3A69B38EB5F320ACE76153EA66EFD7702CBFDC512 -68E42801A5A648FC1EB2363689C815038BA8E3C5BB23BEF010E54CBF7A09C597 -6378854F84707E2F83043E420178CA6A18151E9729DD9DD7A8786B72511922E0 -BAF29685185319E96A5A5E0DCA8321DFC8320085EFF9F0312FDB4A61593AA7A0 -A5366721F5C53A8096FACD9F4995D3977A751E1D73DD50BE2345E2924831C6D8 -0C9A6A15040A10A93A38071AE64D0A679A71220014A2628EB0BE6DA32C6DF5C1 -73CF44E6033D7E5CF5028FE56D7F02D46BE7927982B3267FEF650E69B0818E58 -D72EAF5DB264A17AC03DF68979F5BC3CEF11950762F2A2FDDF2D57267CD00AA6 -CD0DDC79A14B11A2CAC59858FBF290B2806B4230395C056EB8B216B858A10BBD -8D489052C58C4AFCE2AF0DED981DB4C4DB19653C346930AF4AA7F271A3B598A1 -596CE90AE98829B948D217BE6C7E4BA02DE7AFB653690F7052F4CE96D72DEF4D -43BECB57D12AB51A20D0FAF7B6015C11248B32AB967BFD8F9B6B6BED4548AC72 -C64A78BC8316D5CAF3AECDA6B0A9E78F1657774D96FE05EFD5DA740EB81ADC50 -692EFE86B42471F02B9C98F8D0FE12C0698117F2EF14E1FCB6ED7E77614B1E1F -86075E32A1F966DBDDB581AE9B55910D9C501D75FC51B5A51C8E69E11E61BB11 -40A687F214417BD359DB45D267B2DC551A56C8C378D2E006180E35CBBA4BDBB3 -7A4D6BCDB9C6B2523369A6064C1C1A18D8F97CAC879737210CF12F3087537DCE -B70713FDB8F01FD0F7C57869537D15ED45ED39CAD57D06B27C48FB18B852CC7E -0A28AD45CA8974215045720EA4FEDE0EEA46521E3E64FC57A761FFF6EAE026EF -C333C7778F1438F88BBB9DE938011069F6250B8028A7DB28E2D2D80547680ADF -58D6F7F505DBECAD510D721939CB549362F8D8EB0F182087EE12A22A62ABE8B5 -0D4C7BDA77B2DF14D71C8772D8DF2BDE53AFEC4ACF213E32BDA1CC90E9EA45FB -C11FCE948FE0992E46CB4B9F0E9036BAD239AA80762CEE86A2A6E070972B854B -82AF08E32725661F2FDB4F806E909D1A87F0FF726EF0893BCF9D8A117D470046 -26 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR17 -%!PS-AdobeFont-1.1: CMR17 1.0 -%%CreationDate: 1991 Aug 20 16:38:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR17 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 70 /F put -dup 78 /N put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 114 /r put -dup 115 /s put -dup 117 /u put -readonly def -/FontBBox{-33 -250 945 749}readonly def -/UniqueID 5000795 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 -A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 -BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 -96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC -9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 -E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A -497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 -4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD -3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF -B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 -C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 -9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F -83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 -A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B -246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A -7736A960F72AC01F733A11023832CD68FB6288A5977743F781214D8FA9C0C3F7 -80001321D4397771F728FD9EE57CFE7D9192B887EC883EB1505068261DC40089 -7B7D2820F06515CD74513521F6397FEAB3AD3572D9A8269430E407E357422461 -1785FC2782047F4C0339D79B16862D939F3A37F78E4E2174E4FBF132539CB760 -207999FF86F6A3EBE48EB0A1CA635450FDEEF79EB16D853F3BF4B41B05588453 -D4417AEA07EB3348CA1A966A79E1AF3042B34AA85ADF0FD6842451D3F7D1989B -F7DA4E5FC986EB47A60FF899662719CACF25B92E1DEDB58B35B564EC55E88F3C -87F253440F8903AEEE00E59A5CC5B92C79AF4F387CC1EBC1F7DFCF721B6B4232 -49250CA45BBF195759C381669E78BAC29406F826BB590E7B3C307493DB8797B6 -8F5442A7AABBE063056262EF33E655890B89CFBED26BEACF51792FEAEF1FDF50 -B03BF32A431B94DF95DED8500FBC366616817DFCDEC2A2A1DBCF2730B3CB76BF -6A802B1813B32115DC2E249E422D177A6FBCFDE494F6FFA89DBE91D464E8AE63 -02035E8EBA9B999B43F61797290C40BC362E50E9E70DA027324D57E0D9D46E71 -53281C641896DB0BE51195E8015FA47C98805A22289788BEBD8DEAEF10E5B947 -AD18F5A9D63679ACB8C9BB919F72919B6B0618FA43129C43B056A76738A13EDE -0ACFA57F11A73F46E30A419EA499F52BA821D630876020E14FF53A4D28E91B85 -66F3B0A2F85B9A18168CBDEE8AB41B38DFC44D2CA451F3BE9EC76939C00A1423 -6C190B3973C30B60FD931D99C33D0F7C43DDC3407036B2F2695BCCD450277972 -6BBB007E0FF9FDD0D9E98ADFF37B3DB704CD08E9EFD42AD0C1F366E1659E0D9A -60ABB663C66AD088C840F5A7A1E34233B492A63382024F002963A97D2BEBF361 -D1003F14FD4805273213846A1330E6B532BE74940FA9EE28185A728D5C8D2ECE -A1DF077472C8E5B27FBB0FE00AE436808636EDF28EC84C944577583D5C58F624 -7952E8CE8266A395A8F1EC9285FCCEF51289AAB6FF2FCD38AE5E29717FA5BFAC -683B9F01A0496F41199592C3652525FFB57DD2115B916590BCE53DF34315BA75 -008A5F80A61182F37B0BCFF7371321B9168AFD7B57691F256AA3AB532796B5C0 -EB7C61BC554F211949A3149D5C70636475720E17004D176553504D0C79CCDAB3 -C7A493E7EEEA3A5B8A580CC415C714E227495A1A3F82548BDF3461569DB49F04 -967DD0587826508971331D7FB1E96A97785D59BFACCE7C207B8A13851482236C -EA7975DAF7BFC130CC4335FD9BEC5385876EB054339A75D87294D78D4EBE1CFC -C0AA51617F26854A6E01FD18C666834C2747B368A1B9E1F741C9152CA3A2AFA7 -1CDE88E91C5702A70E48BDD37DAEE1A498D0F8BF9C2F43C1688FF404615E1034 -CC841CC3D3B3C7B497AB06EF4D9CDDBDDAF290A2A929193FE5B476798549CE2B -DF227E0BDE8D0BEAFB5486573588CD17EB47CAF332B801475B8887E76255DBEF -C2006F9CCE9C315BDC7944369852C539C44F9BAC09E415EDAF7B2AB414037492 -55D6B47B1E3FF81C745B12C22797E89467DEE5BC681247D1AC732B749222B962 -B8DDF08FA347FCA9A50BD07F053A156886CBE845E9ACEFBE74DA9EB4E9B0DA13 -01CD0C09B9E2B6350B685E6BD476F63A1D9991EE3462FB3DDE5FA57EB1B352B6 -52A21D65C3560F5F733CF67CAB60D09A8286DAE79506D85E7C732E2EA0F6A52E -9C3E559C3A89B411EC0777AE9DA30D68ABCB6C190368D60A6AAB012E24180BA3 -D9248828556F5FCC815928E94FB43F96D69C78D996F941D25635D18256909AD2 -15D563EF1D13A933C758DDB299729A28487FEDC7A1F83DB6A8FBD28FC8768C7C -D0E836D04100F98C361B481F73CAA4120F861F8D87BDF1B50B22037F615AD718 -2DF9B2B4654C5A8A57215C64F0FBEFC5D8FFF3CCC9BAB25966B5AE061271FDEB -27048A42FBB994D05010F7BC100B556C937632602CA2197D95DB858CF0FC03F4 -79649B24EB51CC32A862BEA35A494C5CF9EF29681011A314F3EA7FD31DC86F3A -AE55C1C9A91683800C5D9A1E5CFFE03798D86B7351E33D82E11829F2C6269E3A -E61A0DB9766487B695BB28B3DAE4F417FF2F7B33B77534A4CA6631C2AAE89EE1 -CBF49F710D59FF63BC1550D914F83EB414D4E5D97B9DD793ED00D627A4574F5A -DC1C8013728D8C4D29053813C61349B67DEED867822820204E3CC90AB459DC78 -5FC46030AEF81FC01569C8FEA25A0C454B92425BCEADEFC7A8F7F2F182F5F1AA -407B839B1C37F1D66061C6153C96DCAC2A0867DB33BB47ACB738D0A07630658D -6A63A0400E1F5A28E59FC9A7EFA0D64E7CD84DE9EB8FD5632AC9B67A38373B34 -A565B024EA2C8405B30E7CBF7B2461C4273631525EFA68B474785C21D7E16B93 -25C93F656261FF1E29C83767D7FD2F3390609598E5C57A911F904535A05A7425 -FF7D0AAD3E932EC53A1C690BD1A3A5501D96417BE6A45A5B6E8461EF1E99E4F4 -BCD3A41612B4E4F8F539B642F9C840F143E7AC8B061EBA6049A3966F3014AAE3 -D45E7563FE7859FB23F781CF7366CD150CBABCC583AEFBEF108B1F7CF0FA5C5F -BB237D0C9927D9891581F3429C887E8DA0F4C4914004DB764FC5DB8E897532B4 -FF9F50628E771794C1304FFA4DC9387D28BE263030D59AB7D114A7210A977813 -47F14B16B0BEAA7E68E157D91032508C87810C5AECC1E464856C2FA54AF1C864 -8C94843786666019008757207356D50DB42556BBD7F7F34C378459AC8C724F98 -10ED9F2C09BB27B40103A5F8E0ADB334A91FC237A2208941536880FDBC046367 -A22FBE40ACE7AB75F7CC89D6AD5759CEB403D7FE87C96E5CFB0786BEFC4DFE22 -7241AB99E07E7FE624076C1E36DE2D7FE173225CBBF43F5714A0EF8A40ED846E -97195FCAFA500A3A9142BA45272BE9CF1033A5955DCC220063C3407E9F820D21 -462733F57CA9B88A468986BCCEA23BA55527018FD9E68B3474C3C3F4A0E071FC -A466A91C8EA8F02C5E13DEE6F36BE0E2B9CBB3E6013215D2B4117BA4AB0D6878 -FCBFDD359ABC7B4F541794CB396AA3C1331B1AE6461739C329A30E600F83DA4E -CA2A6CECDEE19F1843946B1719E06B3DEABC7C9401665150109C4866AFEC04FB -90E289F6EE57E84E115EA94C32ED9168DE312E5CAC70B1F8ADB1A0BF4470E9C0 -23DE5EC578ED218B78E839428F7C5942D1354FD0E49DD61E5070C89D1CE10EA3 -3E20189B6B26AE79E1A8F397B0DE86BFE394CEE18ABCE304D7061A8365FBE661 -AF623C5B81B4795FFAC2FBAF6C1CCFF1B5648B13F1945CD61586191E1E12EB68 -212AB7FC3CBDFFF755BD22F700D289E73250F6246E7BBF2C845989B1BFD1F92B -10D1DB23E2D9A67C0101AFCE4F5452668B977C99AEB43DB56978C4AA4F2B6056 -6994D35694BD3B5F6A854D5923063A9412CEAC4CAFE55FA74129D7744AE2588E -A995C71A24778F4614AD0AB7E3314A0D68C0C0926526764C109CEDCE60245C33 -3B2512C977269C9964EEAF442ADB6F6BA247617AE32E7E14E1D9714DA3C5BB58 -F3A885CB13749B98EF61F60FDA4D1C153481AED30E669DA92C446D183211CFE0 -08A2D76C927E9985660D5DF23EFCB183A4DD8FBB37EC7266903C5DBF9A57D062 -FE058CB78795CC31DFA76925251983F5048FBC7978F158C840E26AEBC7CC16AF -8F6895E1B0031EBFCDA1D8E6ACD442E53DB6602659EE5E5B5CDB22AA2B2C8E7C -E950B361463A88CA88CBA6586E2939D34E9F19EF2FB66AFE46B918836B855225 -80827B7B52B6547806D6996DBF073F00F1FF9EAE4FB3CA81FAD1A35532 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (arnum.dvi) -@start /Fa 130[48 1[48 1[48 48 48 48 48 48 48 48 48 48 -48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 11[48 -23[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 -48 48 40[{}46 90.9091 /CMTT10 rf /Fb 134[44 2[42 49 30 -37 38 1[46 46 51 74 23 2[28 46 42 1[42 46 42 42 46 97[{}19 -90.9091 /CMTI10 rf /Fc 134[55 55 2[58 41 41 1[55 58 52 -58 87 29 2[29 2[32 48 58 2[51 27[69 5[49 10[52 52 52 -52 36[58 12[{}23 90.9091 /CMBX10 rf /Fd 253[71 2[{}1 -90.9091 /CMSY10 rf /Fe 255[55{}1 66.4176 /CMSY8 rf /Ff -140[33 32 3[43 3[29 24 105[{}5 66.4176 /CMMI8 rf /Fg -205[35 35 35 48[{}3 66.4176 /CMR8 rf /Fh 139[33 43 41 -41 46 6[31 7[48 34[71 1[71 1[25 58[{}10 90.9091 /CMMI10 -rf /Fi 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76 -25 48 1[25 51 45 28 40 51 40 51 45 3[25 1[25 3[93 1[68 -66 51 67 4[83 3[33 1[71 59 62 69 66 1[68 3[71 2[25 3[45 -45 45 45 45 45 2[25 30 25 71 45 35 35 25 24[76 1[51 12[{}58 -90.9091 /CMR10 rf /Fj 128[49 5[51 2[51 54 38 38 38 2[49 -54 81 27 51 1[27 54 49 30 43 54 43 54 49 12[70 54 72 -3[73 89 3[35 1[77 1[66 75 70 69 73 76 5[27 2[49 1[49 -49 49 4[27 33 3[38 38 40[{}43 99.6264 /CMR12 rf /Fk 138[73 -1[52 51 4[111 36 2[36 1[66 1[58 73 58 73 66 18[99 7[86 -4[99 65[{}15 143.462 /CMR17 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 1224 987 a Fk(Algebraic)44 b(Num)l(b)t(er)g -(Fields)1613 1290 y Fj(Eb)s(erhard)34 b(Sc)m(hr)s(\177)-51 -b(ufer)1602 1406 y(Institute)33 b(SCAI.Alg)498 1522 y(German)g -(National)f(Researc)m(h)i(Cen)m(ter)g(for)e(Information)h(T)-8 -b(ec)m(hnology)34 b(\(GMD\))1569 1638 y(Sc)m(hloss)h(Birlingho)m(v)m -(en)1480 1754 y(D-53754)c(Sankt)i(Augustin)1810 1871 -y(German)m(y)1463 2017 y(Email:)44 b(sc)m(hruefer@gmd.de)448 -2400 y Fi(Algebraic)31 b(n)m(um)m(b)s(ers)c(are)i(the)g(solutions)h(of) -f(an)g(irreducible)f(p)s(olynomial)h(o)m(v)m(er)i(some)448 -2513 y(ground)43 b(domain.)82 b(The)43 b(algebraic)j(n)m(um)m(b)s(er)d -Fh(i)h Fi(\(imaginary)h(unit\),)i(for)d(example,)448 -2626 y(w)m(ould)e(b)s(e)g(de\014ned)f(b)m(y)h(the)g(p)s(olynomial)h -Fh(i)2005 2593 y Fg(2)2073 2626 y Fi(+)27 b(1.)77 b(The)42 -b(arithmetic)h(of)f(algebraic)448 2739 y(n)m(um)m(b)s(er)d -Fh(s)g Fi(can)h(b)s(e)g(view)m(ed)g(as)g(a)g(p)s(olynomial)h -(arithmetic)g(mo)s(dulo)e(the)h(de\014ning)448 2852 y(p)s(olynomial.) -448 3015 y(Giv)m(en)32 b(a)e(de\014ning)g(p)s(olynomial)g(for)h(an)f -(algebraic)i(n)m(um)m(b)s(er)d Fh(a)1290 3219 y(a)1338 -3181 y Ff(n)1436 3219 y Fi(+)50 b Fh(p)1603 3233 y Ff(n)p -Fe(\000)p Fg(1)1740 3219 y Fh(a)1788 3181 y Ff(n)p Fe(\000)p -Fg(1)1975 3219 y Fi(+)h Fh(:::)g Fi(+)f Fh(p)2390 3233 -y Fg(0)448 3473 y Fi(All)31 b(algebraic)h(n)m(um)m(b)s(ers)d(whic)m(h)h -(can)h(b)s(e)f(built)g(up)f(from)h Fh(a)h Fi(are)f(then)g(of)h(the)g -(form:)1161 3677 y Fh(r)1202 3691 y Ff(n)p Fe(\000)p -Fg(1)1339 3677 y Fh(a)1387 3640 y Ff(n)p Fe(\000)p Fg(1)1575 -3677 y Fi(+)50 b Fh(r)1737 3691 y Ff(n)p Fe(\000)p Fg(2)1874 -3677 y Fh(a)1922 3640 y Ff(n)p Fe(\000)p Fg(2)2110 3677 -y Fi(+)g Fh(:::)h Fi(+)f Fh(r)2519 3691 y Fg(0)448 3881 -y Fi(where)30 b(the)h Fh(r)909 3895 y Ff(j)945 3881 y -Fi('s)g(are)f(rational)i(n)m(um)m(b)s(ers.)448 4044 y(The)e(op)s -(eration)h(of)g(addition)f(is)h(de\014ned)e(b)m(y)480 -4248 y(\()p Fh(r)556 4262 y Ff(n)p Fe(\000)p Fg(1)693 -4248 y Fh(a)741 4211 y Ff(n)p Fe(\000)p Fg(1)929 4248 -y Fi(+)50 b Fh(r)1091 4262 y Ff(n)p Fe(\000)p Fg(2)1228 -4248 y Fh(a)1276 4211 y Ff(n)p Fe(\000)p Fg(2)1464 4248 -y Fi(+)g Fh(:::)p Fi(\))i(+)e(\()p Fh(s)1946 4262 y Ff(n)p -Fe(\000)p Fg(1)2083 4248 y Fh(a)2131 4211 y Ff(n)p Fe(\000)p -Fg(1)2319 4248 y Fi(+)g Fh(s)2483 4262 y Ff(n)p Fe(\000)p -Fg(2)2620 4248 y Fh(a)2668 4211 y Ff(n)p Fe(\000)p Fg(2)2856 -4248 y Fi(+)g Fh(:::)p Fi(\))57 b(=)1370 4386 y(\()p -Fh(r)1446 4400 y Ff(n)p Fe(\000)p Fg(1)1604 4386 y Fi(+)20 -b Fh(s)1738 4400 y Ff(n)p Fe(\000)p Fg(1)1875 4386 y -Fi(\))p Fh(a)1958 4349 y Ff(n)p Fe(\000)p Fg(1)2146 4386 -y Fi(+)50 b(\()p Fh(r)2343 4400 y Ff(n)p Fe(\000)p Fg(2)2501 -4386 y Fi(+)20 b Fh(s)2635 4400 y Ff(n)p Fe(\000)p Fg(2)2771 -4386 y Fi(\))p Fh(a)2854 4349 y Ff(n)p Fe(\000)p Fg(2)3043 -4386 y Fi(+)50 b Fh(:::)448 4640 y Fi(Multiplication)33 -b(of)f(t)m(w)m(o)g(algebraic)h(n)m(um)m(b)s(ers)d(can)h(b)s(e)f(p)s -(erformed)g(b)m(y)h(normal)g(p)s(oly-)448 4753 y(nomial)h(m)m -(ultiplication)g(follo)m(w)m(ed)g(b)m(y)f(a)g(reduction)f(of)h(the)g -(result)g(with)f(the)h(help)f(of)448 4866 y(the)h(de\014ning)e(p)s -(olynomial.)1920 5162 y(1)p eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 3392 324 a Fi(2)616 827 y(\()p -Fh(r)692 841 y Ff(n)p Fe(\000)p Fg(1)830 827 y Fh(a)878 -789 y Ff(n)p Fe(\000)p Fg(1)1035 827 y Fi(+)20 b Fh(r)1167 -841 y Ff(n)p Fe(\000)p Fg(2)1304 827 y Fh(a)1352 789 -y Ff(n)p Fe(\000)p Fg(2)1510 827 y Fi(+)g Fh(:::)p Fi(\))51 -b Fd(\002)f Fi(\()p Fh(s)1961 841 y Ff(n)p Fe(\000)p -Fg(1)2098 827 y Fh(a)2146 789 y Ff(n)p Fe(\000)p Fg(1)2304 -827 y Fi(+)20 b Fh(s)2438 841 y Ff(n)p Fe(\000)p Fg(2)2575 -827 y Fh(a)2623 789 y Ff(n)p Fe(\000)p Fg(2)2780 827 -y Fi(+)g Fh(:::)p Fi(\))26 b(=)798 965 y Fh(r)839 979 -y Ff(n)p Fe(\000)p Fg(1)976 965 y Fh(s)1019 927 y Ff(n)p -Fe(\000)p Fg(1)1156 965 y Fh(a)1204 927 y Fg(2)p Ff(n)p -Fe(\000)p Fg(2)1397 965 y Fi(+)20 b Fh(:::)31 b Fc(mo)s(dulo)g -Fh(a)2012 927 y Ff(n)2109 965 y Fi(+)51 b Fh(p)2277 979 -y Ff(n)p Fe(\000)p Fg(1)2414 965 y Fh(a)2462 927 y Ff(n)p -Fe(\000)p Fg(1)2649 965 y Fi(+)f Fh(:::)i Fi(+)e Fh(p)3064 -979 y Fg(0)1771 1103 y Fi(=)116 b Fh(q)1999 1117 y Ff(n)p -Fe(\000)p Fg(1)2136 1103 y Fh(a)2184 1065 y Ff(n)p Fe(\000)p -Fg(1)2372 1103 y Fi(+)50 b Fh(q)2534 1117 y Ff(n)p Fe(\000)p -Fg(2)2670 1103 y Fh(a)2718 1065 y Ff(n)p Fe(\000)p Fg(2)2906 -1103 y Fi(+)g Fh(:::)448 1357 y Fi(Division)34 b(of)f(t)m(w)m(o)h -(algebraic)g(n)m(um)m(b)s(ers)d(r)h(and)g(s)g(yields)h(another)g -(algebraic)h(n)m(um)m(b)s(er)448 1469 y(q.)458 1596 y -Ff(r)p 458 1611 34 4 v 459 1664 a(s)527 1632 y Fi(=)25 -b Fh(q)33 b Fi(or)e Fh(r)d Fi(=)d Fh(q)s(s)p Fi(.)448 -1795 y(The)30 b(last)h(equation)h(written)e(out)h(explicitly)h(reads) -642 2162 y(\()p Fh(r)718 2176 y Ff(n)p Fe(\000)p Fg(1)855 -2162 y Fh(a)903 2124 y Ff(n)p Fe(\000)p Fg(1)1061 2162 -y Fi(+)20 b Fh(r)1193 2176 y Ff(n)p Fe(\000)p Fg(2)1330 -2162 y Fh(a)1378 2124 y Ff(n)p Fe(\000)p Fg(2)1535 2162 -y Fi(+)g Fh(:)15 b(:)g(:)q Fi(\))725 2300 y(=)83 b(\()p -Fh(q)955 2314 y Ff(n)p Fe(\000)p Fg(1)1092 2300 y Fh(a)1140 -2262 y Ff(n)p Fe(\000)p Fg(1)1297 2300 y Fi(+)20 b Fh(q)1429 -2314 y Ff(n)p Fe(\000)p Fg(2)1566 2300 y Fh(a)1614 2262 -y Ff(n)p Fe(\000)p Fg(2)1771 2300 y Fi(+)g Fh(:)15 b(:)g(:)q -Fi(\))21 b Fd(\002)f Fi(\()p Fh(s)2193 2314 y Ff(n)p -Fe(\000)p Fg(1)2330 2300 y Fh(a)2378 2262 y Ff(n)p Fe(\000)p -Fg(1)2535 2300 y Fi(+)g Fh(s)2669 2314 y Ff(n)p Fe(\000)p -Fg(2)2806 2300 y Fh(a)2854 2262 y Ff(n)p Fe(\000)p Fg(2)3011 -2300 y Fi(+)g Fh(:)15 b(:)g(:)q Fi(\))879 2438 y Fc(mo)s(dulo)p -Fi(\()p Fh(a)1301 2400 y Ff(n)1369 2438 y Fi(+)20 b Fh(p)1506 -2452 y Ff(n)p Fe(\000)p Fg(1)1643 2438 y Fh(a)1691 2400 -y Ff(n)p Fe(\000)p Fg(1)1848 2438 y Fi(+)g Fh(:)15 b(:)g(:)q -Fi(\))725 2575 y(=)83 b(\()p Fh(t)947 2589 y Ff(n)p Fe(\000)p -Fg(1)1084 2575 y Fh(a)1132 2538 y Ff(n)p Fe(\000)p Fg(1)1289 -2575 y Fi(+)20 b Fh(t)1413 2589 y Ff(n)p Fe(\000)p Fg(2)1550 -2575 y Fh(a)1598 2538 y Ff(n)p Fe(\000)p Fg(2)1756 2575 -y Fi(+)g Fh(:)15 b(:)g(:)q Fi(\))448 2829 y(The)25 b -Fh(t)663 2843 y Ff(i)717 2829 y Fi(are)h(linear)f(in)h(the)f -Fh(q)1405 2843 y Ff(j)1441 2829 y Fi(.)39 b(Equating)26 -b(equal)g(p)s(o)m(w)m(ers)f(of)h Fh(a)g Fi(yields)f(a)h(linear)g -(system)448 2942 y(for)k(the)h(quotien)m(t)h(co)s(e\016cien)m(ts)g -Fh(q)1604 2956 y Ff(j)1640 2942 y Fi(.)448 3105 y(With)h(this,)f(all)h -(\014eld)f(op)s(erations)g(for)g(the)g(algebraic)i(n)m(um)m(b)s(ers)c -(are)j(a)m(v)-5 b(ailable.)48 b(The)448 3218 y(translation)40 -b(in)m(to)g(algorithms)g(is)f(straigh)m(tforw)m(ard.)67 -b(F)-8 b(or)39 b(an)g(implemen)m(tation)i(w)m(e)448 3331 -y(ha)m(v)m(e)28 b(to)f(decide)f(on)g(a)h(data)g(structure)f(for)g(an)g -(algebraic)i(n)m(um)m(b)s(er.)38 b(W)-8 b(e)27 b(ha)m(v)m(e)h(c)m -(hosen)448 3444 y(the)40 b(represen)m(tation)g(REDUCE)f(normally)h -(uses)f(for)g(p)s(olynomials,)j(the)d(so-called)448 3557 -y(standard)33 b(form.)49 b(Since)33 b(our)g(p)s(olynomials)g(ha)m(v)m -(e)h(in)f(general)i(rational)f(co)s(e\016cien)m(ts,)448 -3670 y(w)m(e)d(m)m(ust)f(allo)m(w)i(for)e(a)h(rational)h(n)m(um)m(b)s -(er)d(domain)h(inside)g(the)h(algebraic)h(n)m(um)m(b)s(er.)448 -3832 y Fh(<)p Fb(algebr)-5 b(aic)34 b(numb)-5 b(er)p -Fh(>)30 b Fi(::=)629 3945 y Fa(:ar:)39 b Fi(.)i Fh(<)p -Fb(univariate)33 b(p)-5 b(olynomial)35 b(over)e(the)g(r)-5 -b(ationals)p Fh(>)448 4088 y(<)p Fb(univariate)33 b(p)-5 -b(olynomial)36 b(over)d(the)g(r)-5 b(ationals)p Fh(>)33 -b Fi(::=)629 4201 y Fh(<)p Fb(variable)p Fh(>)d Fi(.**)i -Fh(<)p Fb(lde)-5 b(g)p Fh(>)30 b Fi(.*)h Fh(<)p Fb(r)-5 -b(ational)p Fh(>)32 b Fi(.+)f Fh(<)p Fb(r)-5 b(e)g(ductum)p -Fh(>)448 4344 y(<)p Fb(lde)g(g)p Fh(>)31 b Fi(::=)f(in)m(teger)448 -4637 y Fh(<)p Fb(r)-5 b(ational)p Fh(>)33 b Fi(::=)629 -4750 y Fa(:rn:)39 b Fi(.)i Fh(<)p Fb(inte)-5 b(ger)32 -b(numer)-5 b(ator)p Fh(>)32 b Fi(.)41 b Fh(<)p Fb(inte)-5 -b(ger)33 b(denominator)p Fh(>)f Fi(:)41 b(in)m(teger)448 -4893 y Fh(<)p Fb(r)-5 b(e)g(ductum)p Fh(>)31 b Fi(::=)g -Fh(<)p Fb(univariate)i(p)-5 b(olynomial)p Fh(>)33 b Fi(:)41 -b Fh(<)p Fb(r)-5 b(ational)p Fh(>)32 b Fi(:)40 b(nil)p -eop end -%%Page: 3 3 -TeXDict begin 3 2 bop 3392 324 a Fi(3)448 623 y(This)28 -b(represen)m(tation)h(allo)m(ws)g(us)f(to)g(use)g(the)g(REDUCE)g -(functions)g(for)g(adding)g(and)448 736 y(m)m(ultiplying)35 -b(p)s(olynomials)g(on)g(the)f(tail)i(of)f(the)g(tagged)h(algebraic)g(n) -m(um)m(b)s(er.)52 b(Also,)448 848 y(the)23 b(routines)f(for)g(solving)h -(linear)g(equations)g(can)g(easily)h(b)s(e)d(used)h(for)g(the)h -(calculation)448 961 y(of)34 b(quotien)m(ts.)50 b(W)-8 -b(e)34 b(are)g(still)g(left)g(with)f(the)g(problem)g(of)g(in)m(tro)s -(ducing)g(a)h(particular)448 1074 y(algebraic)e(n)m(um)m(b)s(er.)39 -b(In)29 b(the)g(curren)m(t)h(v)m(ersion)g(this)f(is)h(done)f(b)m(y)h -(giving)g(the)g(de\014ning)448 1187 y(p)s(olynomial)39 -b(to)g(the)g(statemen)m(t)h Fc(defp)s(oly)p Fi(.)65 b(The)38 -b(algebraic)j(n)m(um)m(b)s(er)c(sqrt\(2\),)k(for)448 -1300 y(example,)32 b(can)e(b)s(e)g(in)m(tro)s(duced)g(b)m(y)591 -1463 y Fa(defpoly)46 b(sqrt2**2)g(-)h(2;)448 1626 y Fi(This)26 -b(statemen)m(t)j(asso)s(ciates)f(a)f(simpli\014cation)g(function)f(for) -h(the)g(translation)g(of)g(the)448 1738 y(v)-5 b(ariable)39 -b(in)g(the)f(de\014ning)g(p)s(olynomial)g(in)m(to)i(its)e(tagged)i(in)m -(ternal)f(form)f(and)g(also)448 1851 y(generates)23 b(a)e(p)s(o)m(w)m -(er)g(reduction)g(rule)g(used)f(b)m(y)h(the)g(op)s(erations)g -Fc(times)g Fi(and)f Fc(quotien)m(t)448 1964 y Fi(for)26 -b(the)h(reduction)f(of)g(their)h(result)f(mo)s(dulo)f(the)i(de\014ning) -e(p)s(olynomial.)40 b(A)26 b(basis)g(for)448 2077 y(the)35 -b(represen)m(tation)g(of)f(an)g(algebraic)i(n)m(um)m(b)s(er)d(is)h -(also)i(set)e(up)f(b)m(y)i(the)f(statemen)m(t.)448 2190 -y(In)e(the)g(w)m(orking)g(v)m(ersion,)h(the)f(basis)g(is)g(a)g(list)h -(of)f(p)s(o)m(w)m(ers)g(of)g(the)g(indeterminate)h(of)448 -2303 y(the)k(de\014ning)f(p)s(olynomial)h(up)f(to)i(one)f(less)g(then)f -(its)h(degree.)61 b(Exp)s(erimen)m(ts)36 b(with)448 2416 -y(in)m(tegral)31 b(bases,)f(ho)m(w)m(ev)m(er,)h(ha)m(v)m(e)f(b)s(een)e -(v)m(ery)i(encouraging,)g(and)f(these)g(bases)g(migh)m(t)448 -2529 y(b)s(e)36 b(a)m(v)-5 b(ailable)38 b(in)e(a)g(later)h(v)m(ersion.) -58 b(If)36 b(the)g(de\014ning)f(p)s(olynomial)h(is)g(not)h(monic,)h(it) -448 2642 y(will)31 b(b)s(e)f(made)g(so)h(b)m(y)f(an)g(appropriate)h -(substitution.)448 2804 y Fc(Example)k(1)687 2967 y Fa(defpoly)46 -b(sqrt2**2-2;)687 3193 y(1/\(sqrt2+1\);)687 3419 y(sqrt2)g(-)i(1)687 -3645 y(\(x**2+2*sqrt2*x+2\)/\(x+sq)o(rt2\))o(;)687 3870 -y(x)f(+)h(sqrt2)687 4096 y(on)f(gcd;)687 4322 y -(\(x**3+\(sqrt2-2\)*x**2-\(2*)o(sqrt)o(2+3)o(\)*x-)o(3*sq)o(rt2)o -(\)/\(x)o(**2-)o(2\);)782 4548 y(2)687 4661 y(\(x)95 -b(-)47 b(2*x)g(-)h(3\)/\(x)e(-)h(sqrt2\))687 4887 y(off)g(gcd;)p -eop end -%%Page: 4 4 -TeXDict begin 4 3 bop 3392 324 a Fi(4)687 736 y Fa -(sqrt\(x**2-2*sqrt2*x*y+2*)o(y**2)o(\);)687 961 y(abs\(x)46 -b(-)i(sqrt2*y\))448 1124 y Fi(Un)m(til)24 b(no)m(w)f(w)m(e)g(ha)m(v)m -(e)h(dealt)g(with)e(only)h(a)g(single)h(algebraic)g(n)m(um)m(b)s(er.)37 -b(In)22 b(practice)i(this)448 1237 y(is)i(not)h(su\016cien)m(t)f(as)h -(v)m(ery)f(often)h(sev)m(eral)g(algebraic)h(n)m(um)m(b)s(ers)d(app)s -(ear)g(in)h(an)g(expres-)448 1350 y(sion.)41 b(There)29 -b(are)h(t)m(w)m(o)i(p)s(ossibilities)e(for)g(handling)f(this:)40 -b(one)30 b(can)h(use)e(m)m(ultiv)-5 b(ariate)448 1463 -y(extensions)35 b([)p Fc(?)p Fi(])f(or)g(one)g(can)g(construct)g(a)h -(de\014ning)e(p)s(olynomial)h(that)g(con)m(tains)h(all)448 -1576 y(sp)s(eci\014ed)29 b(extensions.)41 b(This)29 b(pac)m(k)-5 -b(age)32 b(implemen)m(ts)e(the)f(latter)i(case)g(\(the)f(so)g(called) -448 1689 y(primitiv)m(e)h(represen)m(tation\).)42 b(The)29 -b(algorithm)i(w)m(e)g(use)e(for)h(the)g(construction)h(of)f(the)448 -1802 y(primitiv)m(e)38 b(elemen)m(t)h(is)e(the)g(same)h(as)f(giv)m(en)h -(b)m(y)f(T)-8 b(rager)37 b([)p Fc(?)q Fi(].)61 b(In)36 -b(the)i(implemen)m(ta-)448 1914 y(tion,)28 b(m)m(ultiple)f(extensions)f -(can)h(b)s(e)e(giv)m(en)i(as)g(a)f(list)h(of)f(equations)h(to)g(the)f -(statemen)m(t)448 2027 y Fc(defp)s(oly)p Fi(,)34 b(whic)m(h,)g(among)f -(other)g(things,)g(adds)f(the)h(new)f(extension)i(to)f(the)g(previ-)448 -2140 y(ously)c(de\014ned)f(one.)40 b(All)30 b(algebraic)g(n)m(um)m(b)s -(ers)e(are)h(then)f(expressed)h(in)f(terms)h(of)g(the)448 -2253 y(primitiv)m(e)i(elemen)m(t.)448 2416 y Fc(Example)k(2)591 -2579 y Fa(defpoly)46 b(sqrt2**2-2,cbrt5**3-5;)591 2804 -y(***)h(defining)f(polynomial)f(for)i(primitive)e(element:)687 -3030 y(6)334 b(4)381 b(3)h(2)591 3143 y(a1)95 b(-)48 -b(6*a1)94 b(-)48 b(10*a1)94 b(+)47 b(12*a1)94 b(-)48 -b(60*a1)e(+)i(17)591 3369 y(sqrt2;)1069 3595 y(5)620 -b(4)668 b(3)g(2)591 3708 y(48/1187*a1)93 b(+)48 b(45/1187*a1)92 -b(-)48 b(320/1187*a1)92 b(-)48 b(780/1187*a1)92 b(+)591 -4046 y(735/1187*a1)45 b(-)j(1820/1187)591 4272 y(sqrt2**2;)591 -4498 y(2)p eop end -%%Page: 5 5 -TeXDict begin 5 4 bop 3392 324 a Fi(5)448 623 y(W)-8 -b(e)33 b(can)f(pro)m(vide)g(factorization)i(of)e(p)s(olynomials)g(o)m -(v)m(er)g(the)g(algebraic)i(n)m(um)m(b)s(er)c(do-)448 -736 y(main)39 b(b)m(y)f(using)g(T)-8 b(rager's)39 b(algorithm.)66 -b(The)37 b(p)s(olynomial)i(to)g(b)s(e)f(factored)h(is)g(\014rst)448 -848 y(mapp)s(ed)e(to)j(a)f(p)s(olynomial)g(o)m(v)m(er)h(the)e(in)m -(tegers)i(b)m(y)f(computing)f(the)h(norm)f(of)h(the)448 -961 y(p)s(olynomial,)33 b(whic)m(h)f(is)g(the)h(resultan)m(t)f(with)g -(resp)s(ect)g(to)h(the)f(primitiv)m(e)h(elemen)m(t)h(of)448 -1074 y(the)40 b(p)s(olynomial)f(and)f(the)i(de\014ning)e(p)s -(olynomial.)67 b(After)39 b(factoring)h(o)m(v)m(er)h(the)e(in-)448 -1187 y(tegers,)k(the)c(factors)h(o)m(v)m(er)g(the)f(algebraic)i(n)m(um) -m(b)s(er)d(\014eld)h(are)g(reco)m(v)m(ered)i(b)m(y)e(GCD)448 -1300 y(calculations.)448 1463 y Fc(Example)c(3)591 1626 -y Fa(defpoly)46 b(a**2-5;)591 1851 y(on)i(factor;)591 -2077 y(x**2)f(+)h(x)f(-)g(1;)591 2303 y(\(x)h(+)f(\(1/2*a)f(+)i -(1/2\)\)*\(x)d(-)j(\(1/2*a)e(-)h(1/2\)\))448 2466 y Fi(W)-8 -b(e)42 b(ha)m(v)m(e)g(also)f(incorp)s(orated)g(a)g(function)f -Fc(split)p 2227 2466 32 4 v 38 w(\014eld)g Fi(for)g(the)h(calculation)i -(of)e(a)448 2579 y(primitiv)m(e)27 b(elemen)m(t)g(of)f(minimal)g -(degree)g(for)g(whic)m(h)f(a)h(giv)m(en)h(p)s(olynomial)f(splits)g(in)m -(to)448 2692 y(linear)j(factors.)41 b(The)28 b(algorithm)i(as)f -(describ)s(ed)e(in)h(T)-8 b(rager's)29 b(article)i(is)d(essen)m(tially) -j(a)448 2804 y(rep)s(eated)g(primitiv)m(e)g(elemen)m(t)h(calculation.) -448 2967 y Fc(Example)j(4)591 3130 y Fa(split_field\(x**3-3*x+7\);)591 -3356 y(***)47 b(Splitting)f(field)g(is)h(generated)e(by:)687 -3582 y(6)381 b(4)h(2)591 3694 y(a2)95 b(-)48 b(18*a2)94 -b(+)47 b(81*a2)94 b(+)48 b(1215)1021 4146 y(4)477 b(2)591 -4259 y({1/126*a2)93 b(-)48 b(5/42*a2)93 b(-)48 b(1/2*a2)e(+)h(2/7,)1116 -4598 y(4)477 b(2)639 4711 y(-)48 b(\(1/63*a2)93 b(-)47 -b(5/21*a2)94 b(+)47 b(4/7\),)p eop end -%%Page: 6 6 -TeXDict begin 6 5 bop 3392 324 a Fi(6)973 736 y Fa(4)477 -b(2)591 848 y(1/126*a2)94 b(-)47 b(5/42*a2)94 b(+)47 -b(1/2*a2)f(+)i(2/7})591 1187 y(for)f(each)g(j)g(in)h(ws)f(product)f -(\(x-j\);)639 1413 y(3)591 1526 y(x)96 b(-)47 b(3*x)g(+)g(7)448 -1689 y Fi(A)31 b(more)f(complete)i(description)f(can)f(b)s(e)g(found)f -(in)h([)p Fc(?)q Fi(].)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF DELETED r37/packages/atensor/atensor.ps Index: r37/packages/atensor/atensor.ps ================================================================== --- r37/packages/atensor/atensor.ps +++ /dev/null @@ -1,4360 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvipsk 5.58e Copyright 1986, 1994 Radical Eye Software -%%Title: at4cpc7g.dvi -%%Pages: 21 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%EndComments -%DVIPSCommandLine: dvips at4cpc7g.dvi -%DVIPSParameters: dpi=300, comments removed -%DVIPSSource: TeX output 1996.04.10:1440 -%%BeginProcSet: tex.pro -/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} -if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict -/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for -65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 -0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V -{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 -getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} -ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false -RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 -false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform -round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg -rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail -{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} -B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ -4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ -p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p -a}B /bos{/SS save N}B /eos{SS restore}B end -%%EndProcSet -TeXDict begin 39158280 55380996 1000 300 300 (at4cpc7g.dvi) -@start /Fa 72 123 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8 -F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E0 -3860300D0E7B9C18>I<00C00001C00001C00001C00003F0000FFC003FFE007DCF0071C7 -00E1C380E1C780E1C780E1C780F1C00079C0003DC0001FE0000FF80003FC0001DE0001CF -0001C70061C380F1C380F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001C0 -0001C00001C00000C00011247D9F18>36 D<3803007C07807C0780EE0F80EE0F00EE0F00 -EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C0000780000780000F80000F00001F000 -01E00001E00003E00003C00003C00007C0000783800787C00F87C00F0EE00F0EE01F0EE0 -1E0EE01E0EE03E0EE03C07C03C07C018038013247E9F18>I<01C00007E0000FF0000E70 -001C38001C38001C38001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E -003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03 -C0141C7F9B18>I<007000F001E003C007800F001E001C00380038007000700070007000 -E000E000E000E000E000E000E000E0007000700070007000380038001C001E000F000780 -03C001F000F000700C24799F18>40 D<6000F00078003C001E000F000780038001C001C0 -00E000E000E000E00070007000700070007000700070007000E000E000E000E001C001C0 -038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1 -C180F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001 -C00001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F00000F000 -00F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F000 -00F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF -80FFFF807FFF0011047D8F18>I<3078FCFC78300606778518>I<01F00007FC000FFE001F -1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E0 -00E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001 -F000131C7E9B18>48 D<01800380038007800F803F80FF80FB8043800380038003800380 -0380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18> -I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001 -C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00 -E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C078 -01C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C000 -00E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B -18>I<001F00003F0000770000770000E70001E70001C7000387000787000707000E0700 -1E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700 -000700000700007FF000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF803800003800 -003800003800003800003800003800003800003BF8003FFE003FFF003C07801803C00001 -C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C -7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C0380180380000700000700000E1 -F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000E038 -01C03C03C01E07800FFF0007FE0001F800131C7E9B18>II<03F8000FFE001FFF003E0F803803807001C07001C07001C07001 -C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000 -E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F0000FFC001F -FE003C0F00780780700380E001C0E001C0E001C0E001E0E001E07001E07803E03C0FE01F -FFE00FFEE003F0E00000E00001C00001C00001C0300380780780780F00783E003FFC001F -F00007C000131C7E9B18>I<3078FCFC783000000000000000003078FCFC783006147793 -18>I<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<7F -FFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC013 -0C7E9318>61 D<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1 -E0E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F -003C1C001E00E00F83E007FFC001FF80007E00131C7E9B18>64 D<00700000F80000F800 -00D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E00030600070700 -0707000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF8 -7F07F0151C7F9B18>II<00F8E003FEE007 -FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E0 -0000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003 -FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0 -1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E0 -1C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1C0 -03FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000 -E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC0 -0FFFC003FDC001F1C0141C7E9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C0 -0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 -0001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>73 -D<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0 -001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03 -801C01C07F03F0FF87F87F03F0151C7F9B18>75 D<7FE000FFE0007FE0000E00000E0000 -0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 -0E00000E00000E00000E00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F -9B18>II<7E07F0FF0FF87F07F01D81C01D -81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C -39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C015 -1C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380 -E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380 -F00780700700780F007FFF003FFE000FF800111C7D9B18>II<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C -03C01C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C -03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>82 -D<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000007000007800003F00 -001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0F001 -C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E0 -7038E0703800700000700000700000700000700000700000700000700000700000700000 -700000700000700000700000700000700000700000700007FF0007FF0007FF00151C7F9B -18>IIII<1FE0003FF8007FFC00781E00 -300E0000070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00 -781F003FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E -00000E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E -00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B -18>I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000 -E00000E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F -80003F80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F -80700780700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F -801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F0038078070038070 -0380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007 -FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C000 -7FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C000 -01C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FF -F80FFFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF8 -0039E0003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000 -387800F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E -00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E -00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC17 -1C809B18>I<03800007C00007C00007C0000380000000000000000000000000007FC000 -FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 -01C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C -003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C -001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E27 -7E9C18>II<7FE000FFE0007FE00000E000 -00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 -00E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0 -131C7E9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C -1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C -1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80 -E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00 -E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C070 -01C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000F -FE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E0038 -0E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E00 -0E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318> -I<01E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E003 -80E00380700780700780380F803C1F801FFF800FFB8003E3800003800003800003800003 -80000380000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803 -F87803F03003E00003C00003C00003800003800003800003800003800003800003800003 -80000380007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700 -E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00 -FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFF -C0FFFFC00380000380000380000380000380000380000380000380000380000380400380 -E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E -00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E -01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E0380 -0E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC00 -00F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000 -F80000700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015 -147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700 -038600038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000 -00700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFF -F07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00 -701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I E -/Fb 18 90 df<000000060000000006000000000E000000001E000000001E000000003E -000000003E000000007E00000000BE00000000BF000000013F000000011F000000021F00 -0000041F000000041F000000081F000000081F000000101F000000201F000000201F8000 -00401F800000400F800000800F800001000F800001000F800002000F800002000F800007 -FFFF80000FFFFF800008000FC000100007C000300007C000200007C000400007C0004000 -07C000800007C001800007C001000007C003000007C00F80000FE0FFE000FFFFFFE000FF -FE282A7EA92C>65 D<003FFFFFE000003FFFFFF8000001F8007C000001F0003E000001F0 -001F000001F0000F000001F0000F800003E0000F800003E0000F800003E0000F800003E0 -000F800007C0000F000007C0001F000007C0001E000007C0003E00000F80007C00000F80 -00F800000F8003E000000F800F8000001FFFFE0000001F0007C000001F0001E000001F00 -00F000003E0000F800003E00007800003E00007C00003E00007C00007C00007C00007C00 -007C00007C00007C00007C00007C0000F80000F80000F80000F80000F80001F00000F800 -03E00001F00003E00001F0000FC00001F0001F000003F000FE00007FFFFFF80000FFFFFF -C0000029297EA82C>I<000003FC008000001FFF008000007E0381800001F00043800007 -C0002700000F00001F00001E00001F00003C00000F00007800000E0000F000000E0001E0 -0000060003C00000060007C0000004000780000004000F80000004001F00000004001F00 -000000003E00000000003E00000000003E00000000007C00000000007C00000000007C00 -000000007C00000000007C0000000000F80000000000F80000000000F80000000000F800 -000040007800000040007800000040007800000080007C00000080003C00000100003C00 -000200001E00000200001E00000C00000F000018000007800030000003E000C0000001F8 -07800000007FFE000000000FF0000000292B7EA92A>I<003FFFFFE000003FFFFFFC0000 -01F8007E000001F0000F000001F00007800001F00003C00001F00001E00003E00001E000 -03E00000F00003E00000F00003E00000F00007C00000F80007C00000F80007C00000F800 -07C00000F8000F800000F8000F800000F8000F800000F8000F800000F8001F000001F000 -1F000001F0001F000001F0001F000001F0003E000003E0003E000003E0003E000003C000 -3E000007C0007C00000780007C00000F80007C00000F00007C00001E0000F800001E0000 -F800003C0000F80000780000F80000F00001F00001E00001F00007C00001F0001F000003 -F000FC00007FFFFFF00000FFFFFF8000002D297EA831>I<003FFFFFFFC0003FFFFFFFC0 -0001F8000FC00001F00003C00001F00001C00001F00000C00001F00000C00003E0000080 -0003E00000800003E00000800003E00000800007C00000800007C00400800007C0040080 -0007C0040000000F80080000000F80080000000F80180000000F80780000001FFFF00000 -001FFFF00000001F00700000001F00300000003E00200000003E00200000003E00200200 -003E00200400007C00400400007C00000400007C00000800007C0000080000F800001800 -00F80000100000F80000300000F80000200001F00000600001F00000E00001F00003C000 -03F0001FC0007FFFFFFFC000FFFFFFFF80002A297EA82B>I<003FFFE0FFFF80003FFFE0 -FFFF800001F80007E0000001F00007C0000001F00007C0000001F00007C0000001F00007 -C0000003E0000F80000003E0000F80000003E0000F80000003E0000F80000007C0001F00 -000007C0001F00000007C0001F00000007C0001F0000000F80003E0000000F80003E0000 -000F80003E0000000F80003E0000001FFFFFFC0000001FFFFFFC0000001F00007C000000 -1F00007C0000003E0000F80000003E0000F80000003E0000F80000003E0000F80000007C -0001F00000007C0001F00000007C0001F00000007C0001F0000000F80003E0000000F800 -03E0000000F80003E0000000F80003E0000001F00007C0000001F00007C0000001F00007 -C0000003F0000FC000007FFF81FFFE0000FFFF83FFFE000031297EA830>72 -D<003FFFE0003FFFE00001F8000001F0000001F0000001F0000001F0000003E0000003E0 -000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000000F80 -00000F8000001F0000001F0000001F0000001F0000003E0000003E0000003E0000003E00 -00007C0000007C0000007C0000007C000000F8000000F8000000F8000000F8000001F000 -0001F0000001F0000003F00000FFFF8000FFFF80001B297EA81A>I<003FFFE003FFC000 -3FFFE003FF800001F80000FC000001F00000E0000001F0000080000001F0000100000001 -F0000200000003E0000800000003E0001000000003E0002000000003E0004000000007C0 -010000000007C0020000000007C0040000000007C008000000000F8020000000000F8070 -000000000F80F0000000000F81F0000000001F04F8000000001F08F8000000001F10FC00 -0000001F407C000000003E807C000000003F003E000000003E003E000000003E003F0000 -00007C001F000000007C001F000000007C001F800000007C000F80000000F8000FC00000 -00F80007C0000000F80007C0000000F80007E0000001F00003E0000001F00003F0000001 -F00003F0000003F00003F800007FFF803FFF8000FFFF803FFF800032297EA832>75 -D<003FFFF000003FFFF0000001F800000001F000000001F000000001F000000001F00000 -0003E000000003E000000003E000000003E000000007C000000007C000000007C0000000 -07C00000000F800000000F800000000F800000000F800000001F000000001F000000001F -000000001F000000003E000000003E000000003E000000003E000010007C000020007C00 -0020007C000040007C00004000F80000C000F800008000F800018000F800030001F00007 -0001F0000F0001F0003E0003F000FE007FFFFFFE00FFFFFFFC0024297EA828>I<003FF8 -000001FFE0003FF8000001FFE00001F8000002F800000178000003F000000178000005F0 -00000178000009F00000013C000009F00000023C000013E00000023C000023E00000023C -000023E00000023C000043E00000043C000047C00000043C000087C00000043C000107C0 -0000041E000107C00000081E00020F800000081E00040F800000081E00040F800000081E -00080F800000101E00081F000000101E00101F000000100F00201F000000100F00201F00 -0000200F00403E000000200F00803E000000200F00803E000000200F01003E000000400F -02007C000000400F02007C000000400784007C000000400784007C00000080078800F800 -000080079000F800000080079000F80000008007A000F80000010007C001F00000010007 -C001F000000300038001F000000780038003F000007FF803007FFF8000FFF80200FFFF80 -003B297EA839>I<003FF8000FFF80003FFC000FFF800000FC0000F80000017E00006000 -00013E0000400000013E0000400000011F0000400000021F0000800000021F8000800000 -020F8000800000020F80008000000407C0010000000407C0010000000407E00100000004 -03E0010000000803E0020000000801F0020000000801F0020000000801F8020000001000 -F8040000001000F80400000010007C0400000010007C0400000020007E0800000020003E -0800000020003E0800000020001F0800000040001F1000000040001F9000000040000F90 -00000040000F90000000800007E0000000800007E0000000800007E0000000800003E000 -0001000003C0000001000001C0000003000001C0000007800001C000007FF80000800000 -FFF8000080000031297EA82F>I<000003FC000000001C0780000000F001C0000001C000 -F000000700007800000E00003C00003C00001C00007800001E0000F000000E0001E00000 -0F0001E000000F0003C000000F00078000000F80078000000F800F0000000F801F000000 -0F801F0000000F803E0000000F803E0000000F803E0000000F807C0000001F007C000000 -1F007C0000001F007C0000001F007C0000003E00F80000003E00F80000007C00F8000000 -7C00F80000007800F8000000F80078000001F00078000001E0007C000003E0007C000003 -C0003C00000780003C00000F00001E00001E00000E00003C00000F0000700000078001E0 -000001C00780000000F01E000000001FF0000000292B7EA92D>I<003FFFFFE000003FFF -FFF8000001F8007E000001F0001F000001F0000F000001F00007800001F00007800003E0 -0007C00003E00007C00003E00007C00003E00007C00007C0000F800007C0000F800007C0 -000F000007C0001F00000F80001E00000F80003C00000F80007800000F8001F000001F00 -07C000001FFFFE0000001F00000000001F00000000003E00000000003E00000000003E00 -000000003E00000000007C00000000007C00000000007C00000000007C0000000000F800 -00000000F80000000000F80000000000F80000000001F00000000001F00000000001F000 -00000003F0000000007FFF80000000FFFF800000002A297EA826>I<003FFFFF8000003F -FFFFE0000001F801F8000001F0003C000001F0001E000001F0001F000001F0000F000003 -E0000F800003E0000F800003E0000F800003E0000F800007C0001F000007C0001F000007 -C0001E000007C0003E00000F80007C00000F80007800000F8001E000000F8003C000001F -001E0000001FFFF00000001F003C0000001F000F0000003E000F8000003E0007C000003E -0007C000003E0007C000007C0007C000007C0007C000007C0007C000007C0007C00000F8 -000F800000F8000F800000F8000F800000F8000F800001F0000F008001F0000F008001F0 -000F008003F0000F01007FFF80070200FFFF8003840000000000F800292A7EA82D>82 -D<00003F80400000FFE0400003C078C000070019C0000E000F8000180007800038000380 -0070000380006000030000E000030000E000030000E000030001E000020001E000020001 -F000000000F000000000F800000000FF000000007FF00000003FFF0000001FFF8000000F -FFE0000001FFE00000001FF000000003F800000000F80000000078000000007800000000 -3800100000380010000038001000003800300000700030000070003000006000300000E0 -00700001C00078000180007C0007000066000E0000C3C03C0000C0FFF00000803FC00000 -222B7DA924>I<0FFFFFFFFE0FFFFFFFFE1F801F003E1C003E000E18003E000C30003E00 -0430003E000420007C000420007C000440007C000C40007C00084000F800088000F80008 -8000F800080000F800000001F000000001F000000001F000000001F000000003E0000000 -03E000000003E000000003E000000007C000000007C000000007C000000007C00000000F -800000000F800000000F800000000F800000001F000000001F000000001F000000001F00 -0000003E000000003E000000003E000000007E0000007FFFFC00007FFFFC000027297FA8 -22>I<7FFFC01FFF7FFFC01FFF03F00001F003E00000C003E000008003E000008003E000 -008007C000010007C000010007C000010007C00001000F800002000F800002000F800002 -000F800002001F000004001F000004001F000004001F000004003E000008003E00000800 -3E000008003E000008007C000010007C000010007C000010007C00001000F800002000F8 -00002000F800002000F800004000F800004000F800008000F80000800078000100007800 -02000078000400003C001800001E003000000F81E0000007FF80000000FE000000282A7C -A828>I<7FFF0000FFE0FFFF0001FFC007F000003E0003F00000300003F00000200001F0 -0000400001F80000800001F80001000000F80003000000FC0002000000FC00040000007C -00080000007E00100000007E00200000003E00600000003F00400000003F00800000001F -01000000001F82000000001F84000000000F88000000000FD8000000000FD00000000007 -E00000000007C00000000007C0000000000780000000000F80000000000F80000000000F -80000000000F00000000001F00000000001F00000000001F00000000001E00000000003E -00000000003E00000000003E00000000007E000000000FFFF00000001FFFF00000002B29 -7FA822>89 D E /Fc 7 111 df<07C01FF03C78783C783CF83EF83EF83EF83EF83EF83E -F83EF83EF83EF83EF83E783C783C3C781FF007C00F157E9414>48 -D68 -D73 D75 D77 D<07F1801FFF80381F8070 -0780F00780F00380F80380FE0000FFF0007FFC007FFE003FFF000FFF8003FFC0001FC000 -07C0E003C0E003C0E00380F00380FC0700FFFE00C7F80012177E9617>83 -D110 D E /Fd 47 122 df<3C0078007F00FE00FF -81FF00FF81FF00FFC1FF80FFC1FF80FFC1FF807FC0FF803EC07D8000C0018000C0018001 -8003000180030001800300030006000300060006000C000E001C001C0038003800700030 -00600019157EA923>34 D45 -D<1C007F007F00FF80FF80FF807F007F001C0009097B8813>I<003F800001FFF00007E0 -FC000FC07E001F803F001F001F003F001F803E000F807E000FC07E000FC07E000FC07E00 -0FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE00 -0FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE07E000FC07E000FC07E00 -0FC07E000FC03F001F803F001F801F001F001F803F000FC07E0007E0FC0001FFF000003F -80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE -0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE -0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE -0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800007FFF0000FFF -FC001E03FE003800FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E00 -0FE03C001FE000001FE000001FC000001FC000003F8000003F0000007E000000FC000000 -F8000001F0000003E00000078000000F0000001E0000003C00E0007000E000E000E001C0 -01C0038001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFF -FF801B277DA622>I<007F800003FFF00007FFFC000F80FE001F007F003F807F003F803F -803F803F803F803F801F803F801F003F8000007F0000007F0000007E000000FC000001F8 -000007F00000FFC00000FFC0000001F80000007E0000003F0000003F8000001FC000001F -C000001FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F -807C007F003F00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E00 -00003E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00 -001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E007E00 -0E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE00 -0000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8 -007FFFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001F -FFC0001FFF00001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C -7FC0001DFFF8001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000 -001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078 -003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003F -FE0000FFFF0001FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F803F00 -00007E0000007E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF80 -1F80FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E00 -0FE07E000FE03E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FF -F800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFF -E07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0 -000001E0000001C000000380000007800000070000000F0000001F0000001E0000003E00 -00003E0000007E0000007C0000007C000000FC000000FC000000FC000000FC000001FC00 -0001FC000001FC000001FC000001FC000001FC000001FC000000F80000007000001C297C -A822>I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F80 -3E000F803F000F803F800F803FC00F803FF01F001FFC1E001FFE3C000FFFF8000FFFE000 -07FFF80001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03E01FFC07C007FE07C001FE0 -F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F000F00 -1FC03F000FFFFC0003FFF800007FC0001B277DA622>I<00000780000000000780000000 -000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000 -003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC000000 -00E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000 -07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE00000 -1C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000 -F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF00FF -FE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<00007FE0030007FFFC0700 -1FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC0 -00001F1FC000000F3F8000000F3F800000077F800000077F800000077F00000000FF0000 -0000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000 -00FF000000007F000000007F800000007F800000073F800000073F800000071FC0000007 -1FC000000E0FE000000E07F000001C03F800003C01FC00007800FF0001F0007FF007C000 -1FFFFF800007FFFE0000007FF00028297CA831>67 DII<00007FE003000007FFFC0700001FFFFF0F -00007FF00F9F0000FF0001FF0001FC0000FF0003F800007F0007F000003F000FE000001F -001FC000001F001FC000000F003F8000000F003F80000007007F80000007007F80000007 -007F0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000 -00FF0000000000FF0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F8000FFFF -F87F800000FF003F800000FF003F800000FF001FC00000FF001FC00000FF000FE00000FF -0007F00000FF0003F80000FF0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F -000007FFFE0F0000007FF003002D297CA835>71 D73 D75 D80 D82 D<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C0007 -C07C0007C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00 -007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007F -E000001FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003 -E0F80007E0FC0007C0FF000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I< -7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F800780 -78007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001C0 -E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F800000 -00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 -00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 -00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 -00007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>II87 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F -003F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F -801F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF -803F839FFC1FFE0FFC03F803FC1E1B7E9A21>97 DI<003FF00001FFFC0003F03E000FC07F001F807F00 -3F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000 -FE000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F800700 -0FE00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F -0007F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE -0007F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007 -E07FFF01FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F80 -1F001F001F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFF -FFC0FE000000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80 -038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC -7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF -C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 -0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF -807FFF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F00 -3E103F003F003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F80 -7C0007C0F80005FFE0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFF -FF000FFFFFC007FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F800 -00F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22> -II<07000F80 -1FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE0 -0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 -0FE00FE0FFFEFFFEFFFE0F2B7EAA12>I107 DIII<003FE00001FFFC0003F07E000FC01F80 -1F800FC03F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8 -FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E0 -1F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 -D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFF -C03FFFE01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC00 -70FF01E0E7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000 -F00001F00003F00003F00007F0001FFFE0FFFFE0FFFFE007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F00007F00007F00007F07007F07007F07007 -F07007F07007F07007F07003F0E001F8C000FFC0003F0014267FA51A>I -III121 D E /Fe 1 111 df<1C7C003EFE006F8E00CF0E -00CE0E000E0E000E0E001C1C001C1CC01C38C01C3980381F00180E00120D808C15>110 -D E /Ff 6 110 df<07FFFC0FFFFE1FFFFC3FFFF870C600C0C60000C60001C600018E00 -038E00038E00038E00070F00070F000F0F000F0F801E07800C070017127F9118>25 -D<01FFE7FF8003FFE7FF80003C00F000003C00F000003C00F000003C00F000007801E000 -007801E000007801E000007801E00000F003C00000F003C00000FFFFC00000FFFFC00001 -E007800001E007800001E007800001E007800003C00F000003C00F000003C00F000003C0 -0F000007801E000007801E000007801E000007801E0000FFF3FFE000FFF3FFC000211C7E -9B23>72 D<01FF0001FF03FF0003FF003F0003E0003F0007E0003F000DE0003F000DE000 -67801BC00067801BC000678033C000678063C000C780678000C780C78000C780C78000C7 -8187800187830F000187830F000187860F000183C60F000303CC1E000303CC1E000303D8 -1E000303F01E000603F03C000603E03C000603E03C000E03C03C00FFE387FFC0FFC387FF -80281C7E9B28>77 D<000FC3003FF700F03E01C01E01800E03800E07000C07000C070000 -07800007C00007FC0003FF8001FFC000FFE0001FF00001F00000F0000070000070300070 -3000607000E07000C07801807E0700EFFE00C3F800181C7E9B19>83 -D<0FE0001FE00003E00003C00003C00003C00003C0000780000780000780000780000F3F -000F7F800FC3C00F83C01F03C01E03C01E03C01E03C03C07803C07803C07803C0F08780F -18780F18781E30781E70F00FE0600780151D7F9C18>104 D<1E0FC1F8003F1FE3FC0067 -B0F61E0063E0FC1E00C7C0F81E00C780F01E000780F01E000780F01E000F01E03C000F01 -E03C000F01E03C000F01E078401E03C078C01E03C078C01E03C0F1801E03C0F3803C0780 -7F001803003C0022127F9124>109 D E /Fg 5 51 df0 -D<60F0F06004047D890A>I<0F801FC0306060306030C018C018C018C018603060303060 -1FC00F800D0E7E8E12>14 D<060F0F0E1E1E1C3C383830707060E0C04008117F910A>48 -D<01FF8007FF800E0000180000300000600000600000600000C00000C00000FFFF80FFFF -80C00000C000006000006000006000003000001800000E000007FF8001FF8011167D9218 ->50 D E /Fh 8 57 df<06001E00FE00EE000E000E000E000E000E000E000E000E000E00 -0E000E000E000E007FE07FE00B137E9211>49 D<1F007FC0F9E0F8E0F8F07070007000F0 -00E001C001C0038006000C30183030707FE0FFE0FFE00C137E9211>I<0FC03FE0387078 -7878383878007000F00FC00FC000700038703CF83CF83CF83870783FF01FC00E137F9211 ->I<00E001E001E003E007E00EE01CE018E030E070E0E0E0FFFCFFFC00E000E000E000E0 -07FC07FC0E137F9211>I<60607FE07FC07F006000600060006F007FC071E060E000F000 -F070F0F0F0F0E0E1C07F801F000C137E9211>I<03E00FF01C38387870787030E000E7E0 -EFF0F038F01CE01CE01CE01C601C701838301FE007C00E137F9211>I<60007FFC7FFC7F -F8E030C060C0C000C001800300070007000E000E000E001E001E001E001E000C000E147E -9311>I<0FC01FE038707038703878387E703FE01FC01FF03BF870FCE03CE01CE01CE018 -78383FF00FC00E137F9211>I E /Fi 4 89 df<0000700001F00003E0000780000F0000 -1E00003C0000780000780000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00001E00001 -E00001C00003C0000780000700000E00003C0000700000E000007000003C00000E000007 -000007800003C00001C00001E00001E00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F000007800007800003C00001E00000F000007800003E00001F000007014637B811F>26 -DI80 D88 -D E /Fj 3 111 df<06070600000000387CCEDC1C38383B767E3C08127F910B>105 -D<3C78F0007FFDFC00CF8F1C00CF0E1C000E0E1C001C1C38001C1C38001C1C39801C1C73 -0038387F0018183C00190B7F8A1B>109 D<3CF0007FFC00CF1C00CE1C000E1C001C3800 -1C38001C39801C7300387F00183C00110B7F8A13>I E /Fk 2 51 -df<0C007C00FC009C001C001C001C001C001C001C001C001C001C001C00FF80FF800910 -7E8F0F>49 D<1F007F80C3C0E1E0E0E000E001E001C0038007000E00186030607FC0FFC0 -FFC00B107F8F0F>I E /Fl 17 104 df0 -D<70F8F8F87005057C8E0E>I<00C00000C00000C00000C00000C000C0C0C0F0C3C038C7 -000EDC0003F00000C00003F0000EDC0038C700F0C3C0C0C0C000C00000C00000C00000C0 -0000C00012157D9619>3 D<000FF00000708E0001808180020080400400802008008010 -100080081000800820008004200080044000800240008002400080028000800180008001 -80008001FFFFFFFF80008001800080018000800180008001400080024000800240008002 -200080042000800410008008100080080800801004008020020080400180818000708E00 -000FF00020227D9C27>8 D<03F0000FFC001C0E00300300600180600180C000C0C000C0 -C000C0C000C0C000C0C000C0C000C0C000C06001806001803003001C0E000FFC0003F000 -12147D9519>14 D<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FF -FFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012147D95 -19>I17 D21 D<00000000600000000000300000000000300000000000180000 -0000001800000000000C00000000000600000000000380FFFFFFFFFFE0FFFFFFFFFFC000 -0000000380000000000600000000000C0000000000180000000000180000000000300000 -00000030000000000060002B127D9432>33 D<01800000C0000300000060000300000060 -000600000030000600000030000C0000001800180000000C00700000000700FFFFFFFFFF -C0FFFFFFFFFF80700000000700180000000C000C00000018000600000030000600000030 -0003000000600003000000600001800000C0002A127C9432>36 D<001FFF007FFF01E000 -0380000600000C0000180000300000300000600000600000600000C00000C00000FFFFFF -FFFFFFC00000C000006000006000006000003000003000001800000C0000060000038000 -01E000007FFF001FFF181E7C9A21>50 D<7FF8007FFE000007800001C000006000003000 -001800000C00000C000006000006000006000003000003FFFFFFFFFFFF00000300000300 -000600000600000600000C00000C0000180000300000600001C00007807FFE007FF80018 -1E7C9A21>I<00000300000300000600000600000C00000C000018000018000030000030 -0000600000600000C00000C00000C0000180000180000300000300000600000600000C00 -000C0000180000180000300000300000600000600000C00000C000018000018000030000 -0300000300000600000600000C00000C0000180000180000300000300000600000600000 -C00000400000183079A300>54 D<40000010C00000306000006060000060600000603000 -00C0300000C0300000C018000180180001800C0003000C0003000C00030007FFFE0007FF -FE0003000C0003000C0003000C0001801800018018000180180000C0300000C030000060 -600000606000006060000030C0000030C000001980000019800000198000000F0000000F -0000000F000000060000000600001C2480A21D>56 D<007F800001FFE000078078000E00 -1C0018000600300003006000018060000180C00000C0C00000C0C00000C0C00000C0C000 -00C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C000 -00C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C04000 -00401A1F7D9D21>92 D<000F0038007000E001C001C001C001C001C001C001C001C001C0 -01C001C001C001C001C001C001C001C0038007001E00F0001E000700038001C001C001C0 -01C001C001C001C001C001C001C001C001C001C001C001C001C001C000E000700038000F -10317CA419>102 DI E /Fm 14 62 df<60F0F0F0F0F0F0F0706060606060600000000060F0F060 -04177D960A>33 D<0180030006000C001C001800380030007000700060006000E000E000 -E000E000E000E000E000E000E000E00060006000700070003000380018001C000C000600 -0300018009227E980E>40 DI<003000003000003000003000003000003000003000 -003000003000003000003000FFFFFCFFFFFC003000003000003000003000003000003000 -00300000300000300000300000300016187E931B>43 D<07C01FF03C78783C701C701CF0 -1EF01EF01EF01EF01EF01EF01EF01EF01E701C701C783C3C781FF007C00F157F9412>48 -D<03000F00FF00F700070007000700070007000700070007000700070007000700070007 -0007007FF07FF00C157E9412>I<1F803FE071F0F8F0F878F87870780078007800F000E0 -01C0038007000E000C18181830387FF0FFF0FFF00D157E9412>I<0FC01FF03078783C78 -3C783C103C007800F007E007E00078003C001E701EF81EF81EF83C70383FF00FC00F157F -9412>I<007000F000F001F003F0077006700E701C70187030707070E070FFFEFFFE0070 -00700070007003FE03FE0F157F9412>I<60307FF07FE07F8060006000600060006F807F -C070E06070007800786078F078F078F07060E03FC01F000D157E9412>I<01F007F80E1C -1C3C383C70187000F080F7F0FFF8F81CF81CF01EF01EF01E701E701E381C3C381FF007C0 -0F157F9412>I<60007FFE7FFE7FFCE018C018C030006000C00180018003800300070007 -0007000F000F000F000F000F0006000F167E9512>I<07C01FF03838701C701C701C7C1C -3F383FF00FE01FF83DFC70FCE03EE00EE00EE00E700C78383FF00FC00F157F9412>I61 -D E /Fn 37 123 df<00000FF000003FFC0000F00E0001C01E0001C01E0003C01C000380 -00000780000007800000078000000F0000000F0000000F0000000F000001FFFFF001FFFF -F0001E00F0001E01E0001E01E0001E01E0001E01E0003C03C0003C03C0003C03C0003C03 -C0003C078000780780007807880078078C00780F1800780F1800F00F1800F0073000F007 -E000F001C000E0000001E0000001E0000001C0000001C0000073C00000F3800000F30000 -007E0000003C0000001F2D82A21B>12 D<00000FF01FF000003FF87FFC00007079E00E00 -00E07B801E0001C033801E0003C007801C0003C00F00000003C00F00000007800F000000 -07800F00000007801E00000007801E00000007801E0000000F001E000001FFFFFFFFF001 -FFFFFFFFF0000F003C00F0000F003C01E0001E003C01E0001E003C01E0001E007801E000 -1E007803C0001E007803C0003C007803C0003C007803C0003C00F00780003C00F0078000 -3C00F00788007800F0078C007800F00F18007801E00F18007801E00F18007801E0073000 -F001E007E000F001E001C000F003C0000000F003C0000000E003C0000001E00380000001 -C00780000071C707000000F18F0E000000F38F1C0000007F07F80000003C03F00000002F -2D82A22B>14 D<0000C0000180000300000600000C0000180000380000700000E00000E0 -0001C0000380000380000700000700000F00000E00001E00001C00001C00003C00003800 -00380000780000780000700000700000F00000F00000F00000E00000E00000E00000E000 -00E00000E00000E00000E00000E00000E00000E00000E00000E000006000007000007000 -003000003800001800000C0000123279A414>40 D<000C00000600000700000300000380 -0003800001800001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 -0001C00001C00001C00003C00003C00003C0000380000380000780000780000700000700 -000F00000E00000E00001E00001C00003C0000380000380000700000700000E00001C000 -01C0000380000700000600000C0000180000300000600000C00000123280A414>I<0E1E -3F3E3E1E06060C0C18383060C08008107D850F>44 D<7FF87FF8FFF07FF00D047D8B11> -I<387CFCFCF87006067B850F>I<0000300000780000780000F00000F00000F00000E000 -01E00001E00001C00003C00003C0000380000780000700000F00000E00001E00001C0000 -38000038000070C00061E000E3C001C3C00383C00303C00607800C07801F87807FE780E0 -7F00401FF0000FC0000F00001E00001E00001E00001E00003C00003C00003C0000180015 -2B7EA019>52 D<007C0001FE000387000603800C03801803801803803003806003806007 -80600700E00F00F03E00F07C00E0F80003F00007E0000F80000F00001E00001C30001C70 -001CE0001FC0000F80000000000000000000000000000000001C00003E00007E00007E00 -007C0000380000112477A319>63 D<00FFFFF00000FFFFFC00000F003E00000F000F0000 -1E000780001E000780001E0003C0001E0003C0003C0003C0003C0003E0003C0003E0003C -0003E000780003E000780003E000780003E000780003E000F00007C000F00007C000F000 -07C000F00007C001E0000F8001E0000F8001E0000F0001E0001F0003C0001E0003C0003C -0003C0007C0003C0007800078000F000078001E000078007800007801F0000FFFFFC0000 -FFFFF0000023227DA125>68 D<00FFF800FFF8000F00000F00001E00001E00001E00001E -00003C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F0 -0001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780 -00FFF800FFF80015227DA113>73 D<0001F060000FFCC0001E0FC0003807C0007003C000 -E0038000C0038001C0038001C00380038003000380030003C0000003C0000003E0000001 -F8000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000 -001E0000001E0030001C0030001C0030001C00300018007000380070007000780060007C -01C000EF038000C7FF000081FC00001B247DA21B>83 D<0078C001FDE00387E00707C00E -03C01C03C03C03C0380780780780780780780780F00F00F00F00F00F10F00F18F01E3070 -1E30703E3038EE601FCFC00F038015157B9419>97 D<03E03FC03FC003C003C007800780 -078007800F000F000F000F001E001E781FFC1F8E3E0E3C0F3C073C0F780F780F780F780F -F01EF01EF01EF03CF0387078707070E03FC00F0010237BA216>I<007E0001FF0003C380 -0703800E07801C07803C0000380000780000780000780000F00000F00000F00000F00000 -F00100700300700E00383C001FF0000FC00011157B9416>I<00003E0003FC0003FC0000 -3C00003C0000780000780000780000780000F00000F00000F00000F00001E00079E001FD -E00387E00707C00E03C01C03C03C03C0380780780780780780780780F00F00F00F00F00F -10F00F18F01E30701E30703E3038EE601FCFC00F038017237BA219>I<00F803FC0F0E1E -063C063806780CF038FFF0FF80F000E000E000E000E000E002E006701C70783FE00F800F -157A9416>I<00003C0000FF0001CF0001CF0003C6000380000780000780000780000780 -000F00000F00000F00000F0001FFF801FFF8001E00001E00001E00001E00001E00003C00 -003C00003C00003C00003C0000780000780000780000780000780000F00000F00000F000 -00F00000E00001E00001E00001C00001C00073C000F38000F300007E00003C0000182D82 -A20F>I<001E30003F7800F1F801C0F001C0F00380F00780F00701E00F01E00F01E00F01 -E01E03C01E03C01E03C01E03C01E07800E07800E0F800E1F8007FF0001EF00000F00000F -00001E00001E00001E00703C00F03800F0F0007FE0003F8000151F7E9416>I<00F8000F -F0000FF00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C00007 -8000078F8007BFC007F1E00FC0F00F80F00F00F00F00F01E01E01E01E01E01E01E01E03C -03C03C03C03C03C43C078678078C780F0C780F18780738F007F06001C017237DA219>I< -006000F000E000E0000000000000000000000000000000000F001F8033C063C0C3C0C780 -C78007800F000F000F001E001E001E203C303C60786078C039C03F800E000C217CA00F> -I<00F8000FF0000FF00000F00000F00001E00001E00001E00001E00003C00003C00003C0 -0003C0000780000781E00783F00786300F08700F10F00F20F00F40601F80001F80001FE0 -001EF0003C78003C7C003C3C203C3C307878607878607878407838C0F01F80600F001423 -7DA216>107 D<01F01FE01FE001E001E003C003C003C003C007800780078007800F000F -000F000F001E001E001E001E003C003C003C003C007800780079007980F300F300F30073 -007E001C000C237CA20C>I<1E07E03E003F1FF0FF0067B879C78067E03F03C0C7C03E03 -C0C7803C03C0C7803C03C00F007807800F007807800F007807800F007807801E00F00F00 -1E00F00F001E00F00F101E00F01E183C01E01E303C01E03C303C01E03C603C01E01CE078 -03C01FC0300180070025157C9428>I<1E07C03F1FE067B8F067E078C7C078C78078C780 -780F00F00F00F00F00F00F00F01E01E01E01E01E01E21E03C33C03C63C07863C078C3C03 -9C7803F83000E018157C941B>I<007E0001FF0003C3800701C00E01C01C01E03C01E03C -01E07801E07801E07801E0F003C0F003C0F00380F00780700700700E00701C003838001F -F00007C00013157B9419>I<01E0F003F3FC067F1E067C0E0C7C0F0C780F0C780F00F00F -00F00F00F00F00F00F01E01E01E01E01E01E01E03C03C03803E07803E07003F1E007BF80 -079F000780000780000F00000F00000F00000F00001E00001E0000FFE000FFE000181F80 -9419>I<00F0C001F9C0078FC00E07800E07801C07803C0780380F00780F00780F00780F -00F01E00F01E00F01E00F01E00F03C00703C00707C0070FC003FF8000F78000078000078 -0000F00000F00000F00000F00001E00001E0001FFE001FFE00121F7B9416>I<1E0F803F -3FC067F0E067E0E0C7C1E0C781E0C780C00F00000F00000F00000F00001E00001E00001E -00001E00003C00003C00003C00003C000078000030000013157C9415>I<007C0001FF00 -0383800703800E07800E07800E02000F80000FF8000FFC0007FE0001FF00001F00000F00 -700F00F00E00F00E00E01C007038003FF0001FC00011157D9414>I<00E001E001E001E0 -01E003C003C003C003C00780FFF8FFF807800F000F000F000F001E001E001E001E003C00 -3C003C103C1878307830786038C03F800F000D1F7C9E10>I<0F00301F807833C07863C0 -F0C3C0F0C780F0C780F00781E00F01E00F01E00F01E01E03C01E03C01E03C41E03C61E07 -8C1E078C1E0F8C0E1B980FF3F003E0E017157C941A>I<0F01C01F83E033C3E063C1E0C3 -C0E0C780E0C780E00780C00F00C00F00C00F00C01E01801E01801E01801E03001E03001E -06001E04000F1C0007F80003E00013157C9416>I<0F0060701F80F0F833C0F0F863C1E0 -78C3C1E038C781E038C781E0380783C0300F03C0300F03C0300F03C0301E0780601E0780 -601E0780601E0780C01E0780C01E0781801E0F81800F1BC30007F9FE0003E0F8001D157C -9420>I<03C3C00FE7E0187C30307C707078F06078F060786000F00000F00000F00000F0 -0001E00001E00001E02071E030F3C060F3C060E3C0C0E7E3807CFF00383C0014157D9416 ->I<0F00301F807833C07863C0F0C3C0F0C780F0C780F00781E00F01E00F01E00F01E01E -03C01E03C01E03C01E03C01E07801E07801E0F800E1F800FFF0003EF00000F00000F0000 -1E00301E00783C0078380070700061E0003FC0001F0000151F7C9418>I<00F03003F870 -07FEE007FFC00C07800C0300000600000C0000180000300000600000C000018000030040 -0600600C00C01F03C03FFF8079FF0060FE00C0380014157E9414>I -E /Fo 22 86 df45 D<00700001F0000FF000FF -F000FFF000F3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 -F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000FFFF80FF -FF80FFFF80111D7C9C1A>49 D<07F0001FFE003FFF007C7F80FE3FC0FE1FC0FE1FE0FE0F -E07C0FE0380FE0001FE0001FC0001F80003F00003E00007C0000F80000F00001C0000380 -E00700E00E00E01C01E01FFFE03FFFC07FFFC0FFFFC0FFFFC0FFFFC0131D7D9C1A>I<01 -FC0007FF000FFF801E1FC03F0FE03F0FE03F0FE03F0FE01E0FE0001FC0001F80003F0001 -FE0001FC00000F80000FE00007F00007F00007F83807F87C07F8FE07F8FE07F8FE07F0FC -0FF07C0FE03FFFC01FFF0003FC00151D7E9C1A>I<0003C00003C00007C0000FC0001FC0 -003FC0003FC00077C000E7C001C7C00387C00707C00707C00E07C01C07C03807C07007C0 -F007C0FFFFFEFFFFFEFFFFFE000FC0000FC0000FC0000FC0000FC001FFFE01FFFE01FFFE -171D7F9C1A>I<7000007FFFF87FFFF87FFFF87FFFF07FFFE0FFFFC0F003C0E00780E00F -00E01E00003C00003C0000780000780000F80000F80001F00001F00001F00001F00003F0 -0003F00003F00003F00003F00003F00003F00003F00001E000151E7D9D1A>55 -D<01FC0007FF000FFF801F07C01E07E03E03E03E03E03F03E03F83E03FE3C03FF7C01FFF -800FFF000FFFC007FFE01FFFE03E7FF07C1FF87807F8F803F8F800F8F800F8F800F8F800 -F07C01F03F03E03FFFC00FFF8003FC00151D7E9C1A>I<01FC0007FF001FFF803F07C07E -03E07E03E0FE03F0FE03F0FE03F0FE03F8FE03F8FE03F8FE03F87E07F87E07F83E07F81F -FFF807FBF80043F80003F03C03F07E03F07E07E07E07E07E0FC03C1F803FFF001FFC0007 -F000151D7E9C1A>I<3C7EFFFFFFFF7E3C000000003C7EFFFFFFFF7E3C08147D930F>I66 D68 DI73 D75 DI78 D<001FF80000FFFF0001F81F8007F00FE00FE007F01FC003F81F -8001F83F8001FC7F8001FE7F0000FE7F0000FEFF0000FFFF0000FFFF0000FFFF0000FFFF -0000FFFF0000FFFF0000FFFF0000FFFF0000FF7F0000FE7F0000FE7F8001FE3F8001FC3F -8001FC1FC003F80FE007F007F00FE001F81F8000FFFF00001FF800201F7D9E27>II82 D<03FC180FFF381FFFF83E03F87C00F8780078F80078F80038F80038FC0000FF00 -00FFF8007FFF007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC00007CE000 -7CE0007CE0007CF00078F800F8FE01F0FFFFE0E7FFC0C1FF00161F7D9E1D>I<7FFFFFFC -7FFFFFFC7FFFFFFC7E0FE0FC780FE03C700FE01CF00FE01EF00FE01EE00FE00EE00FE00E -E00FE00EE00FE00E000FE000000FE000000FE000000FE000000FE000000FE000000FE000 -000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFFC0 -07FFFFC007FFFFC01F1E7E9D24>II -E /Fp 28 119 df<000FF000007FFC0001FC1E0003F03E0007E07F000FC07F000FC07F00 -0FC07F000FC03E000FC008000FC000000FC000000FC00000FFFFFF00FFFFFF00FFFFFF00 -0FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F00 -0FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF0FFE07FF0FFE0 -7FF0FFE01B237FA21F>12 D45 -D68 -D73 D75 -DI< -0007FC0000003FFF800000FE0FE00003F803F80007E000FC000FE000FE001FC0007F001F -80003F003F80003F803F80003F807F80003FC07F00001FC07F00001FC0FF00001FE0FF00 -001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF0000 -1FE07F00001FC07F00001FC07F80003FC03F80003F803F81F03F801FC3F87F000FE70CFE -0007E606FC0003FE07F80000FF0FE000003FFF80000007FF8020000003C020000003E060 -000003FFE0000003FFE0000001FFC0000001FFC0000000FFC0000000FF800000007F0000 -00001E00232C7DA12A>81 DI<01FC0C07FF9C1FFFFC3F03FC7C00FC78007C78003CF8001CF8001C -F8001CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF -00007F00003F00001FE0001FE0001FE0001FF0001EF0003EFC003CFF00FCFFFFF8E7FFE0 -C0FF8018227DA11F>I87 D<07FC001FFF803E0FC07F07E07F03E07F03F03E03F01C03F00003F000FFF007FF -F01FE3F03F83F07F03F0FE03F0FE03F0FE03F0FE03F07E07F07F1DFF1FF8FF07E07F1816 -7E951B>97 DI<00FF0007FFC00FC3E01F07F03F07F07E07F07E03E07E01C0FE0000 -FE0000FE0000FE0000FE0000FE00007E00007E00007F00003F00701F80E00FE1E007FFC0 -00FE0014167E9519>I<0003FE000003FE000003FE0000007E0000007E0000007E000000 -7E0000007E0000007E0000007E0000007E0000007E0000007E0001FE7E0007FFFE000FC1 -FE001F00FE003F007E007E007E007E007E00FE007E00FE007E00FE007E00FE007E00FE00 -7E00FE007E00FE007E00FE007E007E007E007E007E003F007E001F00FE000F83FFC007FF -7FC001FC7FC01A237EA21F>I<00FE0007FF800F87C01F03E03F01F07E01F07E01F8FE01 -F8FE01F8FFFFF8FFFFF8FE0000FE0000FE00007E00007E00007F00003F00381F80700FE0 -F003FFC000FF0015167E951A>I<001F8000FFE001F3E003E7F007E7F00FC7F00FC7F00F -C3E00FC0000FC0000FC0000FC0000FC000FFFC00FFFC00FFFC000FC0000FC0000FC0000F -C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F -C0007FFC007FFC007FFC0014237FA211>I104 D<1E003F007F807F807F807F803F -001E00000000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F -801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C247FA30F>I108 -D110 D<00FE0007FFC00F83E01F -01F03E00F87E00FC7E00FC7E00FCFE00FEFE00FEFE00FEFE00FEFE00FEFE00FEFE00FE7E -00FC7E00FC3F01F81F01F00F83E007FFC000FE0017167E951C>II<00FE070007FF8F000FC1DF001F80FF003F00 -7F007F003F007F003F007E003F00FE003F00FE003F00FE003F00FE003F00FE003F00FE00 -3F00FE003F007F003F007F003F003F007F001F80FF000FC1FF0007FFBF0000FC3F000000 -3F0000003F0000003F0000003F0000003F0000003F0000003F000001FFE00001FFE00001 -FFE01B207E951E>II<07F3001FFF00781F00700F00F00700F00700F80000FF0000FFF0 -007FFC003FFE001FFF0007FF00003F80E00F80E00780F00780F00780F80700FC1E00FFFC -00C7F00011167E9516>I<01C00001C00001C00001C00003C00003C00003C00007C00007 -C0000FC0003FFF00FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F -C0000FC0000FC0000FC3800FC3800FC3800FC3800FC3800FC30007E70003FE0000FC0011 -207F9F16>III E /Fq 36 119 df<003F000000FFC00003C1E060 -0700F0C00E00F0C01E0078C03C0079803C00798078007B0078007B0078007E00F0007E00 -F0007C00F0007800F0007800700078007000F8003803BC403C0F3CE01FFC1FC007E00F00 -1B157E941F>11 D<00C00C0001E01E0001E01E0003C03C0003C03C0003C03C0003C03C00 -078078000780780007807800078078000F00F0000F00F0000F00F0800F00F0C01F01E180 -1F01E1801F03E1001F86E3003FFCFE003DF03C003C0000003C0000007800000078000000 -7800000078000000F0000000F0000000F0000000F0000000E00000001A207F941D>22 -D<07FFFF800FFFFFC01FFFFF803FFFFF8070318000E0618000C06180000061800000E380 -0000C3800001C3800001C3800001C3800003838000038380000783C0000703C0000F03C0 -000F03E0000E01E0000E01C0001A157F941C>25 D<78FCFCFCFC7806067C850E>58 -D<78FCFCFEFE7E0606060C0C1C1830706007107C850E>I<0000001800000078000001E0 -0000078000001E00000078000003E000000F8000003C000000F0000003C000000F000000 -3C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000F8000 -0003E0000000780000001E0000000780000001E000000078000000181D1C7C9926>I<00 -0180000180000380000300000300000700000600000600000E00000C00000C00001C0000 -180000180000180000380000300000300000700000600000600000E00000C00000C00001 -C0000180000180000380000300000300000700000600000600000E00000C00000C00000C -00001C0000180000180000380000300000300000700000600000600000E00000C00000C0 -000011317DA418>II<000001C000000001C000000003C00000 -0003C000000007C00000000FC00000000FC00000001FC00000001FE000000037E0000000 -33E000000063E0000000C3E0000000C3E000000183E000000183E000000303E000000703 -E000000603E000000C03F000000C03F000001801F000003801F000003FFFF000007FFFF0 -00006001F00000C001F00000C001F000018001F000030001F000030001F000070001F800 -1F0001F800FFC01FFF80FFC01FFF8021237EA225>65 D<007FFFFFC000FFFFFFC00007C0 -07C00007C003C0000F8001C0000F8001C0000F800180000F800180001F000180001F0001 -80001F018180001F018180003E030000003E030000003E070000003E0F0000007FFE0000 -007FFE0000007C0E0000007C0E000000F80C000000F80C000000F80C000000F80C000001 -F000000001F000000001F000000001F000000003E000000003E000000003E000000007E0 -0000007FFF000000FFFF00000022227EA120>70 D<007FFE3FFF00FFFE7FFF0007C003E0 -0007C003E0000F8007C0000F8007C0000F8007C0000F8007C0001F000F80001F000F8000 -1F000F80001F000F80003E001F00003E001F00003E001F00003FFFFF00007FFFFE00007C -003E00007C003E00007C003E0000F8007C0000F8007C0000F8007C0000F8007C0001F000 -F80001F000F80001F000F80001F000F80003E001F00003E001F00003E001F00007E003F0 -007FFE3FFF00FFFE7FFF0028227EA128>72 D<007FFE07FF00FFFE07FF0007C001F00007 -C001C0000F800380000F800700000F800C00000F801800001F003000001F006000001F01 -C000001F038000003E060000003E0E0000003E1E0000003E3F0000007CFF0000007DDF00 -00007F0F8000007E0F800000FC0FC00000F807C00000F807C00000F807E00001F003E000 -01F003E00001F003F00001F001F00003E001F00003E001F80003E000F80007E001FC007F -FE0FFF80FFFE0FFF8028227EA129>75 D<007FFF0000FFFF000007C0000007C000000F80 -00000F8000000F8000000F8000001F0000001F0000001F0000001F0000003E0000003E00 -00003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8003000F800 -3000F8006001F0006001F0006001F000C001F000C003E001C003E0038003E0078007E01F -807FFFFF00FFFFFF001C227EA121>I<007FF00007FF00FFF00007FF0007F0000FE00007 -F0001BE0000DF0001FC0000DF00037C0000DF00037C0000DF00067C00019F000CF800019 -F000CF800019F0018F800018F8018F800030F8031F000030F8031F000030F8061F000030 -F80C1F000060F80C3E000060F8183E000060F8183E000060F8303E0000C0F8607C0000C0 -F8607C0000C0F8C07C0000C07CC07C0001807D80F80001807F00F80001807F00F8000180 -7E00F80003007E01F00003007C01F00003007C01F0000F807803F0007FF0703FFF00FFF0 -707FFF0030227EA12F>I<007FFFE00000FFFFFC000007C03E000007C00F00000F800F80 -000F800780000F800780000F800780001F000F80001F000F80001F000F80001F001F0000 -3E001E00003E003C00003E007800003E01F000007FFFC000007FFF8000007C07C000007C -03E00000F801E00000F801F00000F801F00000F801F00001F003E00001F003E00001F003 -E00001F003E00003E007C00003E007C0C003E007C0C007E003C1807FFE03E380FFFE01FF -000000007C0022237EA125>82 D<0003F030000FFC60001E0EE0003803E0007003E000E0 -01C000C001C001C001C001C001C00380018003C0018003C0000003C0000003E0000003FC -000001FF800001FFF00000FFF800003FFC000007FC0000007C0000003E0000001E000000 -1E0000001E0030001C0030001C0030001C00300018007000380070007000780060007C00 -C000EF038000C7FF000081FC00001C247DA21E>I<1FFFFFFE1FFFFFFE1F01F01E3C01F0 -0E3803E00E3003E00E7003E00C6003E00C6007C00CC007C00CC007C00CC007C00C000F80 -00000F8000000F8000000F8000001F0000001F0000001F0000001F0000003E0000003E00 -00003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000000F800 -0001F800007FFFE000FFFFE0001F227EA11D>I86 D89 D<0078C001FDE00387E00707C00E03C0 -1C03C03C03C0380780780780780780780780F00F00F00F00F00F08F00F0CF01E18701E18 -703E1038EE301FCFE00F03C016157E941A>97 D<00003E0003FC0003FC00003C00003C00 -00780000780000780000780000F00000F00000F00000F00001E00079E001FDE00387E007 -07C00E03C01C03C03C03C0380780780780780780780780F00F00F00F00F00F08F00F0CF0 -1E18701E18703E1038EE301FCFE00F03C017237EA219>100 D<007C0003FF000783800E -01801C0180380180780300701E00FFFC00FFE000F00000E00000E00000E00000E00000E0 -0080F00180700700381E001FF8000FE00011157D9417>I<000F8C003FDE0070FE00E07C -01C03C03803C07803C0700780F00780F00780F00781E00F01E00F01E00F01E00F01E01E0 -0E01E00E03E0070FE003FFC001F3C00003C00003C0000780000780380780780F00F81E00 -F83C007FF8003FC000171F809417>103 D<00F8000FF0000FF00000F00000F00001E000 -01E00001E00001E00003C00003C00003C00003C000078000078F8007BFC007F1E00FC0F0 -0F80F00F00F00F00F01E01E01E01E01E01E01E01E03C03C03C03C03C07823C0783780786 -780F06780F0C780718F007F06001E018237EA21C>I<007000F800F800F000E000000000 -0000000000000000000000000F001F8033C061C0C3C0C3C0C3C00780078007800F000F00 -1E001E101E183C303C303C603CE01FC00F000D227FA111>I<0000600000F00001F00001 -F00000E0000000000000000000000000000000000000000000000000001E00007F8000E3 -C001C3C00183C00303C00303C0000780000780000780000780000F00000F00000F00000F -00001E00001E00001E00001E00003C00003C00003C00003C0000780000780038780078F0 -00F9E000FBC0007F80003E0000142C81A114>I<00F8000FF0000FF00000F00000F00001 -E00001E00001E00001E00003C00003C00003C00003C0000780000780F00781F807830C0F -0E3C0F187C0F307C0F60781FC0301FC0001FF8001E7C003C1E003C1F003C0F083C0F0C78 -1E18781E18781E30780E30F007E06003C016237EA219>I<01F01FE01FE001E001E003C0 -03C003C003C007800780078007800F000F000F000F001E001E001E001E003C003C003C00 -3C0078007800788078C0F180F180F18073007F001E000C237EA20F>I<1E03F01F803F8F -F87FC063DC3CE1E063F01F80F0C3E01F00F0C3C01E00F0C3C01E00F007803C01E007803C -01E007803C01E007803C01E00F007803C00F007803C00F007807820F007807831E00F007 -861E00F00F061E00F00F0C1E00F007183C01E007F01800C001E028157F942B>I<1E03E0 -003F8FF00063DC780063F03C00C3E03C00C3C03C00C3C03C000780780007807800078078 -00078078000F00F0000F00F0000F01E0800F01E0C01E01E1801E03C1801E03C3001E01C6 -003C01FC00180078001A157F941D>I<03C0F007F3FC0C7F1E0C7C0E187C0F18780F1878 -0F00F00F00F00F00F00F00F00F01E01E01E01E01E01E01E03C03C03803E07803E07003F1 -E007BF80079F000780000780000F00000F00000F00000F00001E00001E0000FFE000FFE0 -00181F819418>112 D<1E07803F9FC063F8E063E1E0C3E3E0C3C3E0C3C3C00781800780 -000780000780000F00000F00000F00000F00001E00001E00001E00001E00003C00001800 -0013157F9416>114 D<007E0000FF0001C38003838007078007078007020007C00007FC -0007FE0003FF0001FF80001F80300780780780F80700F80700F00E00701C003FF8000FE0 -0011157E9417>I<00E001E001E001E001E003C003C003C003C00780FFFCFFFC07800F00 -0F000F000F001E001E001E001E003C003C003C083C0C78187838783038E03FC00F000E1F -7F9E12>I<0F8018001FC03C0031E03C0061E07800E1E07800C1E07800C3C0780003C0F0 -000780F0000780F0000780F0000F01E0000F01E0000F01E1000F01E1800F03C3000F03C3 -000F07C200070DC60007F9FC0001F0780019157F941C>I<0F80601FC0F031E0F861E078 -E1E038C1E038C3C03803C0300780300780300780300F00600F00600F00C00F00C00F0180 -0F01800F030007860003FC0001F80015157F9418>I E /Fr 75 127 -df<000FC1F0003FF7F800F87E3C01E0FC7C03C0FC7C03C0F83807807800078078000780 -78000780780007807800078078000780780007807800FFFFFFC0FFFFFFC0078078000780 -780007807800078078000780780007807800078078000780780007807800078078000780 -78000780780007807800078078000780780007807800078078007FE1FFC07FE1FFC01E23 -80A21C>11 D<000FC000003FE00000F8700001E0780003C0F80003C0F8000780F8000780 -7000078000000780000007800000078000000780000007800000FFFFF800FFFFF8000780 -F80007807800078078000780780007807800078078000780780007807800078078000780 -7800078078000780780007807800078078000780780007807800078078007FE1FF807FE1 -FF80192380A21B>I<0007E03F00003FF1FF8000F83FC1C001E03F01E003C07E03E003C0 -7E03E007807C03E007803C01C007803C000007803C000007803C000007803C000007803C -000007803C0000FFFFFFFFE0FFFFFFFFE007803C03E007803C01E007803C01E007803C01 -E007803C01E007803C01E007803C01E007803C01E007803C01E007803C01E007803C01E0 -07803C01E007803C01E007803C01E007803C01E007803C01E007803C01E07FF1FF8FFE7F -F1FF8FFE272380A229>14 D<78FCFCFCFCFCFCFC78787878787878787878783030303030 -30000000000078FCFCFCFC7806247CA30E>33 D<781E00FC3F00FC3F00FE3F80FE3F807E -1F800601800601800601800C03000C03001C0700180600300C00701C0060180011107EA2 -18>I<78FCFCFEFE7E0606060C0C1C1830706007107CA20E>39 D<0030006000C0018003 -80070006000E000E001C001C003800380038007800700070007000F000F000F000F000F0 -00F000F000F000F000F000F000F000F000F00070007000700078003800380038001C001C -000E000E00060007000380018000C0006000300C327DA413>II<78FCFCFEFE7E0606060C0C -1C1830706007107C850E>44 DI<78FCFCFCFC7806067C85 -0E>I<01F00007FC000F1E001E0F003C07803803807803C07803C07803C07803C0F803E0 -F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0 -F803E07803C07803C07803C07803C03C07803C07801E0F000F1E0007FC0001F00013227E -A018>48 D<00C001C007C0FFC0FBC003C003C003C003C003C003C003C003C003C003C003 -C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFF10 -217CA018>I<03F0000FFC001C3F00300F806007806007C0F803C0FC03E0FC03E0FC03E0 -7803E03003E00003E00007C00007C0000780000F00001F00001E00003C0000780000F000 -00E0000180000380600700600E00601C00E01800C03FFFC07FFFC0FFFFC0FFFFC013217E -A018>I<03F0000FFC001C1F00380F803807807C07C07C07C07C07C03C07C01807C00007 -80000F80000F00001E00003C0003F80003F800001E00000F000007800007C00003C00003 -E03003E07803E0FC03E0FC03E0FC03C0F803C06007803007801C1F000FFC0003F0001322 -7EA018>I<000700000700000F00001F00001F00003F00003F00006F0000EF0000CF0001 -8F00018F00030F00070F00060F000C0F001C0F00180F00380F00300F00600F00E00F00FF -FFF8FFFFF8000F00000F00000F00000F00000F00000F00000F0001FFF801FFF815217FA0 -18>I<1000801C07801FFF001FFE001FFC001FF000180000180000180000180000180000 -18000019F8001BFC001F0F001C07001807801803C00003C00003E00003E00003E00003E0 -7803E0F803E0F803E0F803C0F003C06007C0600780300F001C1E000FFC0003F00013227E -A018>I<007E0001FF0003C3800701C00E03C01E07C01C07C03C03803C00007800007800 -00780000F9FC00FBFE00FE0700FC0780FC03C0FC03C0F803C0F803E0F803E0F803E0F803 -E0F803E07803E07803E07803E03803C03C03C01C07801E07000F0E0007FC0001F0001322 -7EA018>I<6000007000007FFFE07FFFE07FFFC07FFFC0600180E00300C00300C00600C0 -0C00000C0000180000380000300000700000600000E00000E00001E00001E00001C00003 -C00003C00003C00003C00003C00007C00007C00007C00007C00007C00007C00007C00003 -800013237DA118>I<01F00007FC000E0F001807803803803001C07001C07001C07001C0 -7801C07C03803E03803F87001FEE000FFC0007FC0003FE000FFF001C7F80381FC0700FC0 -7003E0E001E0E001E0E000E0E000E0E000E0E000C07001C07001803803801E0F000FFC00 -03F00013227EA018>I<01F00007FC000E0E001C07003C0780780380780380F803C0F803 -C0F803C0F803E0F803E0F803E0F803E0F803E07803E07807E07807E03C07E01C0FE00FFB -E007F3E00003C00003C00003C00007803807807C07007C0F00780E00301C003838001FF0 -0007C00013227EA018>I<78FCFCFCFC7800000000000000000078FCFCFCFC7806157C94 -0E>I<78FCFCFCFC7800000000000000000070F8FCFCFC7C0C0C0C1C181830306040061F -7C940E>I61 D<000180000003C0000003C0 -000003C0000007E0000007E0000007E000000FF000000DF000000DF000001DF8000018F8 -000018F8000038FC0000307C0000307C0000607E0000603E0000603E0000C03F0000C01F -0000C01F0001801F8001FFFF8001FFFF80030007C0030007C0030007C0060003E0060003 -E0060003E00E0001F01F0003F0FFC01FFFFFC01FFF20237EA225>65 -D<000FE010003FF83000F81C7001E0067003C003F0078001F00F0000F01E0000F03E0000 -703C0000707C0000707C0000307800003078000030F8000030F8000000F8000000F80000 -00F8000000F8000000F8000000F800000078000030780000307C0000307C0000303C0000 -603E0000601E0000600F0000C0078000C003C0018001E0030000F80E00003FF800000FE0 -001C247DA223>67 DIII<0007F008003FFC1800FC0E3801E0033803C001F8078000F80F0000781E00 -00781E0000383C0000383C0000387C0000187800001878000018F8000018F8000000F800 -0000F8000000F8000000F8000000F8000000F8003FFF78003FFF7C0000F87C0000F83C00 -00F83C0000F81E0000F81E0000F80F0000F8078000F803C001F801F003B800FC0718003F -FC080007F00020247DA226>III76 DII<000FE000007FFC0000F83E0003E00F80078003C00F0001E00F -0001E01E0000F03E0000F83C0000787C00007C7C00007C7800003C7800003CF800003EF8 -00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E7C00007C7C -00007C7C00007C3C0000783E0000F81E0000F00F0001E00F8003E007C007C003E00F8000 -F83E00007FFC00000FE0001F247DA226>II82 D<03F0200FFC601E0EE03803E07801E070 -01E07000E0F000E0F00060F00060F00060F80000F800007E00007FC0003FFC001FFF000F -FF8007FFC000FFC0000FE00003E00001F00001F00000F0C000F0C000F0C000F0C000F0E0 -00E0E001E0F001C0F803C0EF0780C7FF0081FC0014247DA21B>I<7FFFFFF87FFFFFF87C -07C0F87007C0386007C0186007C018E007C01CE007C00CC007C00CC007C00CC007C00CC0 -07C00C0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000 -07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000 -07C0000007C0000007C00003FFFF8003FFFF801E227EA123>II87 -D89 -D91 D93 D<0C1C1830706060C0C0C0FCFEFE7E7E3C07107DA20E>96 -D<1FE0003FF8007C3C007C1E007C0F00380F00000F00000F0003FF000FFF003F0F007C0F -007C0F00F80F00F80F18F80F18F80F18781F187C3FB83FE7F00F83C015157E9418>I<0F -0000FF0000FF00001F00000F00000F00000F00000F00000F00000F00000F00000F00000F -00000F00000F1F800F7FE00FE1F00F80780F00780F003C0F003C0F003E0F003E0F003E0F -003E0F003E0F003E0F003E0F003C0F003C0F00780F80F00EE1F00E7FC00C1F0017237FA2 -1B>I<01FE0007FF000F0F801E0F803C0F807C0700780000F80000F80000F80000F80000 -F80000F80000F800007C00007C00C03C00C01E01800F830007FE0001F80012157E9416> -I<0001E0001FE0001FE00003E00001E00001E00001E00001E00001E00001E00001E00001 -E00001E00001E003F1E007FDE01F07E03E03E03C01E07801E07801E0F801E0F801E0F801 -E0F801E0F801E0F801E0F801E07801E07801E03C01E03C03E01F0FF00FFDFE03F1FE1723 -7EA21B>I<01FC0007FF000F0F801E07C03C03C07C03E07801E0FFFFE0FFFFE0F80000F8 -0000F80000F80000F800007800007C00603C00601E00C00F838007FF0000FC0013157F94 -16>I<001E00007F0001E78001CF8003CF80078700078000078000078000078000078000 -078000078000078000FFF800FFF800078000078000078000078000078000078000078000 -0780000780000780000780000780000780000780000780000780000780007FFC007FFC00 -112380A20F>I<0000F003F1F80FFFB81E1E383C0F303C0F007C0F807C0F807C0F807C0F -803C0F003C0F001E1E001FFC0033F0003000003000003800003FFE003FFFC01FFFE03FFF -F07801F0700078E00038E00038E00038E000387000703800E01E03C00FFF8001FC001521 -7F9518>I<0F0000FF0000FF00001F00000F00000F00000F00000F00000F00000F00000F -00000F00000F00000F00000F1F800F7FC00FE1E00FC0F00F80F00F00F00F00F00F00F00F -00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFF -F3FF18237FA21B>I<1E003F003F003F003F001E0000000000000000000000000000000F -00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F -00FFE0FFE00B2280A10D>I<00F001F801F801F801F800F0000000000000000000000000 -0000007807F807F800F80078007800780078007800780078007800780078007800780078 -007800780078007800780078007800787078F870F8F0F9E07FC01F000D2C83A10F>I<0F -0000FF0000FF00001F00000F00000F00000F00000F00000F00000F00000F00000F00000F -00000F00000F0FFC0F0FFC0F03E00F03800F07000F0E000F1C000F38000F78000FFC000F -BE000F1E000F1F000F0F800F07800F07C00F03C00F03E00F03F0FFE7FEFFE7FE17237FA2 -1A>I<0F00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F000F -000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FF -F00C2380A20D>I<0F0FC07E00FF3FE1FF00FFE0F707801FC07E03C00F807C03C00F0078 -03C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803 -C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9FFC -FFF3FF9FFC26157F9429>I<0F1F80FF7FC0FFE1E01FC0F00F80F00F00F00F00F00F00F0 -0F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FF -FFF3FF18157F941B>I<01FC0007FF000F07801E03C03C01E07800F07800F0F800F8F800 -F8F800F8F800F8F800F8F800F8F800F87800F07C01F03C01E01E03C00F078007FF0001FC -0015157F9418>I<0F1F80FF7FE0FFE1F00F80F80F00780F007C0F007C0F003E0F003E0F -003E0F003E0F003E0F003E0F003E0F007C0F007C0F00780F80F00FE1F00F7FC00F1F000F -00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000171F7F941B>I< -01F06007FCE00F0EE01E03E03C03E07C01E07C01E0F801E0F801E0F801E0F801E0F801E0 -F801E0F801E07C01E07C01E03C03E03E03E01F0FE00FFDE003F1E00001E00001E00001E0 -0001E00001E00001E00001E00001E0001FFE001FFE171F7E941A>I<0F7CFFFEFFDF1F9F -0F9F0F0E0F000F000F000F000F000F000F000F000F000F000F000F000F00FFF8FFF81015 -7F9413>I<0FC83FF870786018E018E018F000FC007FC03FE01FF00FF8007CC03CC01CE0 -1CE01CF018F838DFF08FC00E157E9413>I<03000300030003000700070007000F001F00 -3F00FFF8FFF80F000F000F000F000F000F000F000F000F000F000F0C0F0C0F0C0F0C0F0C -0F0C079803F001E00E1F7F9E13>I<0F00F0FF0FF0FF0FF01F01F00F00F00F00F00F00F0 -0F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01F00F01F00787F8 -03FEFF01F8FF18157F941B>III<7FE3FF007FE3 -FF0007C1F00003C0E00003E1C00001E3800000F3000000FF0000007E0000003C0000003E -0000003E0000007F00000067800000C7C00001C3C0000181E0000381F0000F81F800FFC3 -FF80FFC3FF80191580941A>II<3FFFC03FFFC03C0780380F00301F00703E00603C0060780060F80001F00001 -E00003E0C007C0C00780C00F00C01F01C03E01803C0380780780FFFF80FFFF8012157F94 -16>III<1E04 -3FDE7FFCF7F840F00F057CA018>126 D E /Fs 11 107 df0 D<70F8F8F87005057C8D0D>I<01800180018001800180C183F18F399C0FF003C0 -03C00FF0399CF18FC1830180018001800180018010147D9417>3 -D<03C00FF01C38300C60066006C003C003C003C003C003C00360066006300C1C380FF003 -C010127D9317>14 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7F -FE3FFC1FF80FF003C010127D9317>I<000000C0000003C000000F0000003C000000F000 -0003C00000070000001C00000078000001E00000078000001E00000078000000E0000000 -780000001E0000000780000001E0000000780000001C0000000700000003C0000000F000 -00003C0000000F00000003C0000000C00000000000000000000000000000000000000000 -00000000000000007FFFFF80FFFFFFC01A247C9C23>20 D<000000040000000002000000 -0002000000000100000000008000000000400000000020FFFFFFFFFCFFFFFFFFFC000000 -002000000000400000000080000000010000000002000000000200000000040026107D92 -2D>33 D<0000020000000003000000000300000000018000000000C000000000C0000000 -0060007FFFFFF000FFFFFFFC000000000E00000000038000000001F0000000007C000000 -00F000000003C000000007000000000C00FFFFFFF8007FFFFFF0000000006000000000C0 -0000000180000000018000000003000000000300000000020000261A7D972D>41 -D<003FF800FFF803C0000700000C0000180000300000300000600000600000C00000C000 -00C00000FFFFF8FFFFF8C00000C00000C000006000006000003000003000001800000C00 -0007000003C00000FFF8003FF8151C7C981E>50 D<400001C00003600006600006600006 -30000C30000C30000C1800181800181800180FFFF00FFFF00C0030060060060060060060 -0300C00300C001818001818001818000C30000C30000C300006600006600006600003C00 -003C00003C000018000018001821809F19>56 D -106 D E /Ft 27 116 df<03E0000FF8601C3C60381CC0780EC0F00EC0F00F80F00F00E0 -0F00E00E00E01F007077203FE7E01F83C0130E7F8D17>11 D<000F80003FC00070E000C0 -600180600300E00700E00600E00601C00C3F800C7F800C3FC00C01C01801E01801E01801 -E01801E03803C03803C03803803C07006FFE0063F800604000600000C00000C00000C000 -00C00000131D809614>I<0C0E001C3F001C7F001CC6003B80003FC0003FF00038780070 -38007038C07038C0703980E01F00600E00120E7F8D14>20 D<1E00001F80000380000380 -0003C00001C00001E00000E00000E00000F00000700000700000780000F80001FC00039C -00071C000E1E001C0E00380E00700F00E00700C0038011177E9615>I<0601800E03800E -03800E03801C07001C07001C07001C0700380E00380E60381E603C3E407FEFC077C78070 -0000700000E00000E00000E00000C0000013147F8D15>I<7C0180FC03801C03801C0700 -380700380E00380E00381C0070780070F00073C0007F8000FE0000F00000110E7F8D11> -I<0FFFE01FFFF03FFFE0718C00C18C00019C00039C00031C00031C00071C00071C000E1E -000E0E000C0C00140E808D14>25 D<60F0F06004047D830A>58 D<60F0F07030307060E0 -40040A7D830A>I<07FFF80007FFFE0000F00F0000F0078000F0038001E003C001E001C0 -01E001C001E001C003C003C003C003C003C003C003C003C0078007800780078007800700 -07800F000F001E000F001C000F0078000F01F000FFFFC000FFFF00001A177F961D>68 -D<07FF07FF00F000F000F001E001E001E001E003C003C003C003C007800780078007800F -000F000F000F00FFE0FFE010177F960F>73 D<07FF0FF807FF0FF000F0078000F00E0000 -F01C0001E0300001E0600001E1C00001E3800003C7800003CF800003FF800003F3C00007 -C3C0000781E0000781E0000781F0000F00F0000F00F0000F0078000F007800FFE1FF00FF -C1FF001D177F961E>75 D<001FC0007FF001F07803C03C07801C0F001E1E001E1C001E3C -001E38001E78001E78001E78001E70003CF0003C7000787000787870F078F9E03D8BC01F -8F800FFE0003FC10000C10000E30000FE0000FC0000FC0000700171D7F961C>81 -D<003E3000FF6001C1E00300E00700E00E00C00E00C00F00000F80000FF80007FE0003FF -0000FF80000F80000780000380300380600700700700700E00781C00FFF80087E0001417 -7E9615>83 D<03CC0FFC1C3C383C7038F038F038F038E070E073E0F3F1F27FFE1E3C100E -7F8D13>97 D<7E007C001C001C001C00380038003800380077C07FE078707078E078E078 -E078E078C0F0C0F0C0E0E3C07F803E000D177F960F>I<03E00FF01C7838787870F000F0 -00F000E000E000E01070703FE01F800D0E7F8D0F>I<001F80001F000007000007000007 -00000E00000E00000E00000E0003DC000FFC001C3C00383C00703800F03800F03800F038 -00E07000E07300E0F300F1F2007FFE001E3C0011177F9612>I<1F80001F000007000007 -00000700000E00000E00000E00000E00001CF8001DFE001F0E001E0E003C0E003C0E0038 -0E00381C00701C00701CC07038C0703980E01F00600E0012177F9614>104 -D<018003C003C00180000000000000000000001E003F0067006700C7000E000E000E001C -001CC038C039801F000E000A1780960C>I<0018003C003C001800000000000000000000 -01E003F006380C38187000700070007000E000E000E000E001C001C001C071C0F380F700 -FE007C000E1D80960E>I<1F801F000700070007000E000E000E000E001C1E1C3E1C671D -CF3B1E3F0C3FC039E070E070E370E370E6E07C603810177F9612>I<3F3E0E0E0E1C1C1C -1C3838383870707070E0E6E6E4FC7808177F960B>I<1C3E0F803E7FBFC067C3F1C06783 -E1C0CF03C1C00F0381C00E0381C00E0383801C0703801C0703981C0707181C070730380E -03E0180601C01D0E808D1F>I<1C3E003E7F8067C380678380CF03800F03800E03800E07 -001C07001C07301C0E301C0E603807C0180380140E808D15>I<0E3E001F7F0033C38033 -83C06703C00703C00703C00703C00E07800E07800E07000F1E001FFC001DF0001C00001C -0000380000380000FF0000FE00001214818D12>112 D<07C00FE01CF01CF03CE03F801F -C00FE001E0F0E0F0E0E1C0FF803F000C0E7E8D10>115 D E /Fu -51 122 df<007E01FE07800E001E003C003C0078007FF87FF8F000F000F0007000700070 -0038001C180FF807E00F147E9312>15 D<78FCFCFCFC7806067D850D>58 -D<78FCFCFEFE7E0606060C0C18387020070F7D850D>I<000001C00000078000001E0000 -0078000001E00000078000000E0000003C000000F0000003C000000F0000003C000000F0 -000000F00000003C0000000F00000003C0000000F00000003C0000000E00000007800000 -01E0000000780000001E0000000780000001C01A1A7C9723>I<00030003000700060006 -000E000C000C001C0018001800380030003000700060006000E000C000C001C001800180 -01800380030003000700060006000E000C000C001C001800180038003000300070006000 -6000E000C000C000102D7DA117>II<000007000000070000000F0000001F000000 -1F0000003F0000003F0000007F0000007F000000DF0000019F0000019F0000031F800003 -1F8000060F8000060F80000C0F8000180F8000180F8000300F8000300F80007FFF8000FF -FF8000C00F8001800F8001800FC003000FC0030007C0060007C01F000FC0FFC0FFFCFFC0 -FFFC1E207E9F22>65 D<00FFFFF000FFFFFC000F803E000F801E000F801F001F001F001F -001F001F001F001F001F003E003E003E003E003E007C003E00F8007C03E0007FFFC0007F -FFE0007C01F000F800F800F800F800F8007800F8007801F000F801F000F801F000F801F0 -00F003E001F003E003E003E007C003E00F807FFFFF00FFFFF800201F7F9E22>I<0000FE -020007FF06001F818C003E00DC0078007C00F0007C01E0003803C00038078000380F8000 -381F0000301F0000303E0000303E0000007C0000007C0000007C0000007C000000F80000 -00F8000000F8000000F80000C0F80001807800018078000300780003003C0006003C000C -001E0018000F00300007C0E00003FF800000FE00001F217E9F21>I<00FFFFF00000FFFF -FC00000F803E00000F800F00000F800780001F000780001F0003C0001F0003C0001F0003 -C0003E0003C0003E0003C0003E0003C0003E0003C0007C0007C0007C0007C0007C0007C0 -007C0007C000F8000F8000F8000F8000F8000F0000F8001F0001F0001E0001F0001E0001 -F0003C0001F000780003E000F00003E001E00003E003C00003E01F80007FFFFE0000FFFF -F80000221F7F9E26>I<00FFFFFF8000FFFFFF00000F800F00000F800700000F80070000 -1F000300001F000300001F000300001F000600003E030600003E030600003E030000003E -070000007C0E0000007FFE0000007FFE0000007C0E000000F80C000000F80C000000F80C -060000F80C0C0001F0000C0001F0000C0001F000180001F000380003E000300003E00070 -0003E000E00003E007E0007FFFFFE000FFFFFFC000211F7F9E22>I<00FFFFFF8000FFFF -FF00000F800F00000F800700000F800700001F000300001F000300001F000300001F0006 -00003E030600003E030600003E030000003E070000007C0E0000007FFE0000007FFE0000 -007C0E000000F80C000000F80C000000F80C000000F80C000001F000000001F000000001 -F000000001F000000003E000000003E000000003E000000003E00000007FFF000000FFFF -000000211F7F9E1D>I<0000FE010003FF83000F81C6003E006E0078003E00F0003E01E0 -001C03C0001C0780001C0F80001C1F0000181F0000183E0000183E0000007C0000007C00 -00007C0000007C000000F8000000F800FFFCF800FFFCF80003E0F80007C0780007C07800 -07C0780007C03C000F803C000F801E001F800F003F8007C0F30003FFC100007F00002021 -7E9F24>I<00FFFCFFFC00FFFCFFFC000F800F80000F800F80000F800F80001F001F0000 -1F001F00001F001F00001F001F00003E003E00003E003E00003E003E00003E003E00007C -007C00007FFFFC00007FFFFC00007C007C0000F800F80000F800F80000F800F80000F800 -F80001F001F00001F001F00001F001F00001F001F00003E003E00003E003E00003E003E0 -0003E003E0007FFE7FFE00FFFC7FFE00261F7F9E26>I<00FFFE01FFFC000F80000F8000 -0F80001F00001F00001F00001F00003E00003E00003E00003E00007C00007C00007C0000 -7C0000F80000F80000F80000F80001F00001F00001F00001F00003E00003E00003E00003 -E000FFFE00FFFE00171F809E14>I<001FFF80003FFF800000F8000000F8000000F80000 -01F0000001F0000001F0000001F0000003E0000003E0000003E0000003E0000007C00000 -07C0000007C0000007C000000F8000000F8000000F8000000F8000001F0000001F00003C -1F00007C1F0000FC3E0000FC3E0000F87C0000F078000071F000003FE000001F80000019 -207E9E19>I<00FFFC0FFC00FFFC1FFC000F8007E0000F800700000F800E00001F001C00 -001F003000001F006000001F00C000003E038000003E070000003E0C0000003E1C000000 -7C3C0000007CFE0000007DFE0000007F3E000000FE3F000000FC1F000000F81F000000F8 -1F800001F00F800001F00F800001F00FC00001F007C00003E007C00003E003E00003E003 -E00003E003F0007FFE3FFE00FFFE3FFE00261F7F9E27>I<00FFFE0000FFFE00000F8000 -000F8000000F8000001F0000001F0000001F0000001F0000003E0000003E0000003E0000 -003E0000007C0000007C0000007C0000007C000000F8000000F8000000F8006000F80060 -01F000C001F000C001F0018001F0018003E0038003E0070003E00F0003E03F007FFFFE00 -FFFFFE001B1F7F9E1F>I<00FFC0001FFC00FFC0001FFC000FC0003F80000FC0003F8000 -0FC0006F80001BC000DF00001BC000DF000019E0019F000019E0019F000031E0033E0000 -31E0063E000031E0063E000031E00C3E000061E00C7C000061E0187C000061E0307C0000 -61E0307C0000C0F060F80000C0F060F80000C0F0C0F80000C0F180F8000180F181F00001 -80F301F0000180F301F0000180F601F0000300FC03E00003007C03E00003007803E0000F -807803E0007FF0707FFE00FFF060FFFE002E1F7F9E2C>I<00FFC01FFC00FFC01FFC000F -E003C0000FE00180000FE001800019F003000019F003000019F803000018F803000030F8 -06000030FC060000307C060000307E060000603E0C0000603E0C0000603F0C0000601F0C -0000C01F180000C00F980000C00F980000C00FD800018007F000018007F000018007F000 -018003F000030003E000030001E000030001E0000F8001E0007FF000C000FFF000C00026 -1F7F9E25>I<0001FC000007FF00001F07C0003C03E000F001E001E000F003C000F007C0 -0078078000780F0000781F0000781E0000783E0000783E0000787C0000F87C0000F87C00 -00F87C0000F8F80001F0F80001F0F80001E0F80003E0F80003C0F80007C0780007807800 -0F007C001F003C003E003E007C001E00F0000F83E00007FF800001FC00001D217E9F23> -I<00FFFFE000FFFFF8000F807C000F801E000F801E001F001F001F001F001F001F001F00 -1F003E003E003E003E003E003C003E0078007C00F8007C03E0007FFFC0007FFE0000F800 -0000F8000000F8000000F8000001F0000001F0000001F0000001F0000003E0000003E000 -0003E0000003E000007FFE0000FFFE0000201F7F9E1D>I<00FFFFC000FFFFF0000F80F8 -000F803C000F803E001F003E001F003E001F003E001F003E003E007C003E007C003E00F8 -003E01F0007C07C0007FFF80007FFE00007C0F0000F80F8000F8078000F807C000F807C0 -01F00F8001F00F8001F00F8001F00F8003E01F0003E01F0303E01F0303E01F067FFE0F8E -FFFE07FC000001F020207F9E23>82 D<0007E080001FF180003C3B0000700F0000E00F00 -01E0070001C0060003C0060003C0060003C0060007C0000007C0000007E0000003FE0000 -03FFC00003FFE00001FFF000007FF000000FF0000001F8000000F8000000F0000000F000 -3000F0003000F0003000E0007001E0007001C0007003C00078078000EE0F0000C7FC0000 -81F8000019217D9F1C>I<0FFFFFFC1FFFFFF81E03E0781803E0383803E0183007C01830 -07C0186007C0186007C030C00F8030C00F8030000F8000000F8000001F0000001F000000 -1F0000001F0000003E0000003E0000003E0000003E0000007C0000007C0000007C000000 -7C000000F8000000F8000000F8000001F800007FFFE0007FFFE0001E1F7F9E1B>I<7FFE -0FFE7FFE0FFE07C001E007C000C007C000C00F8001800F8001800F8001800F8001801F00 -03001F0003001F0003001F0003003E0006003E0006003E0006003E0006007C000C007C00 -0C007C000C007C000C00F8001800F8001800F8001800F800300078006000780060007800 -C0003C0380001E0F00000FFC000003F000001F207D9E1F>I89 D<00F8C003FDE0078FC00E07C01E03C01C03C03C07807807 -80780780780780F00F00F00F00F00F00F00F18F01E30701E30703E3038FE603FCFE00F03 -8015147E9318>97 D<03C03FC03F800780078007800F000F000F000F001E001E001EF01F -FC3F0E3E0E3C0F3C0F780F780F780F780FF01EF01EF01EF03CF03CF038707070E03FC00F -0010207E9F14>I<007C01FE078F0F1F1E1F1C1E3C0C780078007800F000F000F000F000 -F00070027007381E1FF80FE010147E9314>I<00003C0003FC0003F80000780000780000 -780000F00000F00000F00000F00001E00001E000F9E003FDE0078FC00E07C01E03C01C03 -C03C0780780780780780780780F00F00F00F00F00F00F00F18F01E30701E30703E3038FE -603FCFE00F038016207E9F18>I<007C01FE07870E031E033C033C06781C7FF87FC0F000 -F000F000F000700070027007381E1FF807E010147E9315>I<0000F00003FC00073C0007 -7C000F7C000F38000F00001E00001E00001E00001E00001E0003FFF007FFF0003C00003C -00003C0000780000780000780000780000780000F80000F00000F00000F00000F00000F0 -0001E00001E00001E00001E00001C00003C00003C000738000FB8000FF0000F70000FE00 -0078000016297D9F16>I<003C6000FEF001C3E00383E00701E00F01E00F03C01E03C01E -03C01E03C03C07803C07803C07803C07803C0F003C0F001C1F001C3F000FFE0003DE0000 -1E00001E00003C00703C00F83C00F87800F0F000FFE0003F0000141D7F9316>I<00F000 -0FF0000FE00001E00001E00001E00003C00003C00003C00003C000078000078000079F80 -07BFC00FE1E00FC0E00F80F00F00F01E01E01E01E01E01E01E01E03C03C03C03C03C03C0 -3C078678078C780F0C780F18780738F007F06001C017207E9F1A>I<007000F800F800F0 -00E000000000000000000000000007001FC039C031E061E063C0C3C00780078007800F00 -0F000F001E181E303C303C601CE01FC007000D1F7F9E10>I<0003800007C00007C00007 -8000070000000000000000000000000000000000000000780000FE00018F00030F00060F -00060F000C1E00001E00001E00001E00003C00003C00003C00003C000078000078000078 -0000780000F00000F00000F00000F00001E00071E000F9E000FBC000F78000FF00007C00 -001228809E13>I<00F0000FF0000FE00001E00001E00001E00003C00003C00003C00003 -C0000780000780000781C00787E00F0E300F18F00F31F00F61F01EC1E01F81C01F80001F -E0003DF0003C78003C78003C3C307878607878607878407838C0F01F80600F0014207E9F -18>I<01E01FE01FC003C003C003C007800780078007800F000F000F000F001E001E001E -001E003C003C003C003C007800780078007980F300F300F300F3007E001C000B207E9F0E ->I<0E03F03F003F8FF87F8033DC3DC3C063F03F81C063E01F01E063C01E01E0C7C03C03 -C007803C03C007803C03C007803C03C00F007807800F007807800F007807800F00780F0C -1E00F00F181E00F01E181E00F01E301E00F00E703C01E00FE01800C0038026147F9328> -I<0E07E0003F8FF00033F8780063F0380063E03C0063C03C00C780780007807800078078 -00078078000F00F0000F00F0000F00F0000F01E1801E01E3001E03C3001E03C6001E01CE -003C01FC001800700019147F931B>I<007C0001FF000383800F01C01E01C01C01E03C01 -E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF0 -0007C00013147E9316>I<01C0F007F3FC067F1C0C7C0E0C780E0C780F18F00F00F00F00 -F00F00F00F01E01E01E01E01E01E01E03C03C03803C07803E07003F1E007BFC0079F0007 -80000780000F00000F00000F00000F00001E0000FFE000FFE000181D829317>I<00F0C0 -03FBC0070F800E0F801C07803C07803C0F00780F00780F00780F00F01E00F01E00F01E00 -F01E00F03C00F03C00707C0070FC003FF8000F780000780000780000F00000F00000F000 -00F00001E0001FFE001FFE00121D7E9314>I<0E0F003FBF8033F18063E3C063C7C063C7 -C0C787800787000780000780000F00000F00000F00000F00001E00001E00001E00001E00 -003C000018000012147F9315>I<007C01FE0387070F070F070E0F000FF007FC07FE03FE -00FF001F780FF80EF80EF01C70383FF01FC010147E9315>I<00C001E003C003C003C003 -C007800780FFF8FFF80F000F000F000F001E001E001E001E003C003C003C003C18783078 -30786078C03F800F000D1C7F9B10>I<0700181FC03C39C07831E07861E07863C078C3C0 -F00780F00780F00780F00F01E00F01E00F01E00F01E30F03C60F03C60F07C60F0FCC07F9 -FC01F07018147F931A>I<0700C01FC1E039C1F031E0F061E0F063C070C3C06007806007 -80600780600F00C00F00C00F00C00F01800F01800F03000F0200078E0003FC0001F00014 -147F9316>I<07C3C00FE7E0187C603078F06079F06079F0C0F1E000F1C000F00000F000 -01E00001E00039E00079E030FBC060FBC060F3C0C0E7E3807CFF00383C0014147E931A> -120 D<0700301FC07839C0F031E0F061E0F063C0F0C3C1E00781E00781E00781E00F03C0 -0F03C00F03C00F03C00F07800F07800F07800F1F8007FF0001EF00000F00000F00381E00 -7C1C007C3C0078780070F0003FE0001F8000151D7F9316>I E /Fv -43 123 df<003F0F8000FFFFC003E3F3E00787E3E00707C3E00F07C1C00F03C0000F03C0 -000F03C0000F03C0000F03C000FFFFFC00FFFFFC000F03C0000F03C0000F03C0000F03C0 -000F03C0000F03C0000F03C0000F03C0000F03C0000F03C0000F03C0000F03C0000F03C0 -000F03C0007F87FC007F87FC001B1D809C18>11 D<003F0000FF8003E3800787C00707C0 -0F07C00F03800F00000F00000F00000F0000FFFFC0FFFFC00F03C00F03C00F03C00F03C0 -0F03C00F03C00F03C00F03C00F03C00F03C00F03C00F03C00F03C00F03C07F87F87F87F8 -151D809C17>I<7070F8F8FCFCFCFC7C7C0C0C0C0C0C0C181818183030606040400E0D7F -9C15>34 D<00C00180030007000E000E001C001C003800380038007000700070007000F0 -00F000F000F000F000F000F000F000F000F000F000F00070007000700070003800380038 -001C001C000E000E0007000300018000C00A2A7D9E10>40 DI<70F0F8F8781818183030706040050D7D840C>44 -DI<70F8F8F87005057D840C>I<07E00FF01C38381C781E70 -0E700EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F700E700E781E38 -1C1C380FF007E0101B7E9A15>48 D<07E00FF01C38381C701C700EF00EF00EF00FF00FF0 -0FF00F701F701F383F1FEF0FCF000F000E000E381E7C1C7C18783830F03FE00F80101B7E -9A15>57 D<70F8F8F870000000000000000070F8F8F87005127D910C>I<003F800000FF -E00003C0780007001C000C000600181E0300383F83803071C18060E0C0C061E078C061E0 -78C0C3C07860C3C07860C3C07860C3C07860C3C07860C3C07860C3C0786061E0786061E0 -784060E0F8C03071F8C0383FBF80181E1F000C000000070001E003C01F8000FFFE00003F -E0001B1D7E9C20>64 D<001F808000FFE18003F03B8007C00F800F0007801E0007803E00 -03803C0003807C00018078000180F8000180F8000000F8000000F8000000F8000000F800 -0000F8000000F8000000780001807C0001803C0001803E0003001E0003000F00060007C0 -0C0003F0380000FFF000001FC000191C7E9B1E>67 DII72 -DI82 D<7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E00F00E0C00F0060C00F0060 -C00F0060C00F0060000F0000000F0000000F0000000F0000000F0000000F0000000F0000 -000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 -03FFFC0003FFFC001B1C7F9B1E>84 DI<1FE0003FF8007C3C00 -7C1E007C1E00381E00001E0007FE001FFE003C1E00781E00F01E00F01E60F01E60F03E60 -787FE03FFFC00F8F8013127F9115>97 DI<03F00FF81E7C387C787C7038F000F000F000F000F000F000780078063C061E0C0F -F803E00F127F9112>I<003F80003F800007800007800007800007800007800007800007 -8000078000078003E7800FFF801E1F80380780780780700780F00780F00780F00780F007 -80F00780F00780700780780780380F801E1F800FF7F007E7F0141D7F9C17>I<03E00FF0 -1C38381C781E700EFFFEFFFEF000F000F000F000700078063C061E0C0FF803E00F127F91 -12>I<007C01FE03DF079F0F1F0F0E0F000F000F000F000F00FFE0FFE00F000F000F000F -000F000F000F000F000F000F000F000F000F000F007FF07FF0101D809C0D>I<07E3800F -FFC03C3DC0381D80781E00781E00781E00781E00381C003C3C003FF00037E00070000070 -00003FF8003FFE001FFF003FFF807007C0E001C0E001C0E001C0E001C07003803C0F001F -FE0007F800121B7F9115>II<1C00 -3E003E003E001C00000000000000000000000000FE00FE001E001E001E001E001E001E00 -1E001E001E001E001E001E001E001E00FFC0FFC00A1D809C0B>I107 DIII<03F0000FFC001E1E00380700780780700380F003C0F003C0F003C0F003C0F003 -C0F003C07003807807803807001E1E000FFC0003F00012127F9115>II114 D<1FB03FF07070E030E030F000FE007FC07FE01FF007 -F80078C038C038E038F070FFE08F800D127F9110>I<06000600060006000E000E001E00 -3E00FFE0FFE01E001E001E001E001E001E001E001E001E301E301E301E301E300E600FE0 -03C00C1A7F9910>IIII121 D<7FFC7FFC787870F860F061E063E063C00780078C0F0C1F0C1E1C3C -187C187878FFF8FFF80E127F9112>I E /Fw 2 122 df<040004000400C460E4E03F800E -003F80E4E0C4600400040004000B0D7E8D11>3 D<0C000C000C000C000C000C00FFC0FF -C00C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C -000A1A7E9310>121 D E /Fx 84 128 df<001F83F000FFEFF801E0FE7C03C1F87C0781 -F87C0F01F0380F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFFFFF80FFFF -FF800F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00 -F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFC3FF00FFC3 -FF001E20809F1B>11 D<001F8000FFC001E0E003C0F00781F00F01F00F00E00F00000F00 -000F00000F00000F0000FFFFF0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00 -F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFC3FFFFC3FF1820 -809F19>I<001FB000FFF001E1F003C1F00781F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F0FFFFF0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFE7FFFFE7FF1820809F19>I< -001FC0FC00007FE7FE0001F07F070003C0FE07800780FC0F800F00F80F800F007807000F -007800000F007800000F007800000F007800000F00780000FFFFFFFF80FFFFFFFF800F00 -7807800F007807800F007807800F007807800F007807800F007807800F007807800F0078 -07800F007807800F007807800F007807800F007807800F007807800F007807800F007807 -800F00780780FFE3FF3FF8FFE3FF3FF82520809F26>I<78FCFCFCFCFCFCFC7878787878 -787878783030303030000000000078FCFCFCFC7806217DA00D>33 -D<781E00FC3F00FC3F00FE3F80FE3F807E1F800601800601800601800C03000C03001806 -00380E00701C00200800110F7E9F17>I<0F0000301F80007038E00060787001E0707C07 -C0703FFF80F031FB80F0300700F0300600F0300E00F0301C00F030180070303800706070 -007860600038C0E0001F81C0000F018000000380E0000303F000070718000E070C000C0E -0C001C0E0C00381E0600301E0600701E0600E01E0600C01E0601C01E0603801E0603000E -0C07000E0C0E00070C0C0007181C0003F0180000E01F257DA126>37 -D<78FCFCFEFE7E0606060C0C18387020070F7D9F0D>39 D<006000C00180038007000600 -0E001C001C003C003800380078007000700070007000F000F000F000F000F000F000F000 -F000F000F000F000F00070007000700070007800380038003C001C001C000E0006000700 -0380018000C000600B2E7DA112>II<000600000006000000060000000600000006000000060000000600000006 -000000060000000600000006000000060000000600000006000000060000FFFFFFF0FFFF -FFF000060000000600000006000000060000000600000006000000060000000600000006 -00000006000000060000000600000006000000060000000600001C207D9A23>43 -D<78FCFCFEFE7E0606060C0C18387020070F7D850D>II<78 -FCFCFCFC7806067D850D>I<00030003000700060006000E000C000C001C001800180038 -0030003000700060006000E000C000C001C0018001800180038003000300070006000600 -0E000C000C001C0018001800380030003000700060006000E000C000C000102D7DA117> -I<03F0000FFC001E1E001C0E003C0F00780780780780780780780780F807C0F807C0F807 -C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C07807807807 -807807807807803C0F001C0E001E1E000FFC0003F000121F7E9D17>I<00C001C00FC0FF -C0F3C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003 -C003C003C003C003C003C003C07FFF7FFF101E7D9D17>I<07F0000FFC00383E00701F00 -600F80F80F80FC07C0FC07C0FC07C07807C03007C00007C0000F80000F80000F00001E00 -003C0000380000700000E00001C0000380000700C00E00C00C00C01801C03FFF807FFF80 -FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F807C0F807C0F807C0F -803C0F80000F00001F00001E00003C0003F80003F000001C00000E00000F000007800007 -800007C03007C07807C0FC07C0FC07C0FC0780780F80700F003C1E001FFC0007F000121F -7E9D17>I<000E00000E00001E00003E00003E00007E00007E0000DE0001DE00019E0003 -1E00071E00061E000C1E001C1E00181E00381E00301E00601E00E01E00FFFFF0FFFFF000 -1E00001E00001E00001E00001E00001E0001FFE001FFE0141E7F9D17>I<3803003FFF00 -3FFE003FF8003FE00030000030000030000030000030000030000031F00037FC003E1E00 -3C0F003807803007800007800007C00007C00007C07807C0F807C0F807C0F80780F00780 -600F00700E00383C001FF80007E000121F7E9D17>I<007C0001FE000783000F07800E0F -801C0F803C07003C0000780000780000780000F9F800FBFC00FE0E00FC0700FC0780F807 -80F807C0F807C0F807C0F807C0F807C07807C07807C07807803807803C07001C0F000E1E -0007FC0001F000121F7E9D17>I<6000007FFFC07FFFC07FFF807FFF80E00300C00600C0 -0600C00C0000180000300000300000600000600000E00000E00001E00001C00003C00003 -C00003C00003C00003C00007C00007C00007C00007C00007C00007C00007C00003800012 -1F7D9D17>I<03F0000FFC001E1E003807003007007003807003807003807803807C0700 -7E07003F8E001FFC000FF80007FC0007FE001EFF00387F80701F807007C0E003C0E003C0 -E001C0E001C0E001C0F001807003803807001E0E000FFC0003F000121F7E9D17>I<03F0 -0007F8001E1C003C0E00380F00780700780780F80780F80780F807C0F807C0F807C0F807 -C0F807C07807C0780FC0380FC01C1FC00FF7C007E7C0000780000780000780000F00380F -007C0E007C1E00781C003078001FF0000FC000121F7E9D17>I<78FCFCFCFC7800000000 -0000000078FCFCFCFC7806147D930D>I<78FCFCFCFC78000000000000000070F8FCFCFC -7C0C0C0C181838306020061D7D930D>I<7FFFFFE0FFFFFFF00000000000000000000000 -000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61 -D<0FC03FF070F86078F07CF87CF87C707C007800F801F001C00380038003000700060006 -00060006000600000000000000000000000F001F801F801F801F800F000E207D9F15>63 -D<0003800000038000000380000007C0000007C0000007C000000FE000000FE000000FE0 -000019F0000019F0000019F0000030F8000030F8000030F8000060FC0000607C0000607C -0000E07E0000C03E0000C03E0001FFFF0001FFFF0001801F0003801F8003000F8003000F -8007000FC0070007C00F8007C0FFE07FFEFFE07FFE1F207F9F22>65 -DI<001FC040007FF0C001F839C0 -03C00DC0078007C00F0003C01E0003C03E0001C03C0001C07C0001C07C0000C0780000C0 -F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 -780000C07C0000C07C0000C03C0000C03E0001801E0001800F0003000780030003C00E00 -01F81C00007FF000001FC0001A217D9F21>IIII<000FC020007FF86001F81CE003E006E0078003E0 -0F0001E01E0001E01E0000E03C0000E07C0000E07C00006078000060F8000060F8000000 -F8000000F8000000F8000000F8000000F8000000F800FFFCF800FFFC780003E07C0003E0 -7C0003E03C0003E01E0003E01E0003E00F0003E0078003E003E007E001F81CE0007FF820 -000FE0001E217D9F24>III<0FFFE00FFF -E0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E -00003E00003E00003E00003E00003E00003E00003E00003E00003E00783E00FC3E00FC3E -00FC3E00F83C00707C0070F8001FF0000FC00013207F9E17>IIIII<001F800000FFF00001E0780007C03E000F801F000F000F001E00 -07803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F800 -01F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C00 -03C03E0007C01E0007800F000F000F801F0007C03E0001F0F80000FFF000001F80001C21 -7D9F23>II<001F800000FFF000 -01E0780007C03E000F801F000F000F001E0007803E0007C03C0003C07C0003E07C0003E0 -780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0 -F80001F0780001E07C0003E07C0003E03C0003C03E0F07C01E1F87800F38CF000FB0DF00 -07F0FE0001F0780000FFF010001FF01000007010000078300000387000003FF000003FE0 -00001FE000000FC0000007801C297D9F23>II<07E0800FF9801C1F80380F80780780700380F00380F00180F001 -80F00180F80000F800007E00007FE0003FFC003FFE001FFF0007FF0000FF80000F800007 -C00007C00003C0C003C0C003C0C003C0C003C0E00380F00780F80700FE0E00CFFC0081F8 -0012217D9F19>I<7FFFFFE07FFFFFE07C0F81E0700F80E0600F8060600F8060E00F8070 -C00F8030C00F8030C00F8030C00F8030000F8000000F8000000F8000000F8000000F8000 -000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000 -000F8000000F8000000F8000000F800007FFFF0007FFFF001C1F7E9E21>IIII89 D91 -D<0802001C0700380E00300C00601800601800C03000C03000C03000FC3F00FE3F80FE3F -807E1F807E1F803C0F00110F7D9F17>II<07F000 -1FFC003E1E003E0F003E07801C078000078000078003FF800FFF803F07807C07807C0780 -F80798F80798F80798F80F987C1FF83FF3F00FC1E015147F9317>97 -D<0F0000FF0000FF00000F00000F00000F00000F00000F00000F00000F00000F00000F00 -000F1F800F7FC00FE1E00F80F00F00780F00780F007C0F007C0F007C0F007C0F007C0F00 -7C0F007C0F00780F00780F00F80F80F00EC1E00E7FC00C1F001620809F19>I<03F00FFC -1E3E3C3E3C3E781C7800F800F800F800F800F800F80078007C003C033E031F0E0FFC03F0 -10147E9314>I<0003C0003FC0003FC00003C00003C00003C00003C00003C00003C00003 -C00003C00003C003E3C00FFBC01E0FC03C07C07C03C07803C07803C0F803C0F803C0F803 -C0F803C0F803C0F803C07803C07803C07803C03C07C01E1FC00FFBFC03E3FC16207E9F19 ->I<03F0000FFC001E1E003C0F003C0F00780F00780780F80780FFFF80FFFF80F80000F8 -0000F800007800007C00003C01801E03800F070007FE0001F80011147F9314>I<003E00 -00FF0003CF80078F80078F800F07000F00000F00000F00000F00000F00000F0000FFF000 -FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 -0F00000F00000F00000F00000F0000FFF000FFF0001120809F0E>I<0000E003F1F00FFF -701E1E703C0F607C0F807C0F807C0F807C0F807C0F803C0F001E1E001FFC0033F0003000 -003000003800003FFE003FFF801FFFC03FFFE07801E07000F0E00070E00070E000707000 -E07801E03E07C00FFF0003FC00141F7F9417>I<0F0000FF0000FF00000F00000F00000F -00000F00000F00000F00000F00000F00000F00000F1F800F7FC00FE1E00FC0F00F80F00F -00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F0FFF3FFFFF3FF1820809F19>I<1E003F003F003F003F001E00000000000000000000 -000F007F007F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F -00FFE0FFE00B1F809E0D>I<00F001F801F801F801F800F0000000000000000000000078 -07F807F800F8007800780078007800780078007800780078007800780078007800780078 -00780078007800787078F878F8F0F9E07FC03F000D28839E0E>I<0F0000FF0000FF0000 -0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0FF80F0FF80F07C0 -0F07000F06000F0C000F18000F38000F78000FFC000FBC000F1E000F1F000F0F000F0F80 -0F07C00F03C00F03E0FFE7FCFFE7FC1620809F18>I<0F00FF00FF000F000F000F000F00 -0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 -0F000F000F000F000F00FFF0FFF00C20809F0D>I<0F0FC07E00FF3FE1FF00FFE0F70780 -0FC07E03C00F807C03C00F007803C00F007803C00F007803C00F007803C00F007803C00F -007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F00 -7803C0FFF3FF9FFCFFF3FF9FFC2614809327>I<0F1F80FF7FC0FFE1E00FC0F00F80F00F -00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F0FFF3FFFFF3FF1814809319>I<01F80007FE001F0F803C03C03C03C07801E07801E0 -F801F0F801F0F801F0F801F0F801F0F801F07801E07801E03C03C03C03C01F0F8007FE00 -01F80014147F9317>I<0F1F80FF7FC0FFE1E00F81F00F00F80F00F80F007C0F007C0F00 -7C0F007C0F007C0F007C0F007C0F00780F00F80F00F80F81F00FC3E00F7FC00F1F000F00 -000F00000F00000F00000F00000F00000F0000FFF000FFF000161D809319>I<03E0C00F -F9C01F1DC03E07C07C07C07C03C07803C0F803C0F803C0F803C0F803C0F803C0F803C078 -03C07C03C07C07C03E07C01E1FC00FFBC003E3C00003C00003C00003C00003C00003C000 -03C00003C0003FFC003FFC161D7E9318>I<0F7CFFFEFFDF0F9F0F9F0F0E0F000F000F00 -0F000F000F000F000F000F000F000F000F00FFF0FFF01014809312>I<0F903FF07070E0 -30E030E030F000FF007FC03FE01FF003F80078C038C038E038E030F070DFE08F800D147E -9312>I<06000600060006000E000E001E003E00FFF8FFF81E001E001E001E001E001E00 -1E001E001E001E001E181E181E181E181E180F3007E003C00D1C7F9B12>I<0F00F0FF0F -F0FF0FF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00 -F00F00F00F01F00F01F00707F003FEFF01F8FF1814809319>III< -7FE7FC7FE7FC0783E007838003C30001E60001EE0000FC00007800007800003C00007E00 -00FE0001CF000187800387800703C00F03E0FFCFFEFFCFFE1714809318>II<3FFF3FFF381E303E703C607860F861F001E003 -E007C007830F831F031E073C067C06781EFFFEFFFE10147F9314>II<7038F87CFCFCFCFCF87C70380E067C9E17>127 D E /Fy -51 122 df<00001FFC00000001FFFF00000007FFFF8000001FF80FC000007FC00FE00000 -FF801FF00001FF003FF00001FF003FF00003FE003FF00003FE003FF00003FE003FF00003 -FE001FE00003FE000FC00003FE0003000003FE0000000003FE0000000003FE0000000003 -FE00000000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF00003FE003FF00003 -FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003 -FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003 -FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003 -FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF0007FFFE1FFFF807F -FFE1FFFF807FFFE1FFFF807FFFE1FFFF8029327FB12D>12 D<1F003F807FC0FFE0FFE0FF -F0FFF0FFF07FF03FF01F700070007000F000E000E001E001C003C007800F001F003E003C -0018000C197BB116>39 D45 D<000FF80000007FFF000001FFFFC00003FC1FE00007F007F0000FE003F8 -001FC001FC001FC001FC003FC001FE003F8000FE003F8000FE007F8000FF007F8000FF00 -7F8000FF007F8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF -8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF80 -00FF80FF8000FF80FF8000FF80FF8000FF807F8000FF007F8000FF007F8000FF007F8000 -FF007F8000FF003FC001FE003FC001FE001FC001FC001FE003FC000FE003F80007F007F0 -0003FC1FE00001FFFFC000007FFF0000000FF80000212E7DAD28>48 -D<0000E0000003E000000FE000007FE0001FFFE000FFFFE000FFFFE000FFBFE000E03FE0 -00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 -00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 -00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 -00003FE000003FE000003FE000003FE000003FE000003FE0007FFFFFE07FFFFFE07FFFFF -E07FFFFFE01B2E7AAD28>I<003FE00001FFFC0007FFFF801FFFFFC03F81FFE07E007FF0 -7F003FF8FF801FFCFFC00FFCFFC00FFEFFC007FEFFC007FEFFC007FE7F8007FE3F0007FE -000007FE000007FE00000FFC00000FFC00000FF800001FF000003FF000003FE000007FC0 -0000FF800000FE000001FC000003F8000007E000000FC000001F801E003F001E007E001E -00FC003E01F0003C01E0003C03C0007C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFFC -FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F2E7CAD28>I<000FF80000007FFF000001FFFF -C00003FFFFE00007F03FF0000FE01FF8001FF00FF8001FF00FFC001FF00FFC001FF80FFC -001FF00FFC001FF00FFC000FE00FFC0003C00FFC0000001FF80000001FF80000001FF000 -00003FE00000007FC0000000FF8000003FFE0000003FF80000003FFF800000003FE00000 -000FF80000000FFC00000007FE00000007FF00000003FF00000003FF80000003FF800C00 -03FF803F0003FF807F8003FF80FFC003FF80FFC003FF80FFC003FF00FFC007FF00FFC007 -FF00FF8007FE007F000FFC003FC03FF8001FFFFFF00007FFFFC00001FFFF0000003FF800 -00212E7DAD28>I<000001F000000003F000000003F000000007F00000000FF00000001F -F00000001FF00000003FF00000007FF0000000FFF0000001FFF0000001EFF0000003CFF0 -0000078FF000000F8FF000001F0FF000001E0FF000003C0FF00000780FF00000F80FF000 -01F00FF00001E00FF00003C00FF00007800FF0000F800FF0000F000FF0001E000FF0003C -000FF0007C000FF000F8000FF000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE00000 -1FF00000001FF00000001FF00000001FF00000001FF00000001FF00000001FF00000001F -F000001FFFFFE0001FFFFFE0001FFFFFE0001FFFFFE0232E7EAD28>I<1C0000301FC007 -F01FFFFFF01FFFFFE01FFFFFC01FFFFF801FFFFF001FFFFE001FFFF8001FFFE0001FFF00 -001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0FF0001E7FFE -001FFFFF801FE03FE01F801FF01F000FF81E000FF8000007FC000007FC000007FC000007 -FE000007FE0C0007FE7F0007FE7F8007FEFF8007FEFF8007FEFF8007FEFF8007FCFF800F -FC7F000FF87C001FF83E001FF03FC07FE01FFFFFC007FFFF0001FFFC00007FC0001F2E7C -AD28>I<0000FF80000007FFE000001FFFF000007FFFF80000FF80FC0003FE00FE0007FC -01FE0007F803FE000FF003FE001FF003FE001FE003FE003FE001FC003FE000F8007FE000 -00007FC00000007FC00000007FC0400000FFC3FF0000FFCFFFC000FFDFFFF000FFFC07F8 -00FFF803FC00FFF003FE00FFF001FE00FFE001FF00FFE001FF00FFE001FF80FFC001FF80 -FFC001FF80FFC001FF80FFC001FF807FC001FF807FC001FF807FC001FF807FC001FF803F -C001FF803FC001FF003FE001FF001FE003FE000FF003FE000FF807FC0007FC0FF80003FF -FFF00000FFFFC000003FFF0000000FFC0000212E7DAD28>I<3C000000003F000000003F -FFFFFFC03FFFFFFFC03FFFFFFFC03FFFFFFFC07FFFFFFF807FFFFFFF007FFFFFFE007FFF -FFFE007FFFFFFC007C0000F800780001F000780003E000F80003C000F00007C000F0000F -8000F0001F000000003E000000007C000000007C00000000F800000001F800000001F000 -000003F000000003F000000007E000000007E00000000FE00000000FE00000001FE00000 -001FC00000001FC00000003FC00000003FC00000003FC00000003FC00000007FC0000000 -7FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007F -C00000003F800000000E00000022307CAF28>I<000FF80000003FFF000000FFFFC00003 -FFFFE00003F80FF00007E003F8000FC001F8000F8001FC001F8000FC001F8000FC001FC0 -00FC001FC000FC001FE000FC001FF801FC001FFE01F8001FFF83F8000FFFC7F0000FFFFF -E00007FFFFC00007FFFF000003FFFF800001FFFFE000007FFFF00001FFFFF80007FFFFFC -000FE3FFFE001FC0FFFF003F803FFF007F801FFF807F0007FF80FF0001FF80FE0000FF80 -FE00007F80FE00007F80FE00003F80FE00003F80FF00003F00FF00003F007F80007F007F -8000FE003FC001FC001FF807F8000FFFFFF00003FFFFE00000FFFF8000001FF80000212E -7DAD28>I<000FF80000007FFF000001FFFF800007FFFFE0000FF81FF0001FF007F8003F -E007FC003FE003FC007FC003FE007FC001FE00FFC001FE00FFC001FF00FFC001FF00FFC0 -01FF00FFC001FF00FFC001FF80FFC001FF80FFC001FF80FFC001FF80FFC003FF807FC003 -FF807FC003FF803FC007FF803FE007FF801FE00FFF800FF01FFF8007FFFDFF8001FFF9FF -80007FE1FF80000101FF00000001FF00000001FF00000001FF000F8003FE001FC003FE00 -3FE003FC003FE003FC003FE007F8003FE00FF8003FC00FF0001F803FE0001F80FFC0000F -FFFF000007FFFE000001FFF80000007FC00000212E7DAD28>I<00000078000000000000 -FC000000000000FC000000000001FE000000000001FE000000000001FE000000000003FF -000000000003FF000000000007FF800000000007FF800000000007FF80000000000FFFC0 -000000000FFFC0000000001FFFE0000000001E7FE0000000001E7FE0000000003E7FF000 -0000003C3FF0000000007C3FF800000000781FF800000000781FF800000000F81FFC0000 -0000F00FFC00000001F00FFE00000001E00FFE00000001E007FE00000003E007FF000000 -03C003FF00000003C003FF000000078003FF800000078001FF8000000F8001FFC000000F -FFFFFFC000000FFFFFFFC000001FFFFFFFE000001FFFFFFFE000003E00007FF000003C00 -003FF000003C00003FF000007800003FF800007800001FF80000F800001FFC0000F00000 -0FFC0000F000000FFC0001E000000FFE00FFFFC003FFFFFCFFFFC003FFFFFCFFFFC003FF -FFFCFFFFC003FFFFFC36317DB03D>65 DI69 D<000007FF00070000007FFFF00F0000 -01FFFFFC1F00000FFFFFFE3F00001FFF003FFF00007FF8000FFF0000FFE00003FF0001FF -800001FF0003FF000000FF0007FE0000007F000FFC0000007F001FFC0000003F001FF800 -00001F003FF80000001F003FF00000001F007FF00000000F007FF00000000F007FF00000 -000F007FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000000 -0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000 -00FFE00000000000FFE0000FFFFFFC7FE0000FFFFFFC7FF0000FFFFFFC7FF0000FFFFFFC -7FF0000003FF003FF0000003FF003FF8000003FF001FF8000003FF001FFC000003FF000F -FC000003FF0007FE000003FF0003FF000003FF0001FF800003FF0000FFE00007FF00007F -F8000FFF00001FFF803FFF00000FFFFFFFFF000001FFFFFE3F0000007FFFF00F00000007 -FF80030036317CB03F>71 D73 -D76 DII<0000 -0FFF0000000000FFFFF000000007FFFFFE0000001FFC03FF8000003FE0007FC000007FC0 -003FE00001FF00000FF80003FE000007FC0007FE000007FE0007FC000003FE000FF80000 -01FF001FF8000001FF801FF0000000FF803FF0000000FFC03FF0000000FFC03FF0000000 -FFC07FE00000007FE07FE00000007FE07FE00000007FE0FFE00000007FF0FFE00000007F -F0FFE00000007FF0FFE00000007FF0FFE00000007FF0FFE00000007FF0FFE00000007FF0 -FFE00000007FF0FFE00000007FF0FFE00000007FF0FFE00000007FF07FE00000007FE07F -E00000007FE07FF0000000FFE07FF0000000FFE03FF0000000FFC03FF0000000FFC01FF8 -000001FF801FF8000001FF800FFC000003FF0007FC000003FE0007FE000007FE0003FF00 -000FFC0001FF80001FF80000FFC0003FF000003FF000FFC000001FFC03FF80000007FFFF -FE00000000FFFFF0000000000FFF00000034317CB03D>I -I82 D<001FF8038000FFFF078003FFFFCF8007FFFFFF800FF00FFF801FC001FF803F -80007F807F00003F807F00001F807E00001F80FE00000F80FE00000F80FE00000780FF00 -000780FF80000780FFC0000000FFE0000000FFFE0000007FFFE000007FFFFF00003FFFFF -E0003FFFFFF8001FFFFFFC000FFFFFFE0007FFFFFF0001FFFFFF80007FFFFFC0000FFFFF -E000007FFFE0000007FFE00000007FF00000003FF00000001FF00000000FF0F000000FF0 -F0000007F0F0000007F0F0000007F0F8000007F0F8000007E0FC00000FE0FE00000FC0FF -00001FC0FFC0003F80FFFC00FF00FFFFFFFE00F9FFFFFC00F03FFFF000E003FF80002431 -7CB02D>I<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FE00F -FC01FF007F000FFC007F007E000FFC003F007C000FFC001F007C000FFC000F00F8000FFC -000F80F8000FFC000F80F8000FFC000F80F0000FFC000780F0000FFC000780F0000FFC00 -0780F0000FFC000780F0000FFC000780F0000FFC00078000000FFC00000000000FFC0000 -0000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000 -00000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000 -000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000000 -0FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000F -FC00000000000FFC00000000000FFC00000000000FFC000000007FFFFFFF8000007FFFFF -FF8000007FFFFFFF8000007FFFFFFF800031307DAF38>II87 D89 D<007FF0000003FFFE00000F -FFFF80001FE03FE0001FF01FF0001FF00FF8001FF00FF8001FF007FC000FE007FC0007C0 -07FC00010007FC00000007FC00000007FC000003FFFC00003FFFFC0001FFE7FC0007FC07 -FC001FF007FC003FE007FC007FC007FC007F8007FC00FF8007FC00FF0007FC00FF0007FC -00FF0007FC00FF000FFC00FF801FFC007FC01FFE003FE07BFFF01FFFF3FFF007FFC1FFF0 -00FF007FF024207E9F27>97 D<01FC000000FFFC000000FFFC000000FFFC000000FFFC00 -00000FFC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0000 -0007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC1FE000 -07FCFFFC0007FFFFFF0007FFE07FC007FF801FE007FE000FF007FC000FF807FC0007F807 -FC0007FC07FC0003FC07FC0003FC07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC -0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FC07FC00 -07FC07FC0007F807FC0007F807FE000FF007FE001FF007FF803FE007F7C07F8007E3FFFF -0007C0FFFC0007801FE00027327EB12D>I<000FFE00007FFFC001FFFFF003FC07F80FF0 -0FF81FE00FF81FE00FF83FC00FF87FC007F07FC003E07F800080FF800000FF800000FF80 -0000FF800000FF800000FF800000FF800000FF800000FF800000FF8000007FC000007FC0 -00007FC0003C3FE0003C1FE0007C1FF000F80FF801F003FE07E001FFFFC0007FFF00000F -F8001E207D9F24>I<0000001FC000000FFFC000000FFFC000000FFFC000000FFFC00000 -00FFC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0000000 -7FC00000007FC00000007FC00000007FC00000007FC00000007FC0000FF87FC0007FFE7F -C001FFFFFFC003FC07FFC00FF801FFC01FF000FFC01FE0007FC03FC0007FC07FC0007FC0 -7FC0007FC07F80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF -80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC07F80007FC07F80007FC07FC0 -007FC03FC0007FC01FE000FFC01FE001FFC00FF003FFE007FC0FFFFE01FFFF7FFE007FFC -7FFE000FF07FFE27327DB12D>I<000FFC00007FFF8001FFFFE003FC0FF00FF003F80FE0 -01FC1FE001FC3FC000FE3FC000FE7FC000FE7F80007FFF80007FFF80007FFFFFFFFFFFFF -FFFFFFFFFFFFFF800000FF800000FF800000FF8000007F8000007FC000007FC000003FC0 -000F3FE0000F1FE0001F0FF0003E07FC007C03FF01F800FFFFF0003FFFC00007FE002020 -7E9F25>I<0000FF000007FFC0001FFFF0007FC7F000FF8FF801FF0FF801FF0FF803FE0F -F803FE0FF803FE07F003FE01C003FE000003FE000003FE000003FE000003FE000003FE00 -0003FE0000FFFFFC00FFFFFC00FFFFFC00FFFFFC0003FE000003FE000003FE000003FE00 -0003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00 -0003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00 -0003FE000003FE00007FFFF8007FFFF8007FFFF8007FFFF8001D327EB119>I<001FF00F -C000FFFE3FE003FFFFFFF007F83FF7F00FE00FE7F01FE00FF3F01FC007F1E03FC007F800 -3FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001F -E00FF0000FE00FE00007F83FC00007FFFF80000EFFFE00000E1FF000001E000000001E00 -0000001F000000001F800000001FFFFF80001FFFFFF0000FFFFFFC000FFFFFFF0007FFFF -FF8007FFFFFF8007FFFFFFC01FFFFFFFC03F8000FFE07F00001FE0FE00001FE0FE00000F -E0FE00000FE0FE00000FE0FF00001FE07F00001FC07F80003FC03FC0007F801FF803FF00 -07FFFFFC0001FFFFF000001FFF0000242F7E9F28>I<01FC000000FFFC000000FFFC0000 -00FFFC000000FFFC0000000FFC00000007FC00000007FC00000007FC00000007FC000000 -07FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007 -FC00000007FC07F80007FC1FFE0007FC7FFF8007FCF07FC007FDE07FC007FF803FE007FF -003FE007FF003FE007FE003FE007FE003FE007FC003FE007FC003FE007FC003FE007FC00 -3FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003F -E007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE0 -FFFFE3FFFFFFFFE3FFFFFFFFE3FFFFFFFFE3FFFF28327DB12D>I<03E00007F0000FF800 -1FFC001FFC001FFC001FFC001FFC000FF80007F00003E000000000000000000000000000 -00000000000000000000000001FC00FFFC00FFFC00FFFC00FFFC000FFC0007FC0007FC00 -07FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC00 -07FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC00FFFFC0FFFFC0FFFFC0FFFFC0 -12337EB216>I<01FC000000FFFC000000FFFC000000FFFC000000FFFC0000000FFC0000 -0007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC000000 -07FC00000007FC00000007FC00000007FC00000007FC00000007FC03FFF807FC03FFF807 -FC03FFF807FC03FFF807FC00FE0007FC01F80007FC03F00007FC07E00007FC0FC00007FC -1F800007FC7F000007FCFE000007FDFE000007FFFF000007FFFF000007FFFF800007FFFF -C00007FFFFE00007FC7FE00007F83FF00007F81FF80007F81FF80007F80FFC0007F807FE -0007F807FF0007F803FF0007F801FF8007F800FFC0FFFFC3FFFEFFFFC3FFFEFFFFC3FFFE -FFFFC3FFFE27327EB12B>107 D<01FC00FFFC00FFFC00FFFC00FFFC000FFC0007FC0007 -FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007 -FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007 -FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007 -FC0007FC0007FC00FFFFE0FFFFE0FFFFE0FFFFE013327EB116>I<01F803FC000FF000FF -F81FFF007FFC00FFF87FFFC1FFFF00FFF8F87FC3E1FF00FFF9E03FE780FF800FFBC01FEF -007F8007FB801FFE007FC007FF001FFC007FC007FE001FF8007FC007FE001FF8007FC007 -FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0 -007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007 -FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0 -007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC007FC001FF0007FC0FF -FFE3FFFF8FFFFEFFFFE3FFFF8FFFFEFFFFE3FFFF8FFFFEFFFFE3FFFF8FFFFE3F207D9F44 ->I<01F807F800FFF81FFE00FFF87FFF80FFF8F07FC0FFF9E07FC00FFB803FE007FB003F -E007FF003FE007FE003FE007FE003FE007FC003FE007FC003FE007FC003FE007FC003FE0 -07FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007 -FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE0FFFF -E3FFFFFFFFE3FFFFFFFFE3FFFFFFFFE3FFFF28207D9F2D>I<0007FC0000007FFFC00001 -FFFFF00003FC07F80007F001FC000FE000FE001FC0007F003FC0007F803FC0007F807F80 -003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF8000 -3FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC07F80003FC03FC0007F -803FC0007F801FC0007F000FE000FE0007F001FC0003FC07F80001FFFFF000007FFFC000 -0007FC000023207E9F28>I<01FC1FE000FFFCFFFC00FFFFFFFF00FFFFE07FC0FFFF803F -E007FE001FF007FC000FF807FC000FF807FC0007FC07FC0007FC07FC0007FC07FC0003FE -07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FE07FC0003FE07 -FC0003FE07FC0003FE07FC0007FC07FC0007FC07FC0007F807FC000FF807FE001FF007FE -001FF007FF803FE007FFC0FF8007FFFFFF0007FCFFFC0007FC1FE00007FC00000007FC00 -000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0000 -0007FC000000FFFFE00000FFFFE00000FFFFE00000FFFFE00000272E7E9F2D>I<01F87E -00FFF8FF80FFF9FFE0FFFBCFE0FFFF9FF00FFF1FF007FE1FF007FE1FF007FE0FE007FE07 -C007FC010007FC000007FC000007FC000007FC000007FC000007FC000007FC000007FC00 -0007FC000007FC000007FC000007FC000007FC000007FC000007FC000007FC000007FC00 -00FFFFF000FFFFF000FFFFF000FFFFF0001C207E9F21>114 D<00FF8E0007FFFE001FFF -FE003F00FE007E007E007C003E00FC001E00FC001E00FE001E00FF000000FFC00000FFFF -0000FFFFC0007FFFF0003FFFFC003FFFFE000FFFFF0003FFFF0000FFFF800007FF800000 -FF80F0003F80F0003F80F8001F80F8001F80FC001F00FC003F00FE003F00FF80FE00FFFF -FC00F3FFF000E07F800019207D9F20>I<001E0000001E0000001E0000001E0000001E00 -00003E0000003E0000003E0000007E0000007E000000FE000001FE000003FE000007FE00 -001FFFFE00FFFFFE00FFFFFE00FFFFFE0003FE000003FE000003FE000003FE000003FE00 -0003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00 -0003FE000003FE078003FE078003FE078003FE078003FE078003FE078003FE078003FE0F -8001FF0F0001FF9F0000FFFE00003FFC000007F000192E7FAD1F>I<01FC000FE0FFFC07 -FFE0FFFC07FFE0FFFC07FFE0FFFC07FFE00FFC007FE007FC003FE007FC003FE007FC003F -E007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE0 -07FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007FC003FE007 -FC007FE007FC007FE007FC007FE007FC00FFE003FC01FFF003FE03BFFF01FFFF3FFF007F -FE3FFF000FF83FFF28207D9F2D>I119 -DII E /Fz 56 122 df<1C0E003E1F007F3F807F3F807F3F803B1D8006 -03000603000C06000C0600180C00301800603000C06000804000110F789F17>34 -D<1C3E7F7F7F3B06060C0C183060C080080F769F0E>39 D<000180000300000600000C00 -001C0000380000700000600000E00001C00001C0000380000380000700000700000F0000 -0E00001E00001E00001C00003C00003C0000380000380000780000780000700000700000 -700000700000F00000F00000F00000F00000F00000F00000700000700000700000700000 -7000003000003800001800001C00000C0000112E7AA113>I<001800000C00000E000006 -000007000007000003000003800003800003800003800003800003800003800003800003 -80000380000780000780000780000700000700000F00000F00000E00000E00001E00001C -00001C00003C0000380000380000700000700000E00000E00001C00001C0000380000700 -000600000C00001C0000380000600000C00000112E80A113>I<00380000380000700000 -70001870803C63C03E67C01FFF0007FC0003F00003F0000FF8003FFE00F99F00F18F0043 -8600038000038000070000070000121478A117>I<0000C0000000C0000000C0000001C0 -000001800000018000000180000003800000030000000300000003000000070000000600 -00FFFFFFF0FFFFFFF0000E0000000C0000000C0000000C0000001C000000180000001800 -000018000000380000003000000030000000300000007000001C1C7A9823>I<0E1E3F3F -3E1E060C0C1C183060E040080F7D850E>I<7FF07FF0FFE07FE00C047D8B10>I<387CFCFC -F87006067B850E>I<000F80003FE000F0F001C0700380700380380700780F00780F0078 -0E00781E00781E00703C00F03C00F03C00F03C00F07801E07801E07801E07801C07003C0 -F003C0F00380F00780F00700700F00700E00701C003878001FF0000FC000151F7C9D17> -48 D<000100030007000F001E00FE07DE071E003C003C003C003C007800780078007800 -F000F000F000F001E001E001E001E003C003C003C003C0FFF8FFF8101E7B9D17>I<000F -80003FC00070E000C0700180780330380638380618780C30780C30780C60780CE0780FC0 -F00701E00001C0000380000700001E0000380000E00001C0000700000E00300C00301800 -603000E07F81C07FFFC061FF80C07F00C03C00151F7D9D17>I<001F80007FE000E0E001 -80700300780660780670780630780660F007C0F00380E00001E00001C000078000FE0000 -FE00000700000700000780000780000780300780780780780780F00F00C00F00601E0060 -3C007078003FE0001F8000151F7C9D17>I<0007C0001FE00038600060E000C1E001C1E0 -0380C00700000F00000E00001E10001EFC001DFE003F07003E07003C07807C0780780780 -780780780780700F00700F00F00F00F00E00F01E00701C0070380070380038F0001FC000 -0F8000131F7B9D17>54 D<001F00007F8000E1C001C1C00380E00700E00F00E00F01E01E -01E01E01E01E01E01E01C01C03C03C03C03C07C01C07C01C0F801C1F800F778007E70000 -0F00000E00001E00001C00603C00F03800F07000E0E000C3C0007F80003E0000131F7B9D -17>57 D<07000F801F801F801F000E000000000000000000000000000000000038007C00 -FC00FC00F800700009147B930E>I<000007000000070000000F0000000F0000001F0000 -003F0000003F0000006F0000006F000000CF000000CF0000018F0000038F0000030F0000 -060F0000060F00000C0F80000C07800018078000180780003FFF80007FFF800060078000 -C0078000C00780018007800180078003000780070007800F0007807FC07FF8FFC07FF81D -207E9F22>65 D<0000FE020007FF06001F818C003E00DC0078007C00F0007C01E0003803 -C00038078000380F8000381F0000301F0000303E0000303E0000007C0000007C0000007C -0000007C000000F8000000F8000000F8000000F80000C0F8000180780001807800030078 -0003003C0006003C000C001E0018000F00300007C0E00003FF800000FE00001F217A9F21 ->67 D<01FFFF8001FFFFE0001E01F0001E0078001E003C003C003C003C001E003C001E00 -3C001E0078001E0078001E0078001E0078001E00F0003E00F0003E00F0003E00F0003E01 -E0007C01E0007C01E0007C01E0007803C000F003C000F003C001E003C003C0078007C007 -800F8007801E0007807C00FFFFF000FFFFC0001F1F7D9E22>I<01FFFFFE01FFFFFC001E -003C001E001C001E001C003C000C003C000C003C000C003C001800780C1800780C180078 -0C0000781C0000F0380000FFF80000FFF80000F0380001E0300001E0300001E0303001E0 -306003C0006003C0006003C000C003C001C007800180078003800780070007801F00FFFF -FF00FFFFFE001F1F7D9E1F>I<01FFFFFC01FFFFF8001E0078001E0038001E0038003C00 -18003C0018003C0018003C003000780C3000780C3000780C0000781C0000F0380000FFF8 -0000FFF80000F0380001E0300001E0300001E0300001E0300003C0000003C0000003C000 -0003C0000007800000078000000780000007800000FFFC0000FFF800001E1F7D9E1E>I< -01FFF001FFF0001E00001E00001E00003C00003C00003C00003C00007800007800007800 -00780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C000 -03C000078000078000078000078000FFF800FFF800141F7D9E12>73 -D<01FFF07FE001FFF07FE0001E001F00001E001C00001E003000003C006000003C01C000 -003C038000003C07000000780C000000781800000078300000007870000000F0F0000000 -F3F8000000F778000000FC78000001F83C000001F03C000001E03C000001E01E000003C0 -1E000003C01E000003C00F000003C00F000007800F000007800780000780078000078007 -C000FFF83FF800FFF03FF800231F7D9E23>75 D<01FFF80001FFF800001E0000001E0000 -001E0000003C0000003C0000003C0000003C000000780000007800000078000000780000 -00F0000000F0000000F0000000F0000001E0000001E0000001E0018001E0018003C00300 -03C0030003C0060003C0060007800E0007801C0007803C000780FC00FFFFF800FFFFF800 -191F7D9E1D>I<01FF0000FFC001FF0000FFC0001F0001F800001F0001F800001F000378 -0000370003F00000370006F0000037000CF0000037000CF00000670019E00000638019E0 -0000638031E00000638031E00000C38063C00000C380C3C00000C380C3C00000C38183C0 -0001838187800001838307800001838307800001838607800003038C0F000003038C0F00 -000303980F00000301D80F00000601F01E00000601F01E00000601E01E00000E01C01E00 -00FFE1C3FFE000FFC183FFC0002A1F7D9E29>I<01FF00FFE001FF00FFE0001F001E0000 -1F800C00001F800C0000378018000033C018000033C018000033C018000063C030000061 -E030000061E030000061E0300000C0F0600000C0F0600000C0F0600000C0786000018078 -C000018078C00001803CC00001803CC00003003D800003001F800003001F800003001F80 -0006000F000006000F000006000F00000E000F0000FFE0060000FFC0060000231F7D9E22 ->I<0001FC000007FF00001F07C0003C03E000F001E001E000F003C000F007C000780780 -00780F0000781F0000781E0000783E0000783E0000787C0000F87C0000F87C0000F87C00 -00F8F80001F0F80001F0F80001E0F80003E0F80003C0F80007C07800078078000F007C00 -1F003C003E003E007C001E00F0000F83E00007FF800001FC00001D217A9F23>I<01FFFF -8001FFFFE0001E01F0001E0078001E0078003C007C003C007C003C007C003C007C007800 -F8007800F8007800F0007801E000F003E000F00F8000FFFF0000FFF80001E0000001E000 -0001E0000001E0000003C0000003C0000003C0000003C000000780000007800000078000 -0007800000FFF80000FFF000001E1F7D9E1F>I<01FFFF0001FFFFC0001E03E0001E00F0 -001E00F8003C00F8003C00F8003C00F8003C00F8007801F0007801F0007803E0007807C0 -00F01F0000FFFE0000FFF00000F0380001E03C0001E01C0001E01C0001E01C0003C03C00 -03C03C0003C03C0003C03C0007807C0007807C1807807C1807807E30FFF83E30FFF01FE0 -000007C01D207D9E21>82 D<0007E040001FF8C0003C1D8000700F8000E0078001C00780 -01800300038003000380030003800300038000000380000003C0000003F8000001FF8000 -01FFE000007FF000001FF0000001F8000000780000003800000038000000380030003800 -300038003000300070007000700060007800E0007801C000EE078000C7FE000081F80000 -1A217D9F1A>I<0FFFFFF01FFFFFE01E0781E0180780E038078060300F0060300F006060 -0F0060600F00C0C01E00C0C01E00C0001E0000001E0000003C0000003C0000003C000000 -3C00000078000000780000007800000078000000F0000000F0000000F0000000F0000001 -E0000001E0000001E0000003E00000FFFF0000FFFF00001C1F789E21>I<7FFC3FF87FFC -3FF80780078007800300078003000F0006000F0006000F0006000F0006001E000C001E00 -0C001E000C001E000C003C0018003C0018003C0018003C00180078003000780030007800 -300078003000F0006000F0006000F0006000F000C000F000800070018000700300003806 -00003C1C00001FF8000007E000001D20779E22>II<00F18003FBC0070F800E0F801C07803C07803C0F00780F00 -780F00780F00F01E00F01E00F01E00F01E30F03C60F03C60707C6070FCC03F9F800F0F00 -14147C9317>97 D<03C0003FC0003F80000780000780000780000F00000F00000F00000F -00001E00001E00001E78001FFE003F8E003E07003C07003C078078078078078078078078 -0780F00F00F00F00F00F00F01E00F01C00703C0070380038F0003FE0000F800011207C9F -15>I<007E0001FF000383800F07801E07801C07003C0200780000780000780000F00000 -F00000F00000F00000F00000700200700700381E001FF80007E00011147C9315>I<0000 -780007F80007F00000F00000F00000F00001E00001E00001E00001E00003C00003C000F3 -C003FBC0070F800E0F801C07803C07803C0F00780F00780F00780F00F01E00F01E00F01E -00F01E30F03C60F03C60707C6070FCC03F9F800F0F0015207C9F17>I<007C0001FF0007 -83000F01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F0000070 -00007002007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC0007BC -000718000F00000F00000F00000F00001F00001E00001E0003FFF003FFF0001E00003C00 -003C00003C00003C00003C0000780000780000780000780000780000F00000F00000F000 -00F00000F00001E00001E00001E00001E00001C00003C0003380007B8000F300007E0000 -3C00001629829F0E>I<003E3000FF7801E3F00381F00780F00700F00F01E01E01E01E01 -E01E01E03C03C03C03C03C03C03C03C03C07801C07801C0F800E3F800FFF0003CF00000F -00000F00001E00001E00301E00783C00F0F8007FF0003F8000151D7E9315>I<00F0000F -F0000FE00001E00001E00001E00003C00003C00003C00003C000078000078000079F0007 -FF800FE3C00F81C00F01E00F01E01E03C01E03C01E03C01E03C03C07803C07803C07803C -0F0C780F18780E18781E30780E70F00FE060078016207E9F17>I<006000F000F000E000 -000000000000000000000000000F001F8033C033C063C063C0C780078007800F000F001E -001E001E303C603C603CC03CC01F800F000C1F7D9E0E>I<00F0000FF0000FE00001E000 -01E00001E00003C00003C00003C00003C0000780000780000781E00783F00F0E300F1870 -0F10F00F20F01E40E01F80001F80001FF0003CF8003C3C003C3C003C1E30783C60783C60 -783C60781CC0F01F80600F0014207E9F15>107 D<01E01FE01FC003C003C003C0078007 -80078007800F000F000F000F001E001E001E001E003C003C003C003C0078007800780078 -C0F180F180F180F3007E003C000B207D9F0C>I<0F07C0F8001F9FE3FC0033F8F71E0063 -E07C0E0063C0780F0063C0780F00C780F01E000780F01E000780F01E000780F01E000F01 -E03C000F01E03C000F01E03C000F01E078601E03C078C01E03C070C01E03C0F1801E03C0 -73803C07807F001803003C0023147D9325>I<0F07C01F9FE033F8F063E07063C07863C0 -78C780F00780F00780F00780F00F01E00F01E00F01E00F03C31E03C61E03861E078C1E03 -9C3C03F81801E018147D931A>I<007C0001FF000383800F01C01E01C01C01E03C01E078 -01E07801E07801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF00007 -C00013147C9317>I<01E1E003F3F8067E1C0C7C1C0C781E0C781E18F01E00F01E00F01E -00F01E01E03C01E03C01E03C01E07803C07803C07003E0E003E1C007BF80079E00078000 -0780000F00000F00000F00000F00001E0000FFE000FFE000171D809317>I<0F0F001FBF -8033F1C063E1C063C3C063C3C0C783800780000780000780000F00000F00000F00000F00 -001E00001E00001E00001E00003C000018000012147D9313>114 -D<00FC03FE0707060F0E0F0E0E1E001FE00FF80FFC07FC01FE003E701EF01CF01CE01860 -703FE01F8010147D9313>I<00C001E003C003C003C003C007800780FFF0FFF00F000F00 -0F000F001E001E001E001E003C003C003C003C307860786078C079C03F801E000C1C7C9B -0F>I<0780601FC0F039C1E031E1E061C1E063C1E0C3C3C00783C00783C00783C00F0780 -0F07800F07800F078C0F0F180E0F180F0F180F1F3007F7E003E3C016147D9318>I<0781 -C01FC3C039C3E031E1E061C0E063C0E0C3C0C00780C00780C00780C00F01800F01800F01 -800F03000F03000F06000F06000F0C0007F80001E00013147D9315>I<078060E01FC0F1 -E039C1E1F031E1E0F061C1E07063C1E070C3C3C0600783C0600783C0600783C0600F0780 -C00F0780C00F0780C00F0781800F0781800F0781000F0F8300071F860007FBFC0001F0F8 -001C147D931E>I<07C3800FE7C0187CE03078E06079E06079E0C0F1C000F00000F00000 -F00001E00001E00001E00071E060F3C0C0F3C0C0E3C180E7C3007CFE00387C0013147D93 -15>I<0780301FC07839C0F031E0F061C0F063C0F0C3C1E00781E00781E00781E00F03C0 -0F03C00F03C00F03C00F07800F07800F07800F1F8007FF0001EF00000F00000E00001E00 -781C00783C0070780060F0003FC0001F0000151D7D9316>I E /FA -6 122 df<018001C0018001806186F99F7DBE1FF807E007E01FF87DBEF99F6186018001 -8001C0018010127E9215>3 D<07E01FF8381C700E6006E007C003C003C003C003E00760 -06700E381C1FF807E010107E9115>14 D<00000300000000030000000001800000000180 -00000000C00000000060007FFFFFF000FFFFFFF8000000000E00000000070000000001E0 -000000007800000001E0000000038000000006000000001C00FFFFFFF8007FFFFFF00000 -00006000000000C000000001800000000180000000030000000003000025187E952A>41 -D<001F00FF01F003E003C003C003C003C003C003C003C003C003C003C003C003C003C007 -800F00FE00F800FE000F00078003C003C003C003C003C003C003C003C003C003C003C003 -C003C003E001F000FF001F10297E9E15>102 D -I<0300078007800780078007800780030003007B78FFFCFFFC7B78030003000780078007 -800780078007800780078007800780078007800780078007800780030003000300030003 -0003000E257E9C13>121 D E /FB 35 122 df<78FCFCFEFE7A02020202040404081010 -204007127B8510>44 D<78FCFCFCFC7806067B8510>46 D<007E0001C3800700E00E0070 -1E00781C00383C003C3C003C38001C78001E78001E78001E78001EF8001FF8001FF8001F -F8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001F -78001E78001E78001E78001E7C003E3C003C3C003C1C00381E00780E00700700E001C380 -007E0018297EA71D>48 D<00100000700000F0000FF000FFF000F0F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F00000F00000F00001F8007FFFE07FFFE013287CA71D>I<000FC0003FF0 -00F01801C01803803C07007C0F007C0E00381E00003C00003C00003C00007C0000780000 -780000F83F00F8C1C0F900E0FA0070FA0038FC003CFC001EFC001EF8001EF8001FF8001F -F8001FF8001F78001F78001F78001F78001F3C001E3C001E1C003C1E003C0E0078070070 -03C1E001FFC0007E0018297EA71D>54 D<007E0001FF800381E00600F00C00781C003818 -001C38001C38001C38001C38001C3C001C3E00381F00381FC0700FE0E007F98003FF0001 -FF0000FF8001FFE0031FF00E07F81C03FC3800FE30007E70001E60000FE0000FE00007E0 -0007E00007E00007F0000670000E78000C3800181E00300F81E003FFC000FE0018297EA7 -1D>56 D<007E0001FF800781C00F00E01E00703C00383C003878003C78003CF8001EF800 -1EF8001EF8001EF8001FF8001FF8001FF8001F78001F78003F78003F3C003F1C005F0E00 -5F07009F03831F00FC1F00001E00001E00001E00003E00003C00003C0000381C00783E00 -703E00E03C01C01803801C0F000FFE0003F80018297EA71D>I<00001000000000380000 -0000380000000038000000007C000000007C000000007C00000000BE00000000BE000000 -00BE000000011F000000011F000000011F000000020F800000020F800000020F80000004 -07C000000407C000000C07E000000803E000000803E000001003F000001001F000001001 -F000002000F800002000F800002000F800007FFFFC00007FFFFC000040007C000080003E -000080003E000080003E000100001F000100001F000300001F800200000F800200000F80 -0600000FC01F80000FC0FFE000FFFEFFE000FFFE272A7EA92C>65 -D73 D75 D77 -DI80 -D82 D<00FE010003FF83000F81E3001E0037003C001F0038000F007800070070000700F0 -000300F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003F -E000001FFE00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000 -000F80000007C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C0 -000380E0000780F0000700F8000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921 ->I85 DI<03FC00000C070000100380003C01C0003E01E0003E00F0001C -00F0000800F0000000F0000000F0000000F000007FF00003E0F0000F80F0001E00F0003C -00F0007C00F0007800F040F800F040F800F040F800F040F801F0407C01F0403C0278801E -0C7F8007F01E001A1A7E991D>97 D<007F0001C0E00700100E00781E00F83C00F83C0070 -7C0020780000F80000F80000F80000F80000F80000F80000F80000F800007800007C0000 -3C00083C00081E00100E002007006001C180007E00151A7E991A>99 -D<00FE000387800701C00E01E01C00E03C00F03C00F0780078780078F80078F80078FFFF -F8F80000F80000F80000F80000F800007800007800003C00083C00081E00100E00200700 -4001C180007E00151A7E991A>101 D<001F000070C000E1E001C3E003C3E00381C00780 -80078000078000078000078000078000078000078000078000078000FFFE00FFFE000780 -000780000780000780000780000780000780000780000780000780000780000780000780 -0007800007800007800007800007800007800007800007800007C000FFFE00FFFE00132A -7FA912>I<07800000FF800000FF8000000F800000078000000780000007800000078000 -0007800000078000000780000007800000078000000780000007800000078000000783F8 -00078C1C0007900E0007A0070007A0078007C0078007C007800780078007800780078007 -800780078007800780078007800780078007800780078007800780078007800780078007 -800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC1E2A7FA921> -104 D<0F001F801F801F801F800F0000000000000000000000000000000000000007807F -807F800F8007800780078007800780078007800780078007800780078007800780078007 -800780078007800780FFF8FFF80D297FA811>I<07800000FF800000FF8000000F800000 -078000000780000007800000078000000780000007800000078000000780000007800000 -07800000078000000780000007807FE007807FE007803F00078018000780300007802000 -07804000078180000782000007860000078F0000079F000007AF800007C780000783C000 -0783E0000781E0000781F0000780F8000780780007807C0007803C0007803E0007803F00 -FFF8FFF0FFF8FFF01C2A7FA91F>107 D<0780FF80FF800F800780078007800780078007 -800780078007800780078007800780078007800780078007800780078007800780078007 -80078007800780078007800780078007800780078007800780FFFCFFFC0E2A7FA911>I< -0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C007800780078007800780 -078007800780078007800780078007800780078007800780078007800780078007800780 -078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC1E1A7F99 -21>110 D<007E0003C3C00700E00E00701C00383C003C3C003C78001E78001EF8001FF8 -001FF8001FF8001FF8001FF8001FF8001FF8001F78001E78001E3C003C3C003C1C00380E -00700700E003C3C0007E00181A7E991D>I<0783F000FF8C1C00FFB00F0007C0078007C0 -03C0078003E0078001E0078001F0078001F0078000F8078000F8078000F8078000F80780 -00F8078000F8078000F8078000F0078001F0078001F0078001E0078003C007C003C007C0 -078007A00E0007983C000787E00007800000078000000780000007800000078000000780 -000007800000078000000780000007800000FFFC0000FFFC00001D267F9921>I<0787C0 -FF88E0FF91F00FA1F007C1F007C0E007C000078000078000078000078000078000078000 -07800007800007800007800007800007800007800007800007800007800007C000FFFE00 -FFFE00141A7F9917>114 D<07F0801C0D80300380600180600180E00080E00080F00080 -F800007E00007FE0003FFC001FFE0007FF00003F800007808003C08003C08001C0C001C0 -C001C0E00180E00380F00300CC0E0083F800121A7E9917>I<0080000080000080000080 -000180000180000180000380000380000780000F80001FFF80FFFF800780000780000780 -000780000780000780000780000780000780000780000780000780000780000780400780 -4007804007804007804007804007804003C08001C08000E100003E0012257FA417>I<07 -800780FF80FF80FF80FF800F800F80078007800780078007800780078007800780078007 -800780078007800780078007800780078007800780078007800780078007800780078007 -8007800780078007800F8007800F800380178001C027C000E047FC003F87FC1E1A7F9921 ->III121 D E /FC 26 124 df<00001FE0000000F018000003C0 -04000007800200000F000300001E000F80003C001F80007C001F80007C001F8000F8000F -0000F800060000F800000000F800000000F800000000F800000000F800000000F8000000 -00F800000000F800000000F800000000F800000000F800000000F8000000FFFFFFFF80FF -FFFFFF8000F8001F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8 -000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F800 -0F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F -8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F8000F80 -00F8000F8000F8000F8000F8000F8000F8000F8001FC001FC03FFFC1FFFE3FFFC1FFFE27 -3C7FBB2B>12 D<000000180000000000003C0000000000003C0000000000003C00000000 -00007E0000000000007E0000000000007E000000000000FF000000000000FF0000000000 -00FF0000000000019F8000000000019F8000000000019F8000000000030FC00000000003 -0FC000000000070FE0000000000607E0000000000607E0000000000E07F0000000000C03 -F0000000000C03F0000000001803F8000000001801F8000000001801F8000000003001FC -000000003000FC000000003000FC0000000060007E0000000060007E0000000060007E00 -000000C0003F00000000C0003F00000001C0003F8000000180001F8000000180001F8000 -000380001FC000000300000FC000000300000FC0000007FFFFFFE0000007FFFFFFE00000 -06000007E000000C000007F000000C000003F000000C000003F0000018000001F8000018 -000001F8000018000001F8000030000000FC000030000000FC000070000000FE00006000 -00007E0000600000007E0000E00000007F0000C00000003F0001C00000003F0001E00000 -003F8003E00000003F800FF80000007FC0FFFE000007FFFFFFFE000007FFFF383C7EBB3C ->65 D<000001FF00008000001FFFE0018000007F007801800001F8000E03800003E00007 -0780000FC000018780001F000000CF80003E0000006F80007C0000003F8000F80000003F -8001F00000001F8003F00000000F8007E00000000F8007C000000007800FC00000000780 -0FC000000007801F8000000003801F8000000003803F8000000003803F0000000001803F -0000000001807F0000000001807F0000000001807E0000000000007E000000000000FE00 -0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000 -00000000FE000000000000FE000000000000FE000000000000FE000000000000FE000000 -0000007E0000000000007E0000000000007F0000000000007F0000000001803F00000000 -01803F0000000001803F8000000001801F8000000001801F8000000003000FC000000003 -000FC0000000030007E0000000060007E0000000060003F0000000060001F00000000C00 -00F80000001800007C0000001800003E0000003000001F0000006000000FC00001C00000 -03E0000380000001F8000E000000007F007C000000001FFFF00000000001FF000000313D -7CBB39>67 DII78 D<000003FF00000000001E01E000000000 -F0003C00000003C0000F000000078000078000000F000003C000003E000001F000007C00 -0000F80000F80000007C0001F00000003E0001F00000003E0003E00000001F0007E00000 -001F8007C00000000F800FC00000000FC00F8000000007C01F8000000007E01F80000000 -07E03F0000000003F03F0000000003F03F0000000003F07F0000000003F87E0000000001 -F87E0000000001F87E0000000001F8FE0000000001FCFE0000000001FCFE0000000001FC -FE0000000001FCFE0000000001FCFE0000000001FCFE0000000001FCFE0000000001FCFE -0000000001FCFE0000000001FCFE0000000001FC7E0000000001F87F0000000003F87F00 -00000003F87F0000000003F87F0000000003F83F0000000003F03F8000000007F01F8000 -000007E01F8000000007E01FC00000000FE00FC00000000FC007C00000000F8007E00000 -001F8003E00000001F0001F00000003E0001F80000007E0000F80000007C00007C000000 -F800003E000001F000000F000003C000000780000780000003E0001F00000000F8007C00 -0000001E01E00000000003FF000000363D7CBB3E>I82 D<000FF00080007FFE018001F00F818003C001 -C380070000E3800E000037801C00003F803C00001F803800000F807800000F8070000007 -807000000780F000000380F000000380F000000380F000000380F000000180F800000180 -F800000180FC000001807C000000007E000000003F000000003FC00000001FF00000000F -FF0000000FFFF0000003FFFE000001FFFFC00000FFFFF000003FFFFC000003FFFE000000 -3FFF00000003FF000000007F800000001FC00000000FC000000007E000000003E0000000 -03E000000001F0C0000001F0C0000001F0C0000000F0C0000000F0C0000000F0E0000000 -F0E0000000F0E0000000E0F0000000E0F0000001E0F8000001C0F8000001C0FC00000380 -FE00000780F700000700E1C0001E00E0F0003C00C07E00F000C00FFFE0008001FF000024 -3D7CBB2C>I<7FFFFFFFFFFFC07FFFFFFFFFFFC07FC003FC003FC07E0001F8000FC07C00 -01F80003C0780001F80001C0700001F80001C0700001F80000C0600001F80000C0600001 -F80000C0E00001F80000E0E00001F80000E0C00001F8000060C00001F8000060C00001F8 -000060C00001F8000060C00001F8000060C00001F8000060C00001F8000060000001F800 -0000000001F8000000000001F8000000000001F8000000000001F8000000000001F80000 -00000001F8000000000001F8000000000001F8000000000001F8000000000001F8000000 -000001F8000000000001F8000000000001F8000000000001F8000000000001F800000000 -0001F8000000000001F8000000000001F8000000000001F8000000000001F80000000000 -01F8000000000001F8000000000001F8000000000001F8000000000001F8000000000001 -F8000000000001F8000000000001F8000000000001F8000000000001F8000000000001F8 -000000000001F8000000000001F8000000000001F8000000000001F8000000000001F800 -0000000007FE0000000007FFFFFE00000007FFFFFE0000333B7DBA39>II<003F80000001C0F0000003 -0038000004001C00000C001E000018000F00001C000F80003E000780003F0007C0003F00 -07C0003F0007C0001E0007C000000007C000000007C000000007C00000003FC000000FE7 -C000007E07C00001F007C00007E007C0000F8007C0001F0007C0003F0007C0003E0007C0 -007E0007C0007C0007C060FC0007C060FC0007C060FC0007C060FC000FC060FC000FC060 -7C000FC0607E0017C0603E0023E0C01F0041F18007C180FF0000FE003E0023257CA427> -97 D<0007F800003C0E0000F0018001E000C003C00060078000300F0000701F0000F81F -0001F83E0001F83E0001F87E0000F07C0000007C000000FC000000FC000000FC000000FC -000000FC000000FC000000FC000000FC000000FC0000007C0000007C0000007E0000003E -0000003E00000C1F00000C1F0000180F8000180780003003C0006001E000C000F0018000 -3C0E000007F8001E257DA423>99 D<000FF00000383C0000E00F0001C00780038003C007 -8001E00F0001F01F0000F01E0000F83E0000F83E0000F87C00007C7C00007C7C00007CFC -00007CFC00007CFFFFFFFCFC000000FC000000FC000000FC000000FC000000FC0000007C -0000007C0000007E0000003E0000003E00000C1E00000C1F0000180F0000180780003003 -C0006001E000C000F00180003C0E000007F8001E257DA423>101 -D<0000FC000003830000070380000E07C0001E0FC0003C0FC0007C0FC0007C0780007800 -0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 -0000F8000000F8000000F8000000F8000000F80000FFFFFC00FFFFFC0000F8000000F800 -0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 -0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 -0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 -0000F8000000F8000000F8000001FC00003FFFF0003FFFF0001A3C7FBB18>I<00000007 -C0000FE01860003838207000F01E40F001E00F80F003C007806007C007C0000F8003E000 -0F8003E0000F8003E0001F8003F0001F8003F0001F8003F0001F8003F0001F8003F0001F -8003F0000F8003E0000F8003E0000F8003E00007C007C00003C007800001E00F000003F0 -1E00000238380000060FE00000040000000004000000000C000000000C000000000E0000 -00000E000000000700000000078000000003FFFF000003FFFFF00001FFFFFC0000FFFFFE -00078000FF000E00001F801C000007C038000003C078000003C070000001E0F0000001E0 -F0000001E0F0000001E0F0000001E0F0000001E078000003C038000003803C000007801E -00000F000700001C0003C0007800007803C000000FFE000024387EA527>I<038007C00F -E00FE00FE007C00380000000000000000000000000000000000000000000000000000003 -E0FFE0FFE007E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003 -E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E007F0FFFFFF -FF10397EB815>105 D<03E000FFE000FFE00007E00003E00003E00003E00003E00003E0 -0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 -0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 -0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 -0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 -0007F000FFFF80FFFF80113C7EBB15>108 D<03E01FC0007F0000FFE060780181E000FF -E1803C0600F00007E2001E0800780003E4001F10007C0003E4001F10007C0003E8000F20 -003C0003F0000FC0003E0003F0000FC0003E0003F0000FC0003E0003E0000F80003E0003 -E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80 -003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003 -E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80 -003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003 -E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80 -003E0007F0001FC0007F00FFFF83FFFE0FFFF8FFFF83FFFE0FFFF83D257DA443>I<03E0 -3FC000FFE0C0F000FFE100780007E2003C0003E4003E0003E8001E0003E8001E0003F000 -1F0003F0001F0003F0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F -0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F00 -03E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003 -E0001F0003E0001F0003E0001F0003E0001F0003E0001F0007F0003F80FFFF87FFFCFFFF -87FFFC26257DA42C>I<0007F00000003C1E000000F007800001C001C000038000E00007 -8000F0000F000078001E00003C001E00003C003E00003E003E00003E007C00001F007C00 -001F007C00001F00FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC0000 -1F80FC00001F80FC00001F80FC00001F807C00001F007C00001F007C00001F003E00003E -003E00003E001E00003C001F00007C000F00007800078000F00003C001E00001C001C000 -00F0078000003C1E00000007F0000021257DA427>I<03E03F8000FFE1C0F000FFE3003C -0007E4001E0003E8000F0003F000078003F00007C003E00003E003E00003E003E00001F0 -03E00001F003E00001F803E00001F803E00000F803E00000FC03E00000FC03E00000FC03 -E00000FC03E00000FC03E00000FC03E00000FC03E00000FC03E00000FC03E00000F803E0 -0001F803E00001F803E00001F003E00003F003E00003E003E00007C003F00007C003F000 -0F8003F8001F0003EC001E0003E600780003E181E00003E07F000003E000000003E00000 -0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000 -03E000000003E000000003E000000003E000000003E000000007F0000000FFFF800000FF -FF80000026367DA42C>I<03E0FC00FFE10600FFE20F0007E41F8003E81F8003E81F8003 -F00F0003F0060003F0000003F0000003E0000003E0000003E0000003E0000003E0000003 -E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003 -E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003 -E0000007F00000FFFFC000FFFFC00019257DA41E>114 D<00FF02000700C6000C002E00 -10001E0030001E0060000E0060000E00E0000600E0000600E0000600F0000600F8000600 -FC0000007F0000003FF000003FFF80001FFFE00007FFF00001FFFC00003FFE000001FE00 -00003F00C0001F00C0000F80C0000780E0000380E0000380E0000380E0000380F0000300 -F0000300F8000700F8000600E4000C00E2001800C1807000807F800019257DA41F>I<00 -180000001800000018000000180000001800000038000000380000003800000038000000 -7800000078000000F8000000F8000001F8000003F8000007F800001FFFFE00FFFFFE0000 -F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 -F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 -F8000000F8018000F8018000F8018000F8018000F8018000F8018000F8018000F8018000 -F801800078018000780300007C0300003C0200001E0600000F0C000003F00019357FB41E ->I123 D E end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin -%%PaperSize: a4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 315 305 a FC(A)-7 b(TENSOR)25 b({)i(REDUCE)e(program)j(for)f -(tensor)834 409 y(simpli\014cation)723 557 y FB(V.A.Ilyin)962 -535 y FA(\003)980 557 y Fz(and)20 b FB(A.P)-5 b(.Kryuk)n(o)n(v)1403 -535 y FA(y)371 631 y FB(Institute)17 b(of)j(Nuclear)e(Ph)n(ysics,)h -(Mosco)n(w)h(State)f(Univ)n(ersit)n(y)755 706 y(119899,)i(Mosco)n(w,)g -(Russia)882 823 y(April)c(10,)j(1996)118 1012 y Fy(PR)n(OGRAM)27 -b(SUMMAR)-7 b(Y)118 1127 y Fz(Title)15 b(of)i(pr)n(o)n(gr)n(am:)j -Fx(A)l(TENSOR)118 1195 y Fz(Catalo)n(gue)c(numb)n(er:)118 -1264 y(Pr)n(o)n(gr)n(am)28 b(available)f(fr)n(om:)46 -b Fx(CPC)28 b(Program)d(Li-)118 1320 y(brary)l(,)12 b(Queen's)h(Univ)o -(ersit)o(y)e(of)h(Belfast,)f(N.)h(Ireland)118 1377 y(\(see)j -(application)f(form)g(in)h(this)f(issue\).)118 1445 y -Fz(Lic)n(ense)g(pr)n(ovisions:)20 b Fx(none)118 1513 -y Fz(Computer:)f Fx(An)o(y)12 b(computers)f(where)h(REDUCE)g([7])118 -1570 y(can)j(b)q(e)h(installed)118 1638 y Fz(Op)n(er)n(ation)g(system:) -k Fx(see)15 b(ab)q(o)o(v)o(e.)118 1706 y Fz(Pr)n(o)n(gr)n(amming)h -(language:)k Fx(REDUCE-3.4,)14 b(3.5)118 1774 y Fz(No.)21 -b(of)16 b(bits)g(in)g(a)g(wor)n(d:)21 b Fx(32)118 1843 -y Fz(No.)30 b(of)19 b(lines)f(in)h(distribute)n(d)g(pr)n(o)n(gr)n(am,)h -(including)118 1899 y(test)c(data,)h(etc.:)j Fx(1963)118 -1967 y Fz(Keywor)n(ds:)f Fx(T)l(ensor,)13 b(symmetry)l(,)e(m)o -(ultiterm)e(linear)118 2024 y(iden)o(tities,)18 b(dumm)o(y)f(indices,)i -(simpli\014cation,)e(p)q(er-)118 2080 y(m)o(utation)c(group,)h(REDUCE,) -h(computer)f(algebra.)118 2149 y Fz(Natur)n(e)23 b(of)f(physic)n(al)f -(pr)n(oblem:)33 b Fx(Simpli\014cation)20 b(of)118 2205 -y(tensor)27 b(expressions)h(with)e(taking)h(in)o(to)f(accoun)o(t)118 -2261 y(m)o(ultiterm)10 b(linear)j(iden)o(tities,)f(symmetry)f -(relations)118 2318 y(and)21 b(renaming)e(dumm)o(y)g(indices.)37 -b(This)20 b(problem)118 2374 y(is)14 b(imp)q(ortan)o(t)f(for)h(the)h -(calculations)f(in)g(the)h(gra)o(vit)o(y)118 2431 y(theory)l(,)d -(di\013eren)o(tial)f(geometry)l(,)g(other)g(\014elds)i(where)118 -2487 y(indexed)j(ob)s(jects)f(arise.)p 118 2530 370 2 -v 174 2561 a Fw(\003)193 2576 y Fv(E-mail:)j(ilyin@theory)m -(.npi.msu.su)176 2611 y Fw(y)193 2626 y Fv(E-mail:)g(kryuk)o(o)o -(v@theory)m(.npi.msu.su)1084 1012 y Fz(Metho)n(d)k(of)g(solution:)32 -b Fx(The)21 b(group)g(algebra)g(tec)o(h-)1084 1068 y(nique)15 -b(for)g(p)q(erm)o(utation)e(group)i(is)f(applied)h(to)g(con-)1084 -1125 y(struct)21 b(a)g(canonical)g(subspace)h(and)g(the)g(e\013ectiv)o -(e)1084 1181 y(algorithm)12 b(for)j(the)g(corresp)q(onding)g(pro)s -(jection.)1084 1249 y Fz(R)n(estriction)20 b(on)h(the)h(c)n(omplexity)f -(of)h(the)f(pr)n(oblem:)1084 1306 y Fx(Computer)12 b(op)q(erativ)o(e)g -(memory)f(is)h(the)i(sev)o(erest)f(re-)1084 1362 y(striction.)1084 -1430 y Fz(R)o(unning)h(time:)19 b Fx(It)14 b(dep)q(ends)h(on)f(the)f -(problem.)18 b(F)l(or)1084 1487 y(example)h(the)h(expression)g(con)o -(tained)f(con)o(traction)1084 1543 y(of)f(Riemann)h(tensor)g(with)f(an) -o(tisymmetr)o(ic)e(tensor)1084 1600 y(of)11 b(second)i(order)e -Fu(\017)1409 1607 y Ft(\026\027)1456 1600 y Fs(\003)s -Fu(R)1517 1607 y Ft(\026\027)r(\025\024)1604 1600 y Fs(\000)s -Fu(\017)1660 1607 y Ft(\013\014)1710 1600 y Fs(\003)s -Fu(R)1771 1607 y Ft(\025\024\014)r(\013)1870 1600 y Fx(require)1084 -1656 y(ab)q(out)16 b(82s)f(CPU)h(time)e(on)i(HP9000/735)e(with)h(8M) -1084 1713 y(for)f(REDUCE.)1084 1781 y Fz(R)n(efer)n(enc)n(es:)1084 -1837 y Fx([1])f(V.A.Ilyin)h(and)g(A.P)l(.Kryuk)o(o)o(v,)f(in)h(Pro)q -(c.)20 b(of)14 b(the)1084 1894 y(In)o(t.)25 b(Symp.)g(of)17 -b(Sym)o(b)q(olic.)24 b(and)17 b(Algebraic)f(Com-)1084 -1950 y(putation)h(\(ISSA)o(C'91\),)g(July)h(15-17,)f(1991,)g(Bonn,)1084 -2007 y(Ed.)j(b)o(y)15 b(S.W)l(att,)f(A)o(CM)g(Press)h(\(1991\))e(224.) -1084 2067 y([2])h(V.A.Ilyin)h(and)h(A.P)l(.Kryuk)o(o)o(v,)e(in)h("New)g -(Com-)1084 2127 y(puting)31 b(tec)o(hniques)g(in)h(Ph)o(ysics)f -(Researc)o(h)g(I)q(I",)1084 2187 y(Pro)q(c.)22 b(of)15 -b(AIHENP-92,)h(Ed.)22 b(b)o(y)16 b(D.P)o(erret-Gallix,)1084 -2248 y(W)l(orld)e(Scien)o(ti\014c,)h(Singap)q(ore)g(\(1992\))e(639-348) -1051 2827 y Fr(1)p eop -%%Page: 2 2 -2 1 bop 118 154 a Fy(LONG)28 b(WRITE-UP)118 353 y(1)81 -b(In)n(tro)r(duction)118 463 y Fr(Ob)s(jects)12 b(with)h(indices)g(are) -f(often)h(used)f(in)h(math-)118 523 y(ematics)21 b(and)h(ph)o(ysics.)37 -b(T)l(ensors)22 b(are)f(classical)118 583 y(examples)h(here)f([1,)g -(2].)37 b(Indexed)21 b(ob)s(jects)g(can)118 643 y(ha)o(v)o(e)16 -b(v)o(ery)g(complicated)i(and)g(in)o(tricated)f(prop-)118 -704 y(erties.)k(F)l(or)14 b(example)g(the)g(Riemann)g(tensor)h(has)118 -764 y(symmetry)c(prop)q(erties)h(with)h(resp)q(ect)e(to)h(p)q(erm)o(u-) -118 824 y(tation)22 b(of)f(indices.)36 b(Moreo)o(v)o(er)19 -b(it)i(satis\014es)h(the)118 884 y(cyclic)f(iden)o(tit)o(y)g([1].)35 -b(There)21 b(are)g(a)h(n)o(um)o(b)q(er)e(of)118 944 y(linear)13 -b(iden)o(tities)h(with)e(man)o(y)g(terms)g(in)g(the)g(case)118 -1005 y(of)23 b(Riemann-Cartan)i(geometry)d(with)i(torsion)118 -1065 y([2].)177 1125 y(So)29 b(there)e(is)i(a)f(problem)g(of)g -(reduction)h(of)118 1185 y(expressions)21 b(whic)o(h)f(con)o(tain)g -(indexed)g(ob)s(jects,)118 1245 y(called)d("tensor)g(expressions")h(b)q -(elo)o(w.)177 1305 y(Tw)o(o)f(reduction)g(strategies)g(can)f(b)q(e)h -(used.)177 1366 y(First,)k(the)f(corresp)q(onding)i(expressions)f(are) -118 1426 y(expanded)e(in)h(terms)e(of)i(basic)g(elemen)o(ts)e(to)h(re-) -118 1486 y(solv)o(e)k(symmetries)f(and)h(iden)o(tities)h(in)f(the)g -(ex-)118 1546 y(plicit)d(form.)29 b(Ho)o(w)o(ev)o(er,)17 -b(this)j(w)o(a)o(y)f(requires)f(in-)118 1606 y(tro)q(ducing)h(a)e(lot)h -(of)g(ob)s(jects)f(of)g(di\013eren)o(t)h(t)o(yp)q(es)118 -1667 y(and)c(rules)h(for)f(their)g(managemen)o(t.)20 -b(In)13 b(the)h(Rie-)118 1727 y(mann)21 b(tensor)g(case,)g(these)g(are) -f(the)h(Christofel)118 1787 y(sym)o(b)q(ol,)15 b(the)g(metric)f -(tensor,)h(and)g(their)g(deriv)m(a-)118 1847 y(tiv)o(es.)38 -b(As)21 b(a)h(rule,)h(this)g(leads)f(to)g(large)h(in)o(ter-)118 -1907 y(mediate)18 b(expressions.)26 b(F)l(urthermore,)17 -b(suc)o(h)h(an)118 1968 y(approac)o(h)k(fails,)i(for)d(instance,)i(in)f -(the)f(case)g(of)118 2028 y(geometry)16 b(with)h(torsion.)177 -2088 y(Second)26 b(strategy)h(is)f(to)h(consider)f(indexed)118 -2148 y(ob)s(jects)21 b(as)h(formal)g(ob)s(jects)f(with)h(some)f(prop-) -118 2208 y(erties.)57 b(Note)28 b(that)g(if)h(w)o(e)f(consider)h -(tensors)118 2269 y(whic)o(h)j(ha)o(v)o(e)e(only)i(symmetries)f -(corresp)q(ond-)118 2329 y(ing)d(to)f(p)q(erm)o(utation)g(indices)g -(and)g(renaming)118 2389 y(dumm)o(y)11 b(ones)h(then)f(the)h(problem)g -(can)g(b)q(e)g(solv)o(ed)118 2449 y(in)27 b(terms)e(of)i(double)g -(cosets)f(of)g(p)q(erm)o(utation)118 2509 y(group)18 -b([3].)k(Ho)o(w)o(ev)o(er,)14 b(if)k(linear)g(iden)o(tities)f(with)118 -2570 y(man)o(y)11 b(terms)g(\()p Fq(>)j Fr(2\))d(are)h(presen)o(t,)f -(this)h(approac)o(h)118 2630 y(fails)j(b)q(ecause)f(the)f(summation)h -(op)q(erator)h(lea)o(v)o(es)118 2690 y(the)h(group)h(framew)o(ork.)1143 -154 y(Our)j(approac)o(h)g(to)h(the)e(problem)i(of)f(simpli-)1084 -214 y(\014cation)27 b(of)f(tensor)g(expressions)h(is)g(based)f(on)1084 -274 y(the)e(consideration)j(of)e(tensor)g(expressions)g(as)1084 -334 y(v)o(ectors)19 b(in)h(some)g(linear)h(space.)33 -b(The)20 b(prelimi-)1084 394 y(nary)12 b(v)o(ersion)h(of)g(this)g(idea) -g(w)o(as)g(prop)q(osed)h(in)f([4].)1084 455 y(The)k(adv)m(anced)h(v)o -(ersion)f(of)h(the)f(algorithm)i(w)o(as)1084 515 y(presen)o(ted)d(at)h -(ISSA)o(C'91)g([8])g(and)g(AIHENP-92)1084 575 y([9].)j(Here)14 -b(w)o(e)h(presen)o(t)g(a)h(program)g(in)g(whic)o(h)f(w)o(e)1084 -635 y(implemen)o(t)21 b(the)h(prop)q(osed)h(algorithm)h(in)f(RE-)1084 -695 y(DUCE)12 b(and)h(giv)o(e)g(a)f(detailed)i(description)f(of)g(the) -1084 756 y(program.)32 b(W)l(e)20 b(generalized)g(the)g(algorithm)i(to) -1084 816 y(the)16 b(case)g(of)h(tensor)f(m)o(ultiplication.)1143 -876 y(Complemen)o(tary)f(approac)o(h)g(w)o(as)h(dev)o(elop)q(ed)1084 -936 y(in)h([11].)22 b(Here)16 b(Y)l(oung)h(diagram)h(tec)o(hnique)d(w)o -(as)1084 996 y(used)k(to)h(solv)o(e)f(the)g(simpli\014cation)k(problem) -c(in)1084 1056 y(some)i(sp)q(eci\014c)g(case.)36 b(Namely)l(,)21 -b(when)g(dumm)o(y)1084 1117 y(indices)d(are)g(allo)o(w)o(ed)g(only)h(b) -q(et)o(w)o(een)d(basic)j(ten-)1084 1177 y(sors)24 b(for)g(whic)o(h)g -(generic)g(symmetry)e(relations)1084 1237 y(and)27 b(m)o(ultiterm)e -(linear)j(iden)o(tities)f(should)h(b)q(e)1084 1297 y(imp)q(osed.)21 -b(Although)16 b(this)e(algorithm)j(is)d(a)h(p)q(o)o(w-)1084 -1357 y(erful)i(to)q(ol)i(in)f(`indicial)i(tensor)d(calculations')j(of) -1084 1418 y(asymptotic)12 b(expansions)i(of)e(heat)g(k)o(ernels)f(of)h -(dif-)1084 1478 y(feren)o(tial)k(op)q(erators)i(it)f(fails)h(in)f -(general)g(case.)1143 1538 y(F)l(rom)h(the)h(user's)f(p)q(oin)o(t)i(of) -f(view,)h(there)e(are)1084 1598 y(three)d(groups)j(of)e(tensor)h(prop)q -(erties:)1084 1670 y Fp(S)f Fr(-)f(symmetry)g(with)h(resp)q(ect)f(to)h -(index)g(p)q(erm)o(u-)1084 1730 y(tations;)1084 1791 -y Fp(I)g Fr(-)g(linear)i(iden)o(tities.)1084 1851 y Fp(D)d -Fr(-)g(in)o(v)m(ariance)h(with)g(resp)q(ect)f(to)g(renamings)i(of)1084 -1911 y(dumm)o(y)e(indices;)1143 1983 y(As)j(an)h(illustration,)i(for)e -(the)f(Riemann)h(cur-)1084 2043 y(v)m(ature)d(tensor)h(these)f(prop)q -(erties)h(are:)1168 2108 y Fo(S:)60 b Fu(R)1307 2115 -y Ft(abcd)1389 2108 y Fx(=)13 b Fu(R)1472 2115 y Ft(cdab)1540 -2108 y Fu(;)99 b(R)1687 2115 y Ft(abcd)1768 2108 y Fx(=)13 -b Fs(\000)p Fu(R)1886 2115 y Ft(bacd)1955 2108 y Fx(;)1168 -2165 y Fo(I:)69 b Fu(R)1307 2172 y Ft(abcd)1386 2165 -y Fx(+)11 b Fu(R)1467 2172 y Ft(acdb)1546 2165 y Fx(+)f -Fu(R)1626 2172 y Ft(adbc)1707 2165 y Fx(=)j(0;)1168 2221 -y Fo(D:)49 b Fu(R)1307 2228 y Ft(abcd)1376 2221 y Fu(R)1411 -2228 y Ft(ck)q(mn)1500 2221 y Fu(R)1535 2228 y Ft(dlps)1612 -2221 y Fx(=)13 b Fu(R)1695 2228 y Ft(abdc)1764 2221 y -Fu(R)1799 2228 y Ft(dk)q(mn)1891 2221 y Fu(R)1926 2228 -y Ft(clps)1987 2221 y Fu(:)1143 2314 y Fr(Note)h(that)h(m)o(ultiterm)f -(linear)i(iden)o(tities)f(will)1084 2374 y(pro)q(duce)30 -b(man)o(y)f(rewriting)i(rules)g(whic)o(h)f(can)1084 2435 -y(complicate)17 b(the)f(problem)g(essen)o(tially)l(.)1143 -2495 y(The)i(problem)h(under)g(in)o(v)o(estigation)h(can)f(b)q(e)1084 -2555 y(form)o(ulated)f(as)g(a)g(question:)24 b Fn(whether)19 -b(two)g(ten-)1084 2615 y(sor)c(expr)n(essions)h(ar)n(e)f(e)n(qual)h(or) -f(not,)i(taking)f(into)1084 2675 y(ac)n(c)n(ount)22 b(S-I-D)h(pr)n(op)n -(erties?)35 b Fr(Then)21 b(the)g(prob-)1051 2827 y(2)p -eop -%%Page: 3 3 -3 2 bop 118 154 a Fr(lem)12 b(of)g Fn(simplest)h(\(shortest\))g(c)n -(anonic)n(al)h(form)f(for)118 214 y(given)19 b(expr)n(ession)f(arises)f -(as)g(a)h(c)n(entr)n(al)f(one.)118 377 y Fy(2)81 b(Basic)33 -b(tensors)g(and)f(ten-)239 468 y(sor)27 b(expressions)118 -578 y Fr(Let)16 b(us)h(giv)o(e)f(some)h(de\014nitions.)177 -638 y(Under)k Fn(b)n(asic)i(tensors)f Fr(w)o(e)g(will)i(understand)118 -698 y(the)29 b(ob)s(ject)g(with)i(\014nite)f(n)o(um)o(b)q(er)f(of)g -(indices)118 758 y(whic)o(h)13 b(can)g(ha)o(v)o(e)e(suc)o(h)i(prop)q -(erties)g(as)g Fn(symmetry)118 819 y Fr(and)k Fn(multiterm)h(line)n(ar) -g(identities)770 801 y Fm(1)791 819 y Fr(.)177 879 y(Then,)12 -b(under)f Fn(tensor)h(expr)n(ession)g Fr(w)o(e)e(will)j(un-)118 -939 y(derstand)22 b(an)o(y)g(expression)h(whic)o(h)f(can)g(b)q(e)f(ob-) -118 999 y(tained)h(from)e(basic)i(tensors)g(with)f(the)g(help)g(of)118 -1059 y(the)16 b(follo)o(wing)j(op)q(erations:)191 1143 -y Fl(\017)24 b Fr(summation)17 b(with)g(in)o(teger)g(co)q(e\016cien)o -(ts;)191 1238 y Fl(\017)24 b Fr(m)o(ultiplication)19 -b(\(comm)o(utativ)o(e\))14 b(of)i(basic)240 1298 y(tensors)389 -1280 y Fm(2)409 1298 y Fr(.)177 1382 y(W)l(e)21 b(assume)g(that)g(all)h -(terms)f(in)g(the)g(tensor)118 1442 y(expression)14 b(ha)o(v)o(e)e(the) -h(same)f(n)o(um)o(b)q(er)h(of)g(indices.)118 1502 y(Some)19 -b(pairs)h(of)g(them)e(are)h(mark)o(ed)g(as)g(dumm)o(y)118 -1562 y(ones.)46 b(The)24 b(set)g(of)h(nondumm)o(y)f(names)g(ha)o(v)o(e) -118 1623 y(to)19 b(b)q(e)g(the)f(same)g(for)h(eac)o(h)f(term)g(in)h -(the)f(tensor)118 1683 y(expression.)29 b(The)19 b(names)g(of)g -(dummies)f(can)h(b)q(e)118 1743 y(arbitrary)l(.)118 1906 -y Fy(3)81 b(Algebraic)28 b(approac)n(h)118 2016 y Fr(T)l(o)14 -b(start)f(with,)h(let)g(us)f(consider)h(the)f(case)g(of)g(one)118 -2076 y(basic)25 b(tensor)e(and)i(tensor)e(expressions)i(whic)o(h)118 -2136 y(are)18 b(linear)g(com)o(binations)h(of)f(this)g(basic)h(tensor) -118 2196 y(with)c(in)o(teger)g(co)q(e\016cien)o(ts)f(\(i.e.)20 -b(without)c(m)o(ulti-)118 2256 y(plication)j(of)d(tensors\).)177 -2317 y(Let)27 b(a)h(tensor)f Fq(F)33 b Fr(has)28 b(indices)g -Fq(\026)847 2324 y Fm(1)867 2317 y Fq(;)8 b(:)g(:)g(:)f(;)h(\026)1005 -2324 y Ft(n)1029 2317 y Fr(.)118 2377 y(There)16 b(are)g -Fq(n)p Fr(!)g(formally)i(di\013eren)o(t)e(ob)s(jects)118 -2486 y Fq(F)150 2494 y Ft(\031)q Fm(\()p Ft(\026)206 -2499 y Fk(1)223 2494 y Ft(;:::;\026)294 2498 y Fj(n)315 -2494 y Fm(\))331 2486 y Fq(;)56 b(\031)16 b Fr(=)496 -2426 y Fi(\032)569 2456 y Fr(1)83 b Fl(\001)8 b(\001)g(\001)83 -b Fq(n)536 2517 y(\031)r Fr(\(1\))48 b Fl(\001)8 b(\001)g(\001)49 -b Fq(\031)r Fr(\()p Fq(n)p Fr(\))888 2426 y Fi(\033)933 -2486 y Fl(2)14 b Fq(S)1010 2493 y Ft(n)1034 2486 y Fq(;)p -118 2557 370 2 v 174 2588 a Fh(1)193 2603 y Fv(The)h(symmetry)f -(relations)i(are)f(partial)g(case)h(of)d(lin-)118 2652 -y(ear)h(iden)o(tities)j(indeed)174 2687 y Fh(2)193 2702 -y Fv(Including)e(con)o(traction)g(of)e(indices.)1084 -154 y Fr(where)e Fq(S)1250 161 y Ft(n)1286 154 y Fr(is)h(the)g(group)h -(of)f(p)q(erm)o(utations)h(of)f(the)1084 214 y(set)k(\(1)p -Fq(;)8 b(:)g(:)g(:)g(;)g(n)p Fr(\))16 b(and)1181 376 -y Fq(\031)r Fr(\()p Fq(\026)1259 383 y Fm(1)1279 376 -y Fq(;)8 b(:)g(:)g(:)f(;)h(\026)1417 383 y Ft(n)1441 -376 y Fr(\))14 b Fl(\021)f Fr(\()p Fq(\031)r Fr(\()p -Fq(\026)1623 383 y Fm(1)1643 376 y Fr(\))p Fq(;)8 b(:)g(:)g(:)f(;)h -(\031)r Fr(\()p Fq(\026)1849 383 y Ft(n)1872 376 y Fr(\)\))1084 -478 y(.)1143 538 y(If)19 b Fq(F)26 b Fr(has)20 b(symmetries)f(with)i -(resp)q(ect)e(to)h(in-)1084 598 y(dex)g(p)q(erm)o(utations)i(it)g -(means)f(that)g(there)g(is)g(a)1084 658 y(subgroup)c -Fq(H)h Fl(2)d Fq(S)1431 665 y Ft(n)1470 658 y Fr(suc)o(h)h(that)1153 -760 y Fq(F)1185 767 y Ft(h)p Fg(\016)p Ft(\031)1271 760 -y Fl(\000)25 b Fq(d)p Fr(\()p Fq(h)p Fr(\))11 b Fl(\001)g -Fq(F)1494 767 y Ft(\031)1545 760 y Fr(=)28 b(0)p Fq(;)106 -b Fl(8)p Fq(h)12 b Fl(2)i Fq(S)1901 767 y Ft(n)1925 760 -y Fr(;)1084 862 y Fq(d)p Fr(\()p Fq(h)p Fr(\))g Fl(2)g -Fq(R)1273 841 y Fm(1)1293 862 y Fr(;)22 b Fq(h)p Fl(\016)p -Fq(\031)16 b Fl(\021)d Fr(\()p Fq(\031)r Fr(\()p Fq(h)p -Fr(\()p Fq(\026)1622 869 y Fm(1)1642 862 y Fr(\)\))p -Fq(;)8 b(:)g(:)g(:)f(;)h(\031)r Fr(\()p Fq(h)p Fr(\()p -Fq(\026)1914 869 y Ft(n)1937 862 y Fr(\)\)\))p Fq(:)1143 -945 y Fr(Multiterm)j(linear)i(iden)o(tities)f(can)f(b)q(e)g(written) -1084 1006 y(in)17 b(the)f(follo)o(wing)j(form)1255 1066 -y Fi(X)1241 1158 y Ft(\031)q Fg(2)p Ft(S)1307 1162 y -Fj(n)1354 1107 y Fq(\013)1385 1114 y Ft(\031)1419 1107 -y Fl(\001)11 b Fq(F)1476 1114 y Ft(\031)1513 1107 y Fr(=)j(0)p -Fq(;)57 b(\013)1691 1114 y Ft(\031)1728 1107 y Fl(2)14 -b Fp(R)1817 1087 y Fm(1)1837 1107 y Fq(:)1143 1246 y -Fr(If)35 b(some)h(pairs)h(of)f(dumm)o(y)f(indices)i(are)1084 -1307 y(presen)o(t)24 b(without)i(an)o(y)f(loss)h(of)g(generalit)o(y)f -(w)o(e)1084 1367 y(ma)o(y)20 b(supp)q(ose)i(that)f(their)g(names)f(are) -h(already)1084 1427 y(normalized)29 b(in)g(some)f(w)o(a)o(y)l(,)i(i.e.) -56 b(they)28 b(ha)o(v)o(e)1084 1487 y(\014xed)c(names.)47 -b(Therefore)24 b(one)h(can)g(only)g(ex-)1084 1547 y(c)o(hange)d(these)g -(names:)34 b(1\))22 b(c)o(hange)h(names)f(in-)1084 1607 -y(side)d(eac)o(h)f(pair)h(and)g(2\))g(c)o(hange)f(pairs)i(of)e(these) -1084 1668 y(names.)i(With)12 b(this)h(restriction)g(the)f(exc)o -(hanging)1084 1728 y(of)23 b(dumm)o(y)f(indices)i(means)f(that)h(a)g -(subgroup)1084 1788 y Fq(M)19 b Fl(2)14 b Fq(S)1227 1795 -y Ft(n)1267 1788 y Fr(exists)i(suc)o(h)g(that)1600 1770 -y Fm(3)1132 1890 y Fq(F)1164 1898 y Ft(\031)q Fg(\016)p -Ft(m)p Fm(\()p Ft(\026)1269 1903 y Fk(1)1287 1898 y Ft(;)p -Fg(\001\001\001)o Ft(;\026)1357 1902 y Fj(n)1378 1898 -y Fm(\))1408 1890 y Fr(=)d Fq(F)1491 1897 y Ft(\031)1515 -1890 y Fq(;)56 b Fl(8)13 b Fq(m)g Fl(2)h Fq(M)r(;)8 b(\031)16 -b Fl(2)e Fq(S)1922 1897 y Ft(n)1946 1890 y Fq(:)1143 -1992 y Fr(Let)j(us)g(consider)h(no)o(w)g Fn(the)g(gr)n(oup)g(algebr)n -(a)g Fr(of)1084 2052 y Fq(S)1114 2059 y Ft(n)1156 2052 -y Fr([5].)29 b(This)20 b(is)g(a)f(linear)h(space)f Fp(R)1773 -2034 y Ft(n)p Fm(!)1825 2052 y Fr(in)h(whic)o(h)1084 -2112 y(unit)d(v)o(ectors)e(corresp)q(ond)i(to)g(p)q(erm)o(utations:) -1337 2214 y Fp(R)1379 2193 y Ft(n)p Fm(!)1426 2214 y -Fl(3)d Fq(e)1496 2221 y Ft(\031)1533 2214 y Fl($)g Fq(\031)h -Fl(2)f Fq(S)1717 2221 y Ft(n)1741 2214 y Fq(:)1143 2316 -y Fr(The)26 b(v)o(ectors)f Fq(e)1451 2323 y Ft(\031)1500 -2316 y Fr(are)h(orthogonal)j(to)d(eac)o(h)1084 2376 y(other)16 -b(in)h(the)f(Euclidean)i(metric.)p 1084 2407 V 1140 2438 -a Fh(3)1158 2453 y Fv(The)i(di\013erence)i(in)d(actions)h(of)e -Ff(H)k Fv(and)d Ff(M)k Fv(on)c Ff(S)1985 2459 y Fe(n)1084 -2503 y Fv(in)j(the)g(discussed)j(relations)e(\()p Ff(h)15 -b FA(\016)f Ff(\031)23 b Fv(and)e Ff(\031)16 b FA(\016)e -Ff(m)22 b Fv(\))g(is)1084 2553 y(connected)17 b(with)f(the)f -(di\013eren)o(t)i(nature)f(of)f(these)h(trans-)1084 2603 -y(formations:)28 b(the)20 b(symmetry)g(acts)g(up)q(on)f(place)i(of)d -(in-)1084 2652 y(dices)d(while)g(dumm)o(y)e(indices)j(renaming)d(acts)i -(up)q(on)e(the)1084 2702 y(names.)1051 2827 y Fr(3)p -eop -%%Page: 4 4 -4 3 bop 177 154 a Fr(So)21 b(w)o(e)e(ha)o(v)o(e)g(an)h(explicit)h -(isomorphism)h(b)q(e-)118 214 y(t)o(w)o(een)15 b(tensor)h(expressions)h -(and)g(p)q(oin)o(ts)g(in)g Fp(R)996 196 y Ft(n)p Fm(!)1029 -214 y Fr(:)325 279 y Fi(X)344 366 y Ft(\031)394 320 y -Fq(\013)425 327 y Ft(\031)459 320 y Fl(\001)11 b Fq(e)507 -327 y Ft(\031)544 320 y Fl($)608 279 y Fi(X)627 366 y -Ft(\031)676 320 y Fq(\013)707 327 y Ft(\031)742 320 y -Fl(\001)f Fq(F)798 327 y Ft(\031)822 320 y Fq(;)118 485 -y Fd(3.1)66 b(Subspace)23 b(K)118 577 y Fr(In)d(terms)f(of)i -Fp(R)424 559 y Ft(n)p Fm(!)457 577 y Fr(,)f(the)g(left)g(hand)h(sides)g -(of)f(the)118 638 y Fp(S-I-D)c Fr(relations)i(corresp)q(ond)f(to)g(the) -f(v)o(ectors)145 779 y Fq(e)168 786 y Ft(h)p Fg(\016)p -Ft(\031)240 779 y Fl(\000)11 b Fq(d)p Fr(\()p Fq(h)p -Fr(\))p Fq(e)404 786 y Ft(\031)427 779 y Fq(;)57 b(e)521 -786 y Ft(\031)q Fg(\016)p Ft(m)604 779 y Fl(\000)11 b -Fq(e)677 786 y Ft(\031)700 779 y Fq(;)787 725 y Ft(n)p -Fm(!)773 738 y Fi(X)771 830 y Ft(k)q Fm(=1)843 779 y -Fq(\013)874 786 y Ft(k)896 779 y Fq(e)919 786 y Ft(k)940 -779 y Fq(;)26 b Fr(\(1\))324 946 y Fq(h)14 b Fl(2)g Fq(H)q(;)22 -b(m)14 b Fl(2)g Fq(M)r(;)22 b(\031)15 b Fl(2)f Fq(S)799 -953 y Ft(n)823 946 y Fq(:)177 1032 y Fr(These)20 b(v)o(ectors)g(span)h -(some)g(subspace)f Fp(K)h Fl(2)118 1092 y Fp(R)160 1074 -y Ft(n)p Fm(!)193 1092 y Fr(.)g(W)l(e)16 b(denote)h(its)g(dimension)g -(as)g Fq(K)t Fr(.)177 1152 y(No)o(w)12 b(w)o(e)g(can)g(split)i(group)f -(algebra)g(of)g Fq(S)924 1159 y Ft(n)960 1152 y Fr(in)o(to)118 -1212 y(orthogonal)19 b(comp)q(onen)o(ts)f(in)f(terms)f(of)h(the)g(Eu-) -118 1273 y(clidean)g(metric)430 1379 y Fp(R)472 1359 -y Ft(n)p Fm(!)519 1379 y Fr(=)c Fp(K)e Fl(\010)g Fp(Q)p -Fq(:)177 1486 y Fr(It)18 b(is)h(ob)o(vious)g(that)g(all)h(p)q(oin)o(ts) -f(of)g Fp(R)887 1468 y Ft(n)p Fm(!)938 1486 y Fr(lying)118 -1546 y(in)13 b Fp(K)f Fr(corresp)q(ond)h(to)f(tensor)h(expressions)g -(whic)o(h)118 1606 y(are)18 b(equal)g(to)g(zero)f(due)h(to)g(the)f -Fp(S-I-D)g Fr(prop)q(er-)118 1666 y(ties.)j(Th)o(us,)13 -b(an)o(y)e(t)o(w)o(o)h(p)q(oin)o(ts)h Fq(A)e Fr(and)i -Fq(A)852 1648 y Fg(0)875 1666 y Fr(lying)g(on)118 1727 -y(the)j(plane)g(parallel)i(to)e Fp(K)g Fr(corresp)q(ond)h(to)f(equal) -118 1787 y(expressions:)252 1893 y(\()p Fq(A)11 b Fl(\000)f -Fq(A)405 1873 y Fg(0)417 1893 y Fr(\))j Fl($)527 1852 -y Fi(X)513 1944 y Ft(\031)q Fg(2)p Ft(S)579 1948 y Fj(n)609 -1893 y Fq(\013)640 1873 y Ft(S)r(I)s(D)640 1906 y(\031)725 -1893 y Fl(\001)e Fq(F)782 1900 y Ft(\031)819 1893 y Fr(=)i(0)p -Fq(:)177 2040 y Fr(The)25 b(\()p Fq(n)p Fr(!)17 b Fl(\000)g -Fq(K)t Fr(\))25 b(dimensional)i(subspace)f Fp(Q)118 2100 -y Fr(could)g(b)q(e)g(c)o(hosen)f(as)h(a)g(set)g(of)f(canonical)j(el-) -118 2160 y(emen)o(ts:)48 b(a)30 b(p)q(oin)o(t)h Fq(A)561 -2167 y Ft(Q)621 2160 y Fr(can)f(b)q(e)g(determined)118 -2221 y(as)21 b(a)g(canonical)h(represen)o(tativ)o(e)d(of)i(the)f -Fp(S-I-D)118 2281 y Fr(equiv)m(alence)g(class)g(of)g -Fq(A)p Fr(.)31 b(Then)19 b(one)h(can)g(con-)118 2341 -y(clude)j(that)g(the)g(problem)g(of)g(comparing)h(ten-)118 -2401 y(sor)e(expressions)h(ma)o(y)d(b)q(e)i(solv)o(ed)g(b)o(y)f -(compar-)118 2461 y(ing)27 b(their)g(canonical)h(represen)o(tativ)o -(es.)50 b(Suc)o(h)118 2522 y(an)30 b(approac)o(h)g(w)o(as)f(dev)o(elop) -q(ed)g(in)h([4])f(where)118 2582 y(the)15 b(Gramm-Sc)o(hmidt)f -(orthogonali)q(zatio)q(n)k(pro-)118 2642 y(cedure)10 -b(w)o(as)i(used)f(as)g(a)h(main)f(tec)o(hnical)g(metho)q(d.)118 -2702 y(Ho)o(w)o(ev)o(er,)17 b(this)i(pro)q(cedure)f(requires)g(to)q(o)h -(m)o(uc)o(h)1084 154 y(time)i(and)g(computer)g(memory)f(during)j -(execu-)1084 214 y(tions.)1143 274 y(In)e([8)o(])g(the)g(authors)h -(prop)q(osed)g(an)g(e\013ectiv)o(e)1084 334 y(pro)q(cedure)14 -b(where)g(another)h(subspace,)g(denoted)1084 394 y(b)q(elo)o(w)i(as)f -Fp(L)p Fr(,)g(had)g(b)q(een)g(considered)h(as)f(a)h(set)f(of)1084 -455 y(canonical)k(elemen)o(ts.)27 b(In)19 b(the)f(next)g(section)h(w)o -(e)1084 515 y(giv)o(e)13 b(a)g(concise)h(form)o(ulation)g(of)f(this)h -(pro)q(cedure.)1084 659 y Fd(3.2)66 b("T)-6 b(riangle")23 -b(S-I-D)g(basis)1084 752 y Fr(Let's)16 b(designate)h(v)o(ectors)f -(\(1\))g(as)1227 899 y Fq(V)1266 879 y Fm(0)1255 911 -y Ft(k)1300 899 y Fr(=)1367 845 y Ft(n)p Fm(!)1352 858 -y Fi(X)1352 949 y Ft(j)r Fm(=1)1421 899 y Fq(\013)1452 -879 y Fm(0)1452 911 y Ft(k)q(j)1490 899 y Fq(e)1513 906 -y Ft(j)1531 899 y Fq(;)21 b(k)16 b Fr(=)e(\(1)p Fq(;)8 -b(:::;)1800 887 y Fr(~)1788 899 y Fq(K)s Fr(\))p Fq(:)81 -b Fr(\(2\))1143 1048 y(Then)15 b(w)o(e)g(construct)g(new)g(v)o(ectors)g -(b)o(y)f(recur-)1084 1108 y(ren)o(t)i(applying)k(\(with)e(steps)f -Fq(m)f Fr(=)g(1)p Fq(;)8 b(:)g(:)g(:)f(;)1900 1096 y -Fr(~)1887 1108 y Fq(K)t Fr(\))18 b(of)1084 1168 y(the)e(follo)o(wing)j -(transformation:)1143 1228 y(|)i Fn(if)i Fq(V)1305 1210 -y Ft(m)p Fg(\000)p Fm(1)1294 1241 y Ft(m)1406 1228 y -Fl(6)p Fr(=)g(0)g Fn(then)g(de\014ne)h Fq(k)1799 1235 -y Ft(m)1855 1228 y Fn(by)f(\014rst)1084 1289 y(nonzer)n(o)17 -b(c)n(o)n(e\016cient)i(in)e Fq(V)1594 1271 y Ft(m)p Fg(\000)p -Fm(1)1582 1301 y Ft(m)1690 1289 y Fn(and)g(let)1209 1399 -y Fq(V)1248 1378 y Ft(m)1237 1411 y(k)1295 1399 y Fl(\021)d -Fq(V)1387 1378 y Ft(m)p Fg(\000)p Fm(1)1376 1411 y Ft(k)1465 -1399 y Fq(;)106 b(k)15 b Fr(=)f(1)p Fq(;)8 b(:)g(:)g(:)g(;)g(k)1836 -1406 y Ft(m)1870 1399 y Fr(;)1109 1544 y Fq(V)1148 1524 -y Ft(m)1137 1557 y(k)1195 1544 y Fl(\021)14 b Fq(V)1287 -1524 y Ft(m)p Fg(\000)p Fm(1)1276 1557 y Ft(k)1371 1544 -y Fl(\000)1429 1491 y Ft(m)1415 1503 y Fi(X)1417 1594 -y Ft(i)p Fm(=1)1488 1507 y Fq(\013)1519 1487 y Ft(m)p -Fg(\000)p Fm(1)1519 1520 y Ft(k)q(j)1552 1525 y Fj(i)p -1488 1533 110 2 v 1488 1580 a Fq(\013)1519 1559 y Ft(m)p -Fg(\000)p Fm(1)1519 1592 y Ft(k)1537 1597 y Fj(i)1550 -1592 y Ft(j)1564 1597 y Fj(i)1602 1544 y Fq(V)1642 1524 -y Ft(m)p Fg(\000)p Fm(1)1630 1557 y Ft(k)1648 1562 y -Fj(i)1720 1544 y Fq(;)22 b(k)16 b(>)d(k)1873 1551 y Ft(m)1907 -1544 y Fr(;)25 b(\(3\))1084 1672 y(|)16 b Fn(if)h Fq(V)1235 -1654 y Ft(m)p Fg(\000)p Fm(1)1224 1684 y Ft(m)1328 1672 -y Fr(=)c(0)18 b Fn(then)h Fq(V)1569 1654 y Ft(m)1558 -1684 y(k)1616 1672 y Fl(\021)14 b Fq(V)1708 1651 y Ft(m)p -Fg(\000)p Fm(1)1697 1685 y Ft(k)1786 1672 y Fn(.)1143 -1732 y Fr(As)g(a)g(result,)h(w)o(e)e(ha)o(v)o(e)h(a)g(set)g(of)g -(nonzero)h(v)o(ec-)1084 1792 y(tors)g Fq(V)1219 1767 -y Fm(\()p Ft(K)r Fm(\))1208 1805 y Ft(k)1295 1792 y Fr(whic)o(h)f(span) -h(the)f(subspace)h Fp(K)p Fr(.)20 b(Note)1084 1859 y(that)13 -b(all)h(nonzero)e(v)o(ectors)g Fq(V)1628 1834 y Fm(\()p -Ft(K)r Fm(\))1617 1872 y Ft(k)1702 1859 y Fr(are)h(linearly)h(in-)1084 -1920 y(dep)q(enden)o(t.)30 b(Indeed,)19 b(let)g(us)h(reorder)f(the)g -(unit)1084 1980 y(v)o(ectors)1187 2090 y(\()p Fq(e)1229 -2097 y Fm(1)1248 2090 y Fq(;)8 b(:)g(:)g(:)g(;)g(e)1381 -2097 y Ft(n)p Fm(!)1413 2090 y Fr(\))14 b Fl(\000)-8 -b(!)13 b Fr(\()p Fq(e)1582 2097 y Ft(j)1596 2102 y Fk(1)1616 -2090 y Fq(;)8 b(:)g(:)g(:)f(;)h(e)1748 2097 y Ft(j)1762 -2101 y Fj(m)1793 2090 y Fq(;)g(:)g(:)g(:)o Fr(\))p Fq(:)1084 -2208 y Fr(Then)24 b(the)g(v)o(ectors)g Fq(V)1524 2183 -y Fm(\()p Ft(K)r Fm(\))1513 2221 y Ft(k)1610 2208 y Fr(with)h -Fq(k)k Fl(\025)e Fq(k)1874 2215 y Ft(m)1932 2208 y Fr(will)1084 -2268 y(ha)o(v)o(e)17 b(zero)h(pro)s(jections)h(on)o(to)g(the)f(unit)h -(v)o(ectors)1084 2328 y Fq(e)1107 2335 y Ft(j)1121 2340 -y Fj(i)1148 2328 y Fr(\()p Fq(i)13 b(<)h(m)p Fr(\).)19 -b(In)12 b(other)g(w)o(ords,)g(the)g(set)f Fq(V)1864 2303 -y Fm(\()p Ft(K)r Fm(\))1852 2341 y Ft(k)1937 2328 y Fr(has)1084 -2389 y(a)16 b("triangle")i(form)e(in)g(this)h(reordered)e(basis.)22 -b(It)1084 2449 y(is)16 b(eviden)o(t)f(that)h(a)f(n)o(um)o(b)q(er)g(of)h -(nonzero)g(v)o(ectors)1084 2509 y Fq(V)1123 2484 y Fm(\()p -Ft(K)r Fm(\))1112 2522 y Ft(k)1205 2509 y Fr(is)21 b(equal)g(to)g -Fq(K)k Fr(-)20 b(the)h(dimension)g(of)g(the)1084 2569 -y Fp(S-I-D)15 b Fr(subspace)i Fp(K)p Fr(.)1143 2629 y(W)l(e)g(ha)o(v)o -(e)g(made)g(some)g(optimization)j(in)e(ad-)1084 2690 -y(dition)g(to)e(the)g(transformation)i(\(3\):)1051 2827 -y(4)p eop -%%Page: 5 5 -5 4 bop 177 154 a Fn(on)26 b(e)n(ach)g(step)h Fq(m)e -Fn(al)r(l)i(alr)n(e)n(ady)e(c)n(onstructe)n(d)118 214 -y(nonzer)n(o)18 b(ve)n(ctors)g Fq(V)505 188 y Fm(\()p -Ft(K)r Fm(\))493 226 y Ft(k)511 231 y Fj(i)584 214 y -Fn(\()p Fq(i)d(<)f(m)p Fn(\))k(ar)n(e)f(impr)n(ove)n(d)118 -274 y(by)h(the)g(fol)r(lowing)h(tr)n(ansformation)p Fr(:)196 -452 y Fq(V)236 431 y Ft(m)224 464 y(k)242 469 y Fj(i)283 -452 y Fl(!)14 b Fq(V)386 431 y Ft(m)375 464 y(k)393 469 -y Fj(i)430 452 y Fl(\000)493 415 y Fq(\013)524 397 y -Ft(m)524 427 y(k)542 432 y Fj(i)556 427 y Ft(j)570 431 -y Fj(m)p 485 440 125 2 v 485 486 a Fq(\013)516 469 y -Ft(m)516 499 y(k)534 503 y Fj(m)564 499 y Ft(j)578 503 -y Fj(m)614 452 y Fq(V)654 431 y Ft(m)642 464 y(k)660 -468 y Fj(m)692 452 y Fq(;)57 b(i)14 b(<)f(m:)78 b Fr(\(4\))177 -588 y(Suc)o(h)16 b(optimization)j(do)q(esn't)e(sp)q(oil)i(the)d("tri-) -118 648 y(angle")23 b(structure)d(and)i(v)o(ectors)e -Fq(V)797 630 y Ft(k)786 661 y(i)840 648 y Fr(with)h Fq(k)j(<)118 -709 y(k)143 716 y Ft(m)194 709 y Fr(will)c(ha)o(v)o(e)d(zero)g(pro)s -(jections)i(on)o(to)f(the)g(unit)118 769 y(v)o(ectors)i -Fq(e)311 776 y Ft(j)350 769 y Fr(with)i Fq(j)j Fr(=)d -Fq(j)591 776 y Fm(1)611 769 y Fq(;)8 b(:::;)g(j)717 776 -y Ft(m)p Fg(\000)p Fm(1)794 769 y Fr(.)36 b(Th)o(us,)22 -b(w)o(e)118 837 y(conclude)12 b(that)f(eac)o(h)g(v)o(ector)g -Fq(V)700 812 y Fm(\()p Ft(K)r Fm(\))689 850 y Ft(k)773 -837 y Fr(has)h(not)g(more)118 898 y(then)k(\()p Fq(n)p -Fr(!)11 b Fl(\000)g Fq(K)t Fr(\))16 b(nonzero)h(comp)q(onen)o(ts.)118 -1041 y Fd(3.3)66 b(Subspace)25 b(of)f(canonical)i(ele-)271 -1116 y(men)n(ts)118 1208 y Fr(Let)21 b(us)g(consider)g(an)g(arbitrary)h -(v)o(ector,)e(desig-)118 1268 y(nated)d(b)q(elo)o(w)g(as)365 -1398 y Fq(A)402 1377 y Fm(0)435 1398 y Fl(\021)d Fq(A)f -Fr(=)605 1344 y Ft(n)p Fm(!)591 1357 y Fi(X)590 1448 -y Ft(j)r Fm(=1)660 1398 y Fq(a)686 1377 y Fm(0)686 1410 -y Ft(i)716 1398 y Fl(\001)e Fq(e)764 1405 y Ft(j)782 -1398 y Fq(;)118 1544 y Fr(and)22 b(recurren)o(tly)e(apply)i(\()p -Fq(m)g Fr(=)h(1)p Fq(;)8 b(:)g(:)g(:)f(;)h(K)t Fr(\))21 -b(the)118 1604 y(follo)o(wing)e(transformation:)151 1794 -y Fq(A)188 1774 y Ft(m)235 1794 y Fl(\021)13 b Fq(A)324 -1774 y Ft(m)p Fg(\000)p Fm(1)413 1794 y Fl(\000)478 1758 -y Fq(a)504 1737 y Ft(m)p Fg(\000)p Fm(1)504 1769 y Ft(j)518 -1773 y Fj(m)p 468 1783 V 468 1830 a Fq(\013)499 1809 -y Ft(m)p Fg(\000)p Fm(1)499 1842 y Ft(k)517 1846 y Fj(m)547 -1842 y Ft(j)561 1846 y Fj(m)598 1794 y Fq(V)637 1769 -y Fm(\()p Ft(K)r Fm(\))626 1807 y Ft(k)644 1811 y Fj(m)712 -1794 y Fr(=)779 1740 y Ft(n)p Fm(!)765 1753 y Fi(X)764 -1844 y Ft(j)r Fm(=1)834 1794 y Fq(a)860 1774 y Ft(m)860 -1806 y(j)893 1794 y Fq(e)916 1801 y Ft(j)933 1794 y Fq(:)33 -b Fr(\(5\))177 1937 y(It)16 b(is)h(easy)f(to)g(see)g(that)g(this)h -(linear)g(transfor-)118 1998 y(mation)g(has)g(the)f(follo)o(wing)j -(prop)q(erties:)191 2106 y({)25 b(it)19 b(shifts)g(the)f(v)o(ector)f -Fq(A)h Fr(along)i(the)d(plane)240 2166 y(parallel)h(to)e -Fp(K)p Fr(.)21 b(\()p Fn(So)c Fq(A)f Fn(and)h Fq(A)823 -2148 y Ft(K)r Fm(+1)919 2166 y Fn(c)n(orr)n(e-)240 2226 -y(sp)n(ond)g(to)h(e)n(qual)g(tensor)g(expr)n(essions)p -Fr(\);)191 2326 y({)25 b(v)o(ector)13 b Fq(A)421 2308 -y Ft(K)r Fm(+1)514 2326 y Fr(has)i(zero)f(pro)s(jections)h(on)o(to)240 -2386 y(unit)i(v)o(ectors)f Fq(e)532 2393 y Ft(j)566 2386 -y Fr(with)h Fq(j)g Fr(=)c Fq(j)785 2393 y Fm(1)805 2386 -y Fq(;)8 b(:)g(:)g(:)g(;)g(j)935 2393 y Ft(K)985 2386 -y Fr(;)191 2486 y({)25 b Fq(A)277 2468 y Ft(K)r Fm(+1)370 -2486 y Fr(=)13 b(0)66 b(i\013)g Fq(A)13 b Fl(2)h Fp(K)p -Fq(:)177 2594 y Fr(Th)o(us,)i(w)o(e)g(conclude)h(that)f -Fl(8)p Fq(A)c Fl(2)i Fp(R)859 2576 y Ft(n)p Fm(!)892 -2594 y Fr(:)191 2702 y Fl(\017)24 b Fq(A)277 2684 y Ft(K)r -Fm(+1)370 2702 y Fr(=)13 b Fq(A)458 2684 y Fg(0)470 2679 -y Ft(K)r Fm(+1)565 2702 y Fr(i\013)k(\()p Fq(A)11 b Fl(\000)g -Fq(A)777 2684 y Fg(0)788 2702 y Fr(\))j Fl(2)g Fp(K)p -Fr(;)1156 154 y Fl(\017)25 b Fr(transformation)13 b(\(5\))g(do)q(esn't) -f(shift)g Fq(A)1915 136 y Ft(K)r Fm(+1)1994 154 y Fr(;)1156 -250 y Fl(\017)25 b Fr(image)32 b(of)g(the)g(transformation)i(\(5\))e -(is)1206 310 y(some)23 b(linear)h(subspace)f Fp(L)g Fr(with)h(dimen-) -1206 370 y(sion)17 b(\()p Fq(n)p Fr(!)11 b Fl(\000)g -Fq(K)t Fr(\))16 b(and)h Fp(L)11 b Fl(\\)g Fp(K)j Fr(=)f -Fl(f)p Fr(0)p Fl(g)1876 352 y Fm(4)1896 370 y Fr(;)1156 -467 y Fl(\017)25 b Fr(ev)o(ery)18 b(v)o(ector)h(in)i -Fp(L)f Fr(has)h(not)g(more)e(than)1206 527 y(\()p Fq(n)p -Fr(!)10 b Fl(\000)h Fq(K)t Fr(\))16 b(nonzero)h(comp)q(onen)o(ts.)1143 -620 y Fp(W)-5 b(e)24 b(de\014ne)f(the)h(subspace)g(L)g(as)g(a)g(set) -1084 680 y(of)32 b(canonical)h(representativ)n(es)e(for)h(S-I-)1084 -740 y(D)20 b(equiv)m(alence)g(classes)h(under)f(consider-)1084 -800 y(ation)p Fr(.)1084 964 y Fy(4)81 b(Multiplication)1084 -1074 y Fr(If)25 b(a)i(tensor)f(expression)h(is)f(obtained)i(b)o(y)d -(the)1084 1134 y(m)o(ultiplication)e(of)f(basic)f(tensors)h(then)f(w)o -(e)f(di-)1084 1194 y(rectly)14 b(generate)g(the)g(set)g(of)h -Fp(S-I-D)e Fr(relations)j(as)1084 1254 y(a)g Fn(pr)n(o)n(duct)g -Fr(of)g(basic)h(ones.)1143 1314 y(Then)22 b(the)g(expression)h(is)g -(elab)q(orated,)i(tak-)1084 1375 y(ing)d(in)o(to)g(accoun)o(t)f -(additional)j(relations)f(origi-)1084 1435 y(nated)f(from)f(the)h(m)o -(ultiplication)i(rule)e(\(in)g(our)1084 1495 y(case)c(from)g(the)g -(comm)o(utativit)o(y\).)27 b(Let)19 b(us)f(con-)1084 -1555 y(sider)g(a)g(tensor)g Fq(tt)f Fr(with)i(t)o(w)o(o)f(indices)g(as) -h(an)f(ex-)1084 1615 y(ample.)42 b(If)22 b(w)o(e)h(m)o(ultiply)h(it)f -(b)o(y)g(itself,)i(sa)o(y)e(as)1084 1676 y Fq(tt)p Fr(\()p -Fq(i;)8 b(j)s Fr(\))r Fl(\003)r Fq(tt)p Fr(\()p Fq(k)r(;)g(l)q -Fr(\),)h(the)j(additional)j(symmetry)10 b(ap-)1084 1736 -y(p)q(ears:)1187 1827 y Fq(tt)p Fr(\()p Fq(i;)e(j)s Fr(\))i -Fl(\003)h Fq(tt)p Fr(\()p Fq(k)r(;)d(l)q Fr(\))k(=)i -Fq(tt)p Fr(\()p Fq(k)r(;)8 b(l)q Fr(\))i Fl(\003)h Fq(tt)p -Fr(\()p Fq(i;)d(j)s Fr(\))p Fq(:)1143 1919 y Fr(W)l(e)23 -b(consider)h(all)h(suc)o(h)f(p)q(erm)o(utations)g(and)1084 -1979 y(add)17 b(the)e(corresp)q(onding)k(elemen)o(ts)c(to)i(the)f -Fp(S-I-)1084 2039 y(D)21 b Fr(relations.)36 b(Then)21 -b(w)o(e)g(p)q(erform)g(the)f("trian-)1084 2099 y(gle")c(pro)q(cedure)g -(\(3,4\))f(to)h(construct)f(the)h(full)g Fp(K)1084 2159 -y Fr(subspace,)g(and)g(use)g(the)f(pro)q(cedure)h(\(5\))g(for)g(the) -1084 2220 y(canonical)i(represen)o(tativ)o(e)d(calculation)1839 -2202 y Fm(5)1861 2220 y Fr(.)p 1084 2258 370 2 v 1140 -2289 a Fh(4)1158 2304 y Fv(Here)g FA(f)p Fv(0)p FA(g)d -Fv(means)i(that)f(this)h(set)g(has)g(a)e(single)j(p)q(oin)o(t)1084 -2354 y(-)e(zero)i(v)o(ector.)1140 2388 y Fh(5)1158 2403 -y Fv(It)k(is)g(clear)h(ho)o(w)e(to)h(generalize)i(the)e(algorithm)g(to) -1084 2453 y(the)12 b(case)g(of)f(a)g(noncomm)o(utativ)o(e)g(\014nite)h -(algebra)g(of)f(basic)1084 2503 y(tensors.)25 b(In)16 -b(suc)o(h)g(cases,)i(more)d(complicated)j(relations)1084 -2553 y(will)c(app)q(ear)f(instead)h(of)e(the)h(simple)h(symmetry)f -(written)1084 2603 y(ab)q(o)o(v)o(e.)37 b(Ho)o(w)o(ev)o(er,)22 -b(in)f(an)o(y)f(case)h(they)g(will)h(b)q(e)f(linear)1084 -2652 y(iden)o(tities)c(whic)o(h)f(can)f(b)q(e)g(elab)q(orated)h -(naturally)f(in)g(the)1084 2702 y(framew)o(ork)e(of)g(our)h(approac)o -(h.)1051 2827 y Fr(5)p eop -%%Page: 6 6 -6 5 bop 118 154 a Fy(5)81 b(Some)26 b(de\014nitions)118 -263 y Fr(Let)14 b(us)g(giv)o(e)g(some)f(de\014nitions)j(whic)o(h)e(w)o -(e)f(use)h(in)118 323 y(the)i(follo)o(wing.)178 425 y(1.)24 -b Fp(K)p Fr(-)p Fn(b)n(asis)19 b Fr(is)i(a)f(general)g(name)g(for)g -("trian-)240 485 y(gle")f(set)f(of)g(linear)i(indep)q(enden)o(t)e(v)o -(ectors)240 545 y Fq(V)279 520 y Fm(\()p Fc(K)p Fm(\))268 -558 y Ft(k)357 545 y Fr(\()p Fq(k)e Fr(=)d Fq(k)493 552 -y Fm(1)514 545 y Fq(;)8 b(:)g(:)g(:)f(;)h(k)648 552 y -Ft(K)682 545 y Fr(\).)178 647 y(2.)24 b Fp(K)284 654 -y Fc(0)306 647 y Fr(-)p Fn(b)n(asis)12 b Fr(is)h(the)e -Fp(K)p Fr(-basis)j(for)e(a)g(basic)h(ten-)240 707 y(sor)h(considered)f -(as)h(a)g(separate)f(tensor)h(ex-)240 767 y(pression,)k(taking)f(in)o -(to)g(accoun)o(t)g(its)g(sym-)240 828 y(metries)f(and)h(linear)g(iden)o -(tities)h(only)l(.)178 929 y(3.)24 b Fp(K)284 936 y Fc(M)324 -929 y Fr(-)p Fn(b)n(asis)14 b Fr(is)h(the)f Fp(K)p Fr(-)p -Fn(b)n(asis)g Fr(of)g(the)g(expres-)240 990 y(sion)20 -b(under)e(consideration)i(whic)o(h)f(arises)240 1050 -y(from)14 b Fp(K)397 1057 y Fc(0)419 1050 y Fr(-)p Fn(b)n(ases)g -Fr(of)h(basic)f(tensors)h(and)f(re-)240 1110 y(lations)21 -b(generated)d(b)o(y)g(their)h(m)o(ultiplica-)240 1170 -y(tion.)178 1272 y(4.)24 b Fp(K)284 1279 y Fc(D)317 1272 -y Fr(-)p Fn(b)n(asis)11 b Fr(is)h(the)g(completion)g(of)f(the)h -Fp(K)986 1279 y Fc(M)1026 1272 y Fr(-)240 1332 y Fn(b)n(asis)28 -b Fr(up)h(to)h(the)e(full)i Fp(K)p Fr(-)p Fn(b)n(asis)e -Fr(of)h(the)240 1392 y(expression)e(under)f(consideration,)k(tak-)240 -1452 y(ing)19 b(in)o(to)f(accoun)o(t)f(relations)j(whic)o(h)d(arise)240 -1513 y(from)32 b(renamings)i(of)f(dumm)o(y)e(indices.)240 -1573 y(W)l(e)23 b(shall)i(also)g(call)g(this)f(basis)h(the)e -Fn(ful)r(l)240 1633 y Fp(K)p Fr(-)p Fn(b)n(asis)p Fr(.)178 -1735 y(5.)h(T)l(o)12 b Fn(sieve)h Fr(some)f Fp(S)f Fl(\000)g -Fp(I)g Fl(\000)g Fp(D)g Fr(v)o(ector)g(means)240 1795 -y(to)j(do)f(the)g(step)g Fq(m)g Fr(of)g(the)g("triangle")j(pro-)240 -1855 y(cedure)g(\(3\).)178 1957 y(6.)24 b(T)l(o)g Fn(r)n(e)n(arr)n -(ange)f Fr(some)h Fp(S)11 b Fl(\000)g Fp(I)g Fl(\000)f -Fp(D)24 b Fr(v)o(ector)240 2017 y(means)16 b(to)g(do)g(the)g(step)g -Fq(m)f Fr(of)h(the)g("trian-)240 2077 y(gle")h(pro)q(cedure)g(\(4\).) -178 2179 y(7.)24 b(T)l(o)c Fn(sieve)h Fr(some)e(v)o(ector)g -Fq(A)g Fr(b)o(y)g(a)g Fp(K)p Fr(-)p Fn(b)n(asis)240 2239 -y Fr(means)31 b(to)h(apply)f(the)g(transformation)240 -2299 y(\(5\).)118 2466 y Fy(6)81 b(Algorithm)118 2575 -y Fr(There)11 b(are)h(t)o(w)o(o)f(sets)h(of)g(op)q(erations.)21 -b(One)12 b(is)g(p)q(er-)118 2635 y(formed)i(due)f(to)i(the)e(in)o(tro)q -(duction)j(of)e(new)g(basic)118 2696 y(tensors,)g(and)g(the)f(result)h -(of)f(these)g(op)q(erations)i(is)1084 154 y(the)i(construction)i(of)f -(the)f(new)h Fp(K)1738 161 y Fc(0)1760 154 y Fr(-bases.)27 -b(An-)1084 214 y(other)12 b(set)g(of)h(op)q(erations)h(is)f(connected)f -(with)h(the)1084 274 y(simpli\014cation)19 b(of)d(tensor)h(expressions) -g(itself.)1143 334 y(The)g(starting)h(pro)q(cedure)f(for)g(the)g -(construc-)1084 394 y(tion)26 b(of)g Fp(K)1302 401 y -Fc(0)1325 394 y Fr(-bases)g(is)g Fq(T)7 b(S)s(Y)k(M)31 -b Fr(\(section)26 b(8.4\),)1084 455 y(and)17 b(the)f(algorithm)i(is:) -1143 569 y(1.)25 b(Generate)e(full)h(list)h(of)e Fp(S-I)g -Fr(v)o(ectors)g(\(1\):)1206 629 y Fq(L)1239 636 y Fc(S)p -Fg(\000)p Fc(I)1320 629 y Fr(=)14 b Fl(f)p Fq(v)r Fl(g)p -Fr(.)1143 731 y(2.)25 b(Let)17 b Fp(K)d Fr(=)h Fp(K)1449 -738 y Fc(0)1488 731 y Fr(where)i Fp(K)1674 738 y Fc(0)1713 -731 y Fr(is)h(initial)h(basis)1206 791 y(\(ma)o(y)c(b)q(e)i(empt)o -(y\).)1143 892 y(3.)25 b(If)15 b(the)h(list)i Fq(L)1453 -899 y Fc(S)p Fg(\000)p Fc(I)1537 892 y Fr(is)f(empt)o(y)e(then)h -(\014nish.)1143 994 y(4.)25 b(T)l(ak)o(e)30 b(the)h(next)f(v)o(ector)g -Fq(v)i Fr(from)e Fq(L)1940 1001 y Fc(S)p Fg(\000)p Fc(I)1206 -1054 y Fr(and)21 b(delete)g(it)h(from)f(this)h(list:)32 -b Fq(L)1868 1061 y Fc(S)p Fg(\000)p Fc(I)1958 1054 y -Fl(!)1206 1115 y Fq(L)1239 1122 y Fc(S)p Fg(\000)p Fc(I)1306 -1115 y Fq(=)p Fl(f)p Fq(v)r Fl(g)p Fr(.)1143 1216 y(5.)25 -b(Siev)o(e)j(the)h(v)o(ector)f Fq(v)j Fr(through)f(the)f -Fp(K)p Fr(-)1206 1276 y(basis)d(\(transformation)i(\(3\),)f(pro)q -(cedure)1206 1337 y Fq(siev)r(e)p 1321 1337 15 2 v 15 -w(pv)r Fr(,)d(section)f(7.7\).)41 b(The)23 b(result)g(is)1206 -1397 y(a)16 b(new)h(v)o(ector)e Fq(v)1519 1379 y Fg(0)1530 -1397 y Fr(.)1143 1499 y(6.)25 b(If)16 b Fq(v)1281 1480 -y Fg(0)1307 1499 y Fl(6)p Fr(=)e(0)k(then)e(insert)h -Fq(v)1674 1480 y Fg(0)1702 1499 y Fr(in)h(the)e Fp(K)p -Fr(-basis)1206 1559 y(and)21 b(rearrange)h(the)f(basis)i(\(transforma-) -1206 1619 y(tion)c(\(4\),)f(pro)q(cedure)g Fq(inser)q(t)p -1766 1619 V 17 w(pv)r Fr(,)f(section)1206 1679 y(7.7\).)1143 -1781 y(7.)25 b(Rep)q(eat)16 b(from)g(step)g(3.)1143 1895 -y(All)i Fp(K)1268 1902 y Fc(0)1290 1895 y Fr(-bases)g(are)f(stored.)25 -b(There)17 b(is)h(a)g(p)q(os-)1084 1955 y(sibilit)o(y)j(to)e(delete)g -(an)o(y)g(basic)h(tensor)f(from)g(the)1084 2015 y(list)g(of)f(tensors)g -(and)g(so)h(to)f(delete)f(its)i Fp(K)1866 2022 y Fc(0)1888 -2015 y Fr(-basis)1084 2076 y(\(section)e(8.3\).)1143 -2136 y(The)f(algorithm)i(of)f(simpli\014cation)i(of)e(tensor)1084 -2196 y(expressions)g(is:)1143 2298 y(1.)25 b(If)14 b(there)h(is)h(no)g -(m)o(ultiplication)i(of)d(tensors)1206 2358 y(or)i(there)g(are)h(no)f -(new)h Fp(S-I)f Fr(relations)i(due)1206 2418 y(to)c(their)g(m)o -(ultiplication)i(then)d(go)i(to)f(step)1206 2478 y(`)p -Fn(4)p Fr('.)1143 2580 y(2.)25 b(Expand)c(the)f Fp(K)1523 -2587 y Fc(0)1546 2580 y Fr(-bases)h(in)o(v)o(olv)o(ed)g(up)g(to)1206 -2640 y(the)13 b(necessary)h(rank)g(of)g(the)f(p)q(erm)o(utation)1051 -2827 y(6)p eop -%%Page: 7 7 -7 6 bop 240 154 a Fr(group)23 b(corresp)q(onding)i(to)d(the)g(m)o -(ultipli-)240 214 y(cation)f(of)f(basic)g(tensors)h(in)f(the)g(expres-) -240 274 y(sion)f(elab)q(orated)h(\(pro)q(cedure)d Fq(t)p -851 274 15 2 v 18 w(upr)q(ig)r(ht)p Fr(,)240 334 y(section)i(7.5\),)h -(and)f(collect)g(the)g(obtained)240 394 y(relations)i(as)e(the)g -(initial)j Fp(K)p Fr(-basis)e(of)f(the)240 455 y(considered)e -(expression.)178 556 y(3.)24 b(Complete)i(the)f Fp(K)p -Fr(-basis)i(b)o(y)e(additional)240 616 y(v)o(ectors)i(whic)o(h)g(arise) -h(from)f(the)h(m)o(ulti-)240 677 y(plication)23 b(\(see)d(section)i -(4\))f(b)o(y)f(the)g(algo-)240 737 y(rithm)14 b(of)g(the)f -Fp(K)p Fr(-basis)i(construction)g(\(see)240 797 y(ab)q(o)o(v)o(e\).)20 -b(The)12 b(result)h(is)g(the)f Fp(K)812 804 y Fc(M)852 -797 y Fr(-basis)i(for)240 857 y(the)i(expression)h(under)f -(simpli\014cation.)178 959 y(4.)24 b Fn(Dummies.)56 b -Fr(Complete)28 b(the)g Fp(K)882 966 y Fc(M)922 959 y -Fr(-basis)240 1019 y(b)o(y)19 b(v)o(ectors)g(corresp)q(onding)j(to)e -(the)f(rela-)240 1079 y(tions)26 b(whic)o(h)f(arise)g(from)f(renamings) -i(of)240 1139 y(dumm)o(y)20 b(indices)i(\(if)g(they)f(are)g(presen)o -(t\).)240 1200 y(The)g(result)h(is)g(the)f Fp(K)673 1207 -y Fc(D)706 1200 y Fr(-basis)i(-)e(the)g(full)240 1260 -y Fp(K)p Fr(-basis)d(for)f(the)f(expression)h(under)g(sim-)240 -1320 y(pli\014cation.)178 1422 y(5.)24 b(Siev)o(e)j(the)g(tensor)g -(expression)h(through)240 1482 y(the)42 b Fp(K)394 1489 -y Fc(D)427 1482 y Fr(-basis)i(\(transformation)g(\(5\),)240 -1542 y(pro)q(cedure)22 b Fq(siev)r(e)p 587 1542 V 16 -w(t)p Fr(,)h(section)g(7.7\).)39 b(The)240 1602 y(result)12 -b(is)h(the)f(construction)h(of)f(the)f(canon-)240 1663 -y(ical)17 b(represen)o(tativ)o(e)f(for)g(the)g(expression.)177 -1764 y(An)o(y)23 b Fp(K)333 1771 y Fc(M)397 1764 y Fr(and)i -Fp(K)544 1771 y Fc(D)577 1764 y Fr(-bases)g(are)f(not)g(stored)118 -1824 y(and)13 b(are)g(constructed)f(eac)o(h)g(time)h(an)g(expression) -118 1885 y(is)k(simpli\014ed.)118 2051 y Fy(7)81 b(Program)27 -b(description)118 2161 y Fr(A)l(TENSOR)19 b(program)h(consists)g(of)f -(the)g(follo)o(w-)118 2221 y(ing)e(blo)q(c)o(ks:)191 -2335 y Fl(\017)24 b Fr(in)o(terface)16 b(with)h(REDUCE)g(system;)191 -2437 y Fl(\017)24 b Fr(generator)17 b(of)f(p)q(erm)o(utations;)191 -2538 y Fl(\017)24 b Fr(p-v)o(ector)16 b(arithmetics;)191 -2640 y Fl(\017)24 b Fr(tensor)17 b(arithmetics;)1156 -154 y Fl(\017)25 b Fr(generator)j(of)f(the)g Fn(multiplic)n(ation)i -Fr(rela-)1206 214 y(tions;)1156 315 y Fl(\017)c Fr(generator)16 -b(of)h(the)f Fn(dummy)g Fr(relations;)1156 417 y Fl(\017)25 -b Fr(utilities)18 b(to)f(w)o(ork)f(with)h Fp(K)p Fr(-bases.)1084 -562 y Fd(7.1)66 b(In)n(terface)22 b(with)h(REDUCE)1084 -654 y Fr(In)o(terface)14 b(with)h(REDUCE)h(is)g(implemen)o(ted)e(b)o(y) -1084 714 y(de\014ning)21 b(of)g(a)g(domain)h([10)q(].)34 -b(This)22 b(is)f(a)g(natu-)1084 774 y(ral)f(w)o(a)o(y)e(to)i(implemen)o -(t)e(a)i(new)e(ob)s(ject)h(in)h(RE-)1084 835 y(DUCE.)g(W)l(e)f(should)j -(de\014ne)d(the)h(follo)o(wing)j(set)1084 895 y(of)16 -b(pro)q(cedures:)p 1084 969 906 2 v 1083 1026 2 57 v -1109 1009 a Fx(Op)q(eration)p 1334 1026 V 49 w(In)o(ternal)f(pro)q(c.)p -1655 1026 V 50 w(Commen)o(t)p 1988 1026 V 1084 1027 906 -2 v 1083 1084 2 57 v 1109 1067 a(min)o(us)p 1334 1084 -V 131 w(t)p 1380 1067 14 2 v 16 w(min)o(us)p 1655 1084 -2 57 v 169 w(Unary)g(min)o(us)p 1988 1084 V 1083 1140 -V 1109 1123 a(plus)p 1334 1140 V 169 w(t)p 1380 1123 -14 2 v 16 w(plus)p 1655 1140 2 57 v 207 w(Summ)p 1988 -1140 V 1083 1197 V 1109 1180 a(times)p 1334 1197 V 142 -w(t)p 1380 1180 14 2 v 16 w(times)p 1655 1197 2 57 v -180 w(Pro)q(duct)p 1988 1197 V 1083 1253 V 1109 1236 -a(di\013erence)p 1334 1253 V 62 w(t)p 1380 1236 14 2 -v 16 w(di\013erence)p 1655 1253 2 57 v 100 w(Substruction)p -1988 1253 V 1083 1310 V 1109 1293 a(zerop)p 1334 1310 -V 144 w(t)p 1380 1293 14 2 v 16 w(zerop)p 1655 1310 2 -57 v 182 w(Do)q(es)g(tensor)p 1988 1310 V 1083 1366 V -1334 1366 V 1655 1366 V 1681 1349 a(equal)g(zero?)p 1988 -1366 V 1084 1368 906 2 v 1083 1424 2 57 v 1109 1407 a(prepfn)p -1334 1424 V 123 w(t)p 1380 1407 14 2 v 16 w(prep)p 1655 -1424 2 57 v 1988 1424 V 1083 1481 V 1109 1464 a(prifn)p -1334 1481 V 155 w(t)p 1380 1464 14 2 v 16 w(pri)p 1655 -1481 2 57 v 232 w(Prin)o(t)f(function)p 1988 1481 V 1083 -1537 V 1109 1520 a(in)o(tequiv)p 1334 1537 V 89 w(tin)o(tequiv)p -1655 1537 V 143 w(Is)h(tensor)g(equi-)p 1988 1537 V 1083 -1594 V 1334 1594 V 1655 1594 V 1681 1577 a(v)m(alen)o(t)g(to)p -1988 1594 V 1083 1650 V 1334 1650 V 1655 1650 V 1681 -1633 a(in)o(teger)p 1988 1650 V 1084 1652 906 2 v 1143 -1750 a Fr(The)h(follo)o(wing)k(pro)q(cedures)c(m)o(ust)h(b)q(e)f -(de\014ne)1084 1810 y(for)e(completeness)h(but)f(can)h(not)g(b)q(e)g -(used)f(as)h(op-)1084 1870 y(erations)j(for)g(tensors.)25 -b(These)17 b(pro)q(cedures)g(pro-)1084 1930 y(duce)f(an)g(error)h -(message)f(if)h(called.)1051 2827 y(7)p eop -%%Page: 8 8 -8 7 bop 118 105 918 2 v 117 162 2 57 v 143 145 a Fx(Op)q(eration)p -368 162 V 50 w(In)o(ternal)15 b(pro)q(c.)p 690 162 V -49 w(Commen)o(t)p 1035 162 V 118 164 918 2 v 117 220 -2 57 v 143 203 a(expt)p 368 220 V 164 w(t)p 415 203 14 -2 v 16 w(expt)p 690 220 2 57 v 200 w(P)o(o)o(w)o(er)p -1035 220 V 117 276 V 143 260 a(quotien)o(t)p 368 276 -V 86 w(t)p 415 260 14 2 v 16 w(quotien)o(t)p 690 276 -2 57 v 1035 276 V 117 333 V 143 316 a(divide)p 368 333 -V 131 w(t)p 415 316 14 2 v 16 w(divide)p 690 333 2 57 -v 1035 333 V 117 389 V 143 372 a(gcd)p 368 389 V 183 -w(t)p 415 372 14 2 v 16 w(gcd)p 690 389 2 57 v 219 w(Great)f(common)p -1035 389 V 117 446 V 368 446 V 690 446 V 715 429 a(divider)p -1035 446 V 117 502 V 143 485 a(min)o(usp)p 368 502 V -107 w(t)p 415 485 14 2 v 16 w(min)o(usp)p 690 502 2 57 -v 143 w(Is)i(tensor)p 1035 502 V 117 559 V 368 559 V -690 559 V 715 542 a(negativ)o(e?)p 1035 559 V 117 615 -V 143 598 a(onep)p 368 615 V 158 w(t)p 415 598 14 2 v -16 w(onep)p 690 615 2 57 v 194 w(Do)q(es)f(tensor)p 1035 -615 V 117 672 V 368 672 V 690 672 V 715 655 a(equal)g(1?)p -1035 672 V 117 728 V 143 711 a(i2d)p 368 728 V 190 w(i2tensor)p -690 728 V 163 w(T)l(ransform)p 1035 728 V 117 785 V 368 -785 V 690 785 V 715 768 a(in)o(teger)p 1035 785 V 117 -841 V 368 841 V 690 841 V 715 824 a(to)g(tensor)p 1035 -841 V 118 843 918 2 v 177 937 a(W)l(e)59 b(also)f(de\014ne)i(the)f -(domain)e(name)118 994 y(\()p Fu(T)6 b(E)s(N)f(S)s(O)q(R)p -Fx(\))12 b(and)k(the)f(tag)f(\(!)5 b(:)g Fu(T)h(E)s(N)f(S)s(O)q(R)p -Fx(\).)177 1050 y(T)l(o)21 b(complete)f(the)h(in)o(terface)g(with)g -(REDUCE,)118 1107 y(w)o(e)h(add)h(the)f(tag)g(of)g(the)g(tensor)g -(domain)f(to)h(the)118 1163 y(global)14 b(v)m(ariable)h -Fu(D)q(O)q(M)5 b(AI)t(N)g(LI)t(S)s(T)h Fx(!)-8 b Fs(\003)177 -1220 y Fx(This)17 b(metho)q(d)g(supp)q(orts)h(the)g(input)g(pro)q(cess) -g(of)118 1276 y(tensor)11 b(expressions)h(and)g(pro)o(vides)f(calls)f -(of)i(the)f(cor-)118 1333 y(resp)q(onding)16 b(in)o(ternal)e(pro)q -(cedures)i(automatical)o(ly)l(.)118 1471 y Fd(7.2)66 -b(P)n(erm)n(utations)118 1557 y Fx(This)15 b(blo)q(c)o(k)h(implemen)o -(ts)d(generation)i(of)g(p)q(erm)o(uta-)118 1613 y(tions)f(of)g -Fu(N)19 b Fx(order)14 b(and)g(includes)h(some)e(pro)q(cedures)118 -1669 y(for)20 b(w)o(orking)g(with)g(them.)36 b(All)20 -b(pro)q(cedures)i(w)o(ork)118 1726 y(with)15 b(the)g -Fz(p)n(acke)n(d)g Fx(and)h(the)f Fz(unp)n(acke)n(d)g -Fx(form)f(of)h(p)q(er-)118 1782 y(m)o(utations.)177 1839 -y Fz(Unp)n(acke)n(d)i Fx(form)f(of)h(a)h(p)q(erm)o(utation)e(p)i(is)f -(a)g(list)118 1895 y(of)e(n)o(um)o(b)q(ers)339 1879 y -Fm(6)358 1895 y Fx(:)221 1996 y Fu(p)e Fx(=)g(\()p Fu(d)347 -2003 y Fm(1)379 1996 y Fu(d)403 2003 y Fm(2)435 1996 -y Fu(:::)e(d)509 2003 y Ft(k)530 1996 y Fx(\))p Fu(;)52 -b Fx(1)13 b Fs(\024)g Fu(d)721 2003 y Ft(i)747 1996 y -Fs(\024)g Fu(k)h Fs(\024)f Fx(99)p Fu(:)177 2097 y Fz(Packe)n(d)i -Fx(form)e(is)i(the)g(corresp)q(onding)h(n)o(um)o(b)q(er:)447 -2198 y Fu(p)d Fx(=)g Fu(d)555 2205 y Fm(1)574 2198 y -Fu(d)598 2205 y Fm(2)618 2198 y Fu(:::d)681 2205 y Ft(k)700 -2198 y Fu(:)177 2299 y Fx(F)l(or)i(example,)206 2400 -y Fu(p)e Fx(=)g(\(1)f(2)g(3)h(4)f(5\))90 b(and)h Fu(p)13 -b Fx(=)g(12345)p Fu(:)177 2501 y Fx(The)20 b(transformati)o(on)c(of)j -(a)g(p)q(erm)o(utation)e(from)118 2558 y(one)26 b(form)e(to)h(another)h -(is)f(made)g(automaticall)o(y)l(.)118 2614 y(The)12 b(pac)o(k)o(ed)f -(form)e(is)i(more)f(economic)g(with)h(resp)q(ect)p 118 -2657 370 2 v 174 2687 a Fh(6)193 2702 y Fv(see)k(section)h(9)d(for)h -(details.)1084 154 y Fx(to)c(computer)g(memory)l(,)f(but)h(requires)h -(more)e(time)g(to)1084 210 y(pro)q(ceed.)19 b(There)12 -b(is)f(the)h(global)e(v)m(ariable)h(!)-5 b Fs(\003)g -Fu(ppack)q(ed)p Fx(.)1084 267 y(If)16 b(it)f(is)h Fu(T)22 -b Fx(\(the)15 b(default)h(v)m(alue\))g(then)g(all)f(p)q(erm)o(uta-)1084 -323 y(tions)h(are)h(pac)o(k)o(ed;)h(if)f Fu(N)5 b(I)t(L)16 -b Fx(then)i(they)f(are)g(stored)1084 379 y(in)e(the)g(unpac)o(k)o(ed)h -(form.)1143 436 y(W)l(e)e(use)h(the)g(w)o(ell)f(kno)o(wn)g(algorithm)e -(for)i(gener-)1084 492 y(ation)h(of)h(p)q(erm)o(utations)e([12].)23 -b(W)l(e)16 b(implemen)o(t)e(the)1084 549 y(follo)o(wing)f(pro)q -(cedures:)1159 642 y Fs(\017)24 b Fu(mk)q(unitp)p Fx(\()p -Fu(n)p Fx(\))12 b({)g(generates)g(the)h(unit)f(elemen)o(t)1206 -699 y(of)i Fu(S)1285 706 y Ft(n)1309 699 y Fx(;)1159 -789 y Fs(\017)24 b Fu(pf)5 b(ind)p Fx(\()p Fu(p)1364 -796 y Fm(1)1383 789 y Fu(;)j(p)1427 796 y Fm(2)1445 789 -y Fx(\))15 b({)h(returns)f Fu(x)g Fx(suc)o(h)h(that)f -Fu(p)1940 796 y Fm(2)1973 789 y Fx(=)1206 845 y Fu(x)10 -b Fs(\016)g Fu(p)1298 852 y Fm(1)1317 845 y Fx(;)1159 -935 y Fs(\017)24 b Fu(pr)q(ev)r Fx(\()p Fu(p)p Fx(\))15 -b({)h(returns)g(rev)o(erse)g(p)q(erm)o(utation)f Fu(x)1206 -992 y Fx(suc)o(h)g(that)g Fu(x)10 b Fs(\016)g Fu(p)i -Fx(=)h(1;)1159 1082 y Fs(\017)24 b Fu(psig)r(n)p Fx(\()p -Fu(p)p Fx(\))14 b({)g(returns)i(\()p Fs(\000)p Fx(1\))1679 -1066 y Ft(k)1699 1082 y Fx(,)f(where)h Fu(k)g Fx(is)f(the)1206 -1139 y(n)o(um)o(b)q(er)g(of)h(transp)q(ositions)f(whic)o(h)h(are)g -(nec-)1206 1195 y(essary)g(to)g(apply)h(to)f(the)h(p)q(erm)o(utation)d -(p)j(to)1206 1251 y(get)d(the)i(iden)o(tical)e(p)q(erm)o(utation.)1159 -1342 y Fs(\017)24 b Fu(pmul)q(t)p Fx(\()p Fu(p)1367 1349 -y Fm(1)1386 1342 y Fu(;)8 b(p)1430 1349 y Fm(2)1448 1342 -y Fx(\))17 b({)g(returns)g(the)h(p)q(erm)o(utation)1206 -1398 y Fu(x)12 b Fx(=)h Fu(p)1315 1405 y Fm(1)1345 1398 -y Fs(\016)d Fu(p)1401 1405 y Fm(2)1420 1398 y Fx(;)1159 -1488 y Fs(\017)24 b Fu(pappl)q Fx(\()p Fu(p;)8 b(l)q -Fx(\))13 b({)k(returns)g Fu(l)g Fx(with)f(the)h(elemen)o(ts)1206 -1545 y(p)q(erm)o(uted)h(b)o(y)g Fu(p)p Fx(,)h(so)f(that)f -Fu(l)i Fx(is)f(replaced)h(b)o(y)1206 1601 y Fu(p)p Fx(\()p -Fu(l)q Fx(\).)1143 1695 y(There)g(are)h(some)e(utilities)f(to)i(w)o -(ork)f(with)h(p)q(er-)1084 1751 y(m)o(utations:)1159 -1844 y({)24 b Fu(pupr)q(ig)r(ht)p Fx(\()p Fu(p;)8 b(d)p -Fx(\))g({)i(extends)i(the)f(p)q(erm)o(utation)1206 1901 -y Fu(p)j Fs(2)g Fu(S)1315 1908 y Ft(n)1354 1901 y Fx(to)i(the)g(righ)o -(t)f(up)h(to)f(the)h(elemen)o(t)f(of)1206 1957 y Fu(S)1234 -1964 y Ft(n)p Fm(+)p Ft(d)1323 1957 y Fx(with)21 b(the)g(iden)o(tical)e -(p)q(erm)o(utation)g(of)1206 2014 y(the)d(extra)h(indices)f(\(this)g -(utilit)o(y)f(is)h(used)h(for)1206 2070 y(the)c(elab)q(oration)f(of)h -(m)o(ultiplicatio)o(n)e(of)i(basic)1206 2127 y(tensors\);)1159 -2217 y({)24 b Fu(pupl)q(ef)5 b(t)p Fx(\()p Fu(p;)j(d)p -Fx(\))15 b({)h(extends)i(the)f(p)q(erm)o(utation)1206 -2273 y Fu(p)h Fs(2)h Fu(S)1324 2280 y Ft(n)1366 2273 -y Fx(to)f(the)h(left)f(up)h(to)f(the)h(elemen)o(t)e(of)1206 -2330 y Fu(S)1234 2337 y Ft(n)p Fm(+)p Ft(d)1323 2330 -y Fx(with)k(the)g(iden)o(tical)e(p)q(erm)o(utation)g(of)1206 -2386 y(the)d(extra)h(indices)f(\(this)g(utilit)o(y)f(is)h(used)h(for) -1206 2443 y(the)c(elab)q(oration)f(of)h(m)o(ultiplicatio)o(n)e(of)i -(basic)1206 2499 y(tensors\);)1159 2589 y({)24 b Fu(pappend)p -Fx(\()p Fu(p)1412 2596 y Fm(1)1431 2589 y Fu(;)8 b(p)1475 -2596 y Fm(2)1493 2589 y Fx(\))22 b(-)f(concatenates)h(the)f(p)q(er-) -1206 2646 y(m)o(utation)12 b Fu(p)1424 2653 y Fm(1)1456 -2646 y Fs(2)h Fu(S)1527 2653 y Ft(n)1548 2658 y Fk(1)1582 -2646 y Fx(with)h(the)h(p)q(erm)o(utation)1206 2702 y -Fu(p)1229 2709 y Fm(2)1261 2702 y Fs(2)e Fu(S)1332 2709 -y Ft(n)1353 2714 y Fk(2)1372 2702 y Fx(.)19 b(Returns)12 -b(the)g(elemen)o(t)e(of)h Fu(S)1888 2709 y Ft(n)1909 -2714 y Fk(1)1927 2709 y Fm(+)p Ft(n)1975 2714 y Fk(2)1995 -2702 y Fx(;)1051 2827 y Fr(8)p eop -%%Page: 9 9 -9 8 bop 193 154 a Fx({)24 b Fu(pk)q(p)p Fx(\()p Fu(p)p -Fx(\))14 b({)h(pac)o(ks)g(the)g(p)q(erm)o(utation)f Fu(p)p -Fx(;)193 247 y({)24 b Fu(unpk)q(p)p Fx(\()p Fu(p)p Fx(\))15 -b({)f(unpac)o(ks)i(the)f(p)q(erm)o(utation)e Fu(p)p Fx(.)118 -385 y Fd(7.3)66 b(P-v)n(ectors)118 470 y Fu(P)6 b Fx(-v)o(ectors)21 -b(are)f(one)h(of)f(the)h(main)e(ob)s(jects)i(in)f(the)118 -527 y(program.)34 b(They)20 b(represen)o(t)h(the)f(v)o(ector)g(in)g -Fo(R)980 510 y Fc(n)1020 527 y Fx({)118 583 y(the)d(group)g(algebra)f -(of)g Fu(S)571 590 y Ft(n)595 583 y Fx(.)25 b(In)17 b(the)g(program)e -(they)118 640 y(are)g(implemen)o(ted)e(as)i(a)g(REDUCE)g(domain)e([10)o -(].)177 696 y(In)o(ternal)i(structure)g(of)g Fu(p)p Fx(-v)o(ector)f -(is:)118 765 y Fu(p)s Fs(\000)s Fu(v)r(ector)h Fx(::=)g(\(!)5 -b(:)g Fu(pv)13 b(:)f(p)s Fs(\000)s Fu(l)q(ist)p Fx(\))118 -821 y Fu(p)s Fs(\000)s Fu(l)q(ist)i Fx(::=)h Fu(N)5 b(I)t(L)p -Fs(j)p Fx(\()p Fu(coef)g(f)16 b(:)c(per)q(m)p Fx(\))g -Fu(:)h(p)s Fs(\000)s Fu(l)q(ist)118 877 y(coef)5 b(f)20 -b Fx(::=)15 b Fu(integ)r(er)177 946 y Fx(All)i(the)h(standard)f(op)q -(erations)g(are)g(de\014ned)i(for)118 1002 y Fu(p)p Fx(-v)o(ectors)c(b) -q(ecause)h(they)f(form)e(a)i(domain.)177 1059 y(The)d(follo)o(wing)e -(pro)q(cedures)i(are)g(used)g(for)g(tensor)118 1115 y -(simpli\014cation:)193 1219 y Fs(\017)24 b Fu(pv)p 289 -1219 14 2 v 18 w(sor)q(t)p Fx(\()p Fu(pv)r Fx(\))17 b({)h(sorts)f(the)h -Fu(p)p Fx(-list)f(so)g(that)g(all)240 1275 y(p)q(erm)o(utation)h(will)h -(b)q(e)i(ordered,)g(e.g.)34 b Fu(p)972 1282 y Ft(i)1007 -1275 y Fu(>)240 1332 y(p)263 1339 y Ft(j)294 1332 y Fs(8)13 -b Fu(i)f(<)h(j)s Fx(;)193 1425 y Fs(\017)24 b Fu(pv)p -289 1425 V 18 w(compr)q(ess)p Fx(\()p Fu(pv)r Fx(\))31 -b({)g(remo)o(v)o(es)f(all)h(terms)240 1481 y(with)15 -b(zero)g(co)q(e\016cien)o(t;)193 1574 y Fs(\017)24 b -Fu(pv)p 289 1574 V 18 w(r)q(enor)q(m)p Fx(\()p Fu(pv)r -Fx(\))14 b({)g(reduces)i(the)f(\014rst)g(co)q(e\016-)240 -1631 y(cien)o(t)g(\(in)g(in)o(teger)f(n)o(um)o(b)q(ers\),)g(i.e.)240 -1687 y Fu(pv)29 b Fs(!)f Fu(pv)r(=GC)s(D)q Fx(\()p Fu(c)606 -1694 y Fm(1)624 1687 y Fu(;)8 b(c)665 1694 y Fm(2)683 -1687 y Fu(;)g(:::)p Fx(\))22 b(where)j Fu(c)944 1694 -y Ft(i)982 1687 y Fx(are)240 1744 y(the)15 b(co)q(e\016cien)o(ts.)118 -1848 y(Some)24 b(utilities)f(are)h(a)o(v)m(ailable)g(to)g(w)o(ork)g -(with)g Fu(p)p Fx(-)118 1904 y(v)o(ectors:)193 2008 y({)g -Fu(pappl)p 351 2008 V 17 w(pv)r Fx(\()p Fu(p;)8 b(pv)r -Fx(\))23 b({)i(applies)g(the)h(p)q(erm)o(uta-)240 2064 -y(tion)14 b Fu(p)i Fx(to)e(the)h Fu(p)p Fx(-v)o(ector)g -Fu(pv)r Fx(.)240 2121 y(Returns)24 b Fu(p)444 2104 y -Fg(0)481 2121 y Fx(=)543 2089 y Fi(P)586 2132 y Ft(i)608 -2121 y Fu(c)628 2128 y Ft(i)668 2121 y Fu(pmul)q(t)p -Fx(\()p Fu(p;)8 b(p)873 2128 y Ft(i)885 2121 y Fx(\))23 -b(where)240 2177 y Fu(pv)14 b Fx(=)347 2145 y Fi(P)391 -2189 y Ft(i)413 2177 y Fu(c)433 2184 y Ft(i)459 2177 -y Fu(p)482 2184 y Ft(i)496 2177 y Fx(;)193 2270 y({)24 -b Fu(pv)p 289 2270 V 18 w(appl)q(p)p Fx(\()p Fu(pv)r(;)8 -b(v)r Fx(\))k({)k(applies)f(the)h Fu(p)p Fx(-v)o(ector)f -Fu(pv)240 2327 y Fx(to)g(the)g(p)q(erm)o(utation)e Fu(p)p -Fx(.)240 2383 y(Returns)24 b Fu(p)444 2367 y Fg(0)481 -2383 y Fx(=)543 2351 y Fi(P)586 2395 y Ft(i)608 2383 -y Fu(c)628 2390 y Ft(i)668 2383 y Fu(pmul)q(t)p Fx(\()p -Fu(p)829 2390 y Ft(i)842 2383 y Fu(;)8 b(p)p Fx(\))22 -b(where)240 2440 y Fu(pv)14 b Fx(=)347 2408 y Fi(P)391 -2451 y Ft(i)413 2440 y Fu(c)433 2447 y Ft(i)459 2440 -y Fu(p)482 2447 y Ft(i)496 2440 y Fx(;)193 2533 y({)24 -b Fu(pv)p 289 2533 V 18 w(upr)q(ig)r(ht)p Fx(\()p Fu(pv)r(;)8 -b(d)p Fx(\))13 b(-)j(expands)g(the)g Fu(p)p Fx(-v)o(ector)240 -2589 y Fu(pv)h Fx(to)d(the)i(righ)o(t.)240 2646 y(Returns)g -Fu(p)436 2629 y Fg(0)460 2646 y Fx(=)508 2614 y Fi(P)552 -2657 y Ft(i)573 2646 y Fu(c)593 2653 y Ft(i)620 2646 -y Fu(pupr)q(ig)r(ht)p Fx(\()p Fu(p)837 2653 y Ft(i)849 -2646 y Fu(;)8 b(d)p Fx(\))14 b(where)240 2702 y Fu(pv)g -Fx(=)347 2670 y Fi(P)391 2714 y Ft(i)413 2702 y Fu(c)433 -2709 y Ft(i)459 2702 y Fu(p)482 2709 y Ft(i)496 2702 -y Fx(;)1159 154 y({)24 b Fu(pv)p 1255 154 V 18 w(upl)q(ef)5 -b(t)p Fx(\()p Fu(pv)r(;)j(d)p Fx(\))g(-)i(extends)h(the)f -Fu(p)p Fx(-v)o(ector)f Fu(pv)1206 210 y Fx(to)14 b(the)i(left.)1206 -267 y(Returns)j Fu(p)1405 250 y Fg(0)1435 267 y Fx(=)1488 -234 y Fi(P)1532 278 y Ft(i)1554 267 y Fu(c)1574 274 y -Ft(i)1606 267 y Fu(pupl)q(ef)5 b(t)p Fx(\()p Fu(p)1798 -274 y Ft(i)1811 267 y Fu(;)j(d)p Fx(\))18 b(where)1206 -323 y Fu(pv)c Fx(=)1313 291 y Fi(P)1357 334 y Ft(i)1378 -323 y Fu(c)1398 330 y Ft(i)1425 323 y Fu(p)1448 330 y -Ft(i)1462 323 y Fx(.)1084 460 y Fd(7.4)66 b(T)-6 b(ensors)1084 -546 y Fx(T)l(ensors)18 b(are)g(the)h(main)e(ob)s(jects)h(in)h(the)f -(program.)1084 602 y(They)e(represen)o(t)f(tensor)g(expressions.)21 -b(In)16 b(the)g(pro-)1084 658 y(gram)c(they)i(are)g(implemen)o(ted)d -(as)j(a)g(REDUCE)g(do-)1084 715 y(main)f([10)o(].)1143 -771 y(The)i(in)o(ternal)f(structure)h(of)g(a)g(tensor)g(is:)1084 -851 y Fu(tensor)i Fx(::=)e(\(!)5 b(:)g Fu(tensor)13 b(i)s -Fs(\000)s Fu(tensor)1685 858 y Fm(1)1717 851 y Fu(:::)25 -b(i)s Fs(\000)s Fu(tensor)1966 858 y Ft(k)1987 851 y -Fx(\))1084 908 y Fu(i)s Fs(\000)s Fu(tensor)16 b Fx(::=)f(\()p -Fu(t)s Fs(\000)s Fu(header)25 b(t)s Fs(\000)s Fu(l)q(ist)p -Fx(\))1084 964 y Fu(t)s Fs(\000)s Fu(l)q(ist)15 b Fx(::=)f -Fu(N)5 b(I)t(L)12 b Fs(j)g Fu(p)s Fs(\000)s Fu(l)q(ist)g(:)g(t)s -Fs(\000)s Fu(l)q(ist)1084 1021 y(t)s Fs(\000)s Fu(header)k -Fx(::=)e(\()p Fu(t)s Fs(\000)s Fu(name)26 b(i)s Fs(\000)s -Fu(l)q(ist)p Fx(\))1084 1077 y Fu(t)s Fs(\000)s Fu(name)15 -b Fx(::=)g(\()p Fu(t)1378 1084 y Fm(1)1423 1077 y Fu(t)1439 -1084 y Fm(2)1484 1077 y Fu(:::)24 b(t)1563 1084 y Ft(k)1585 -1077 y Fx(\))1084 1134 y Fu(i)s Fs(\000)s Fu(l)q(ist)14 -b Fx(::=)h(\()p Fu(i)1333 1141 y Fm(1)1377 1134 y Fu(i)1393 -1141 y Fm(2)1437 1134 y Fu(:::)25 b(i)1517 1141 y Ft(l)1529 -1134 y Fx(\))1084 1202 y(where)19 b Fu(t)1235 1209 y -Fm(1)1255 1202 y Fu(;)8 b(t)1292 1209 y Fm(2)1311 1202 -y Fu(;)g(:::;)g(t)1408 1209 y Ft(k)1446 1202 y Fx(are)19 -b(basic)f(tensors)h(iden)o(ti\014ers,)1084 1258 y(and)c -Fu(i)1188 1265 y Fm(1)1208 1258 y Fu(;)8 b(i)1245 1265 -y Fm(2)1263 1258 y Fu(;)g(:::;)g(i)1360 1265 y Ft(l)1385 -1258 y Fx(are)15 b(indices)g(\(iden)o(ti\014ers\).)1143 -1338 y(Let)20 b(us)g(consider)h(an)f(example)f(tensor)g(expres-)1084 -1395 y(sion)e(and)h(its)f(represen)o(tation)g(in)h(the)g(in)o(ternal)f -(no-)1084 1451 y(tations.)1143 1508 y(Let)d Fu(tt)p Fx(\()p -Fu(i;)8 b(j)s Fx(\))13 b(b)q(e)i(a)f(tensor)g(of)f(second)i(order.)20 -b(The)1084 1564 y(in)o(ternal)14 b(represen)o(tation)g(is)1238 -1656 y(\(!)5 b(:)g Fu(tensor)13 b Fx(\(\(\()p Fu(tt)p -Fx(\))f(\()p Fu(i)25 b(j)s Fx(\)\))11 b(\(1)h Fu(:)h -Fx(12\)\)\))1084 1749 y(Th)o(us,)i(the)g(tensor)g(expression)1394 -1841 y Fu(tt)p Fx(\()p Fu(i;)8 b(j)s Fx(\))g(+)j Fu(tt)p -Fx(\()p Fu(j;)d(i)p Fx(\))1084 1933 y(will)14 b(ha)o(v)o(e)g(the)i(in)o -(ternal)e(represen)o(tation)1161 2025 y(\(!)5 b(:)g Fu(tensor)13 -b Fx(\(\(\()p Fu(tt)p Fx(\))f(\()p Fu(i)25 b(j)s Fx(\)\))11 -b(\(1)h Fu(:)h Fx(21\))e(\(1)h Fu(:)h Fx(12\)\)\))1143 -2117 y(The)22 b(most)f(imp)q(ortan)o(t)f(pro)q(cedures)j(from)d(this) -1084 2174 y(blo)q(c)o(k)15 b(are)g(describ)q(ed)h(b)q(ello)o(w)e(in)h -(section)g(8.)1143 2230 y(The)22 b(simpli\014cation)e(of)i(tensor)f -(expressions)h(is)1084 2287 y(p)q(erformed)16 b(b)o(y)i(the)f(function) -g Fu(t)p 1648 2287 V 17 w(simp)p Fx(.)26 b(The)17 b(result)1084 -2343 y(of)h(this)g(pro)q(cedure)h(is)f(the)h(canonical)f(form)f(of)h -(the)1084 2400 y(tensor)c(expression,)h(i.e.)k(the)d(siev)o(ed)f(v)o -(ector)f Fu(t)1895 2383 y Fg(0)1920 2400 y Fs(2)f Fo(L)p -Fx(.)1084 2536 y Fd(7.5)66 b(T)-6 b(ensor)22 b(m)n(ultipli)q(cations) -1084 2646 y Fx(The)16 b(main)f(pro)q(cedures)j(of)e(the)g(tensor)g(m)o -(ultiplica-)1084 2702 y(tion)e(blo)q(c)o(k)h(are)g(the)g(follo)o(wing:) -1051 2827 y Fr(9)p eop -%%Page: 10 10 -10 9 bop 193 154 a Fs(\017)24 b Fu(t)p 259 154 14 2 v -17 w(spl)q(it)p Fx(\()p Fu(tt)p Fx(\))e(-)g(splits)f(a)g(term)g(of)h -(the)g(tensor)240 210 y(expression)e(in)o(to)g(the)g(list)g(of)g(basic) -g(tensors)240 267 y(as)15 b(factors;)193 358 y Fs(\017)24 -b Fu(t)p 259 358 V 17 w(f)5 b(use)p Fx(\()p Fu(tf)424 -365 y Fm(1)445 358 y Fu(;)j(tf)504 365 y Fm(2)523 358 -y Fx(\))13 b(-)f(com)o(bines)g(tensor)g(factors)240 414 -y Fu(tf)278 421 y Fm(1)314 414 y Fx(and)j Fu(tf)440 421 -y Fm(2)476 414 y Fx(in)o(to)f(the)i(pro)q(duct.)21 b(This)15 -b(op)q(er-)240 470 y(ation)f(is)h(rev)o(erse)g(to)f(the)i(previous)f -(one;)193 562 y Fs(\017)24 b Fu(addmul)q(tsy)r(m)p Fx(\()p -Fu(t)528 569 y Fm(1)547 562 y Fu(;)8 b(t)584 569 y Fm(2)603 -562 y Fx(\))j(-)g(adds)h(symmetry)c(and)240 618 y(m)o(ultiterm)18 -b(linear)j(iden)o(tit)o(y)g(relations)f(gen-)240 674 -y(erated)i(b)o(y)g(the)g(m)o(ultiplicat)o(ion)d(to)i(the)h -Fo(K)p Fx(-)240 731 y(basis.)118 827 y(Some)c(utilities)f(are)i(a)o(v)m -(ailable)f(to)g(w)o(ork)h(with)f(ten-)118 884 y(sors.)193 -981 y Fs(\017)24 b Fu(t)p 259 981 V 17 w(upr)q(ig)r(ht)p -Fx(\()p Fu(tt;)8 b(th)p Fx(\))20 b(-)g(extends)h(the)g(tensor)f -Fu(tt)240 1037 y Fx(to)15 b(the)h(righ)o(t)e(with)h(resp)q(ect)h(to)f -(the)g Fu(t)p Fx(-header)240 1093 y Fu(th)p Fx(;)193 -1184 y Fs(\017)24 b Fu(t)p 259 1184 V 17 w(upl)q(ef)5 -b(t)p Fx(\()p Fu(tt;)j(th)p Fx(\))14 b(-)h(extends)g(the)f(tensor)h -Fu(tt)g Fx(to)240 1241 y(the)g(left)g(with)f(resp)q(ect)i(to)f(the)g -Fu(t)p Fx(-header)h Fu(th)p Fx(;)193 1332 y Fs(\017)24 -b Fu(t)p 259 1332 V 17 w(pr)q(i)p Fx(\()p Fu(tt)p Fx(\))e(-)g(outputs)g -(the)g(tensor)g Fu(tt)h Fx(in)f(the)240 1388 y(natural)14 -b(form.)118 1525 y Fd(7.6)66 b(Dumm)n(y)23 b(indices)118 -1611 y Fx(Dumm)o(y)13 b(relations)i(are)g(created)h(in)g(the)g(pro)q -(cess)g(of)118 1668 y(ev)m(aluation)e(of)h(a)f(tensor)h(expressions.)k -(Their)c(n)o(um-)118 1724 y(b)q(er)f(ma)o(y)d(b)q(e)j(v)o(ery)e(large)h -(and)g(unpredictable)g(in)g(ad-)118 1781 y(v)m(ance.)20 -b(Therefore)14 b(w)o(e)f(do)g(not)g(sa)o(v)o(e)g Fo(D)p -Fx(-relations)f(in)118 1837 y(con)o(trast)g(to)h Fo(S)g -Fx(and)h Fo(I)f Fx(ones.)20 b(This)13 b(leads)g(to)g(the)g(loss)118 -1894 y(of)i(time)e(but)j(sa)o(v)o(es)e(the)h(memory)l(.)177 -1950 y(During)20 b(simpli\014cation)e(of)h(tensor)h(expressions)118 -2006 y(w)o(e)k(use)h(in)o(ternal)e(names)g(for)h(indices.)47 -b(Original)118 2063 y(names)16 b(are)h(sa)o(v)o(ed)g(and)h(used)g(in)f -(the)g(I/O)h(pro)q(cess.)118 2119 y(Th)o(us,)12 b(if)f(w)o(e)g(ha)o(v)o -(e,)h(for)f(example,)g(a)g(dumm)o(y)f(index)i Fu(i)118 -2176 y Fx(\(really)h(there)h(are)f(t)o(w)o(o)g(suc)o(h)h(names)f(in)h -(the)g(expres-)118 2232 y(sion)k(considered\))h(then)h(it)e(will)f(b)q -(e)j(replaced)f(with)118 2289 y(t)o(w)o(o)14 b(in)o(ternal)g(names:)p -366 2383 V 379 2383 a Fu(nn)92 b Fx(and)p 691 2383 V -107 w Fu(mm;)118 2476 y Fx(where)22 b Fu(mm)i Fx(=)g -Fu(nn)15 b Fx(+)g(1.)39 b(The)22 b(original)e(name)h(is)118 -2533 y(stored)15 b(as)g(a)g(sp)q(ecial)g(prop)q(ert)o(y)f(of)h(the)g -(new)h(ones.)177 2589 y(The)21 b(dumm)o(y)e(blo)q(c)o(k)i(pro)q(duces)g -(relations)f(gen-)118 2646 y(erated)h(b)o(y)h(renamings)e(of)h -(dummies.)37 b(The)22 b(main)118 2702 y(pro)q(cedures)16 -b(are)f(the)g(follo)o(wing:)1159 154 y Fs(\017)24 b Fu(adddummy)r -Fx(\()p Fu(tt)p Fx(\))17 b(-)i(adds)f(the)h(new)f(relations)1206 -210 y(to)c(the)i Fo(K)p Fx(-basis;)1159 304 y Fs(\017)24 -b Fu(dl)p 1248 304 V 16 w(g)r(et)p Fx(\()p Fu(il)q Fx(\))13 -b(-)i(returns)f(the)h(list)e(of)h(dumm)o(y)f(in-)1206 -360 y(dices)i(from)e(the)j(index)f(list)f Fu(il)q Fx(;)1159 -454 y Fs(\017)24 b Fu(il)p 1240 454 V 16 w(simp)p Fx(\()p -Fu(il)q Fx(\))c(-)i(replaces)g(original)e(names)g(of)1206 -511 y(the)k(dumm)o(y)e(indices)j(with)e(their)h(in)o(ternal)1206 -567 y(names;)1159 661 y Fs(\017)g Fu(mk)p 1274 661 V -17 w(dsy)r(m)p Fx(\()p Fu(t)1430 668 y Fm(1)1450 661 -y Fx(\))16 b(-)h(returns)g(the)g(list)f(of)g(tensor)1206 -717 y(relations)11 b(with)h(c)o(hanged)h(dumm)o(y)d(indices)j(in)1206 -774 y(eac)o(h)i(pair;)1159 868 y Fs(\017)24 b Fu(mk)p -1274 868 V 17 w(ddsy)r(m)p Fx(\()p Fu(t)1454 875 y Fm(1)1473 -868 y Fx(\))13 b(-)g(returns)g(the)g(list)f(of)g(tensor)1206 -924 y(relations)h(with)h(p)q(erm)o(uted)g(pairs)g(of)g(dumm)o(y)1206 -980 y(indices.)1084 1119 y Fd(7.7)66 b(W)-6 b(orking)24 -b(with)g(K-bases)1084 1205 y Fx(This)13 b(blo)q(c)o(k)g(con)o(tains)f -(the)h(pro)q(cedures)i(for)d(w)o(orking)1084 1261 y(with)i -Fo(K)p Fx(-bases.)1143 1318 y(All)21 b Fo(K)p Fx(-bases)g(for)g(v)m -(arious)g(tensor)g(expressions)1084 1374 y(are)15 b(stored)f(as)h -(lists)f(in)h(the)g(global)f(v)m(ariable)1196 1476 y(!)s -Fs(\003)s Fu(basis)c Fx(::=)j(\()p Fu(k)t Fs(\000)s Fu(basis)1610 -1483 y Fm(1)1641 1476 y Fu(k)t Fs(\000)s Fu(basis)1809 -1483 y Fm(2)1841 1476 y Fu(:::)p Fx(\))1084 1578 y(The)i(structure)g -(of)g(the)g(basis)g(is:)1223 1680 y Fu(k)t Fs(\000)s -Fu(basis)d Fx(::=)g(\()p Fu(t)s Fs(\000)s Fu(header)q -Fx(\))g Fu(:)g(t)s Fs(\000)s Fu(l)q(ist)1084 1782 y Fx(where)20 -b(the)g(header)h Fu(t)f Fx(and)h(the)f(list)f Fu(t)i -Fx(are)e(de\014ned)1084 1839 y(ab)q(o)o(v)o(e.)1143 1895 -y(The)c(main)f(pro)q(cedures)i(are)f(the)g(follo)o(wing:)1159 -2002 y Fs(\017)24 b Fu(siev)r(e)p 1312 2002 V 16 w(pv)r -Fx(\()p Fu(pv)r(;)8 b(b)p Fx(\))19 b({)j(siev)o(es)g(the)h -Fu(p)p Fx(-v)o(ector)e Fu(pv)1206 2058 y Fx(using)27 -b(the)g(basis)f Fu(b)p Fx(.)56 b(This)26 b(pro)q(cedure)i(is)1206 -2115 y(used)17 b(for)f(the)g(construction)g(of)g(the)g -Fo(K)p Fx(-basis)1206 2171 y(\("triangle")11 b(transformatio)o(n)g -(\(3,4\)\))h(and)h(for)1206 2227 y(the)19 b(simpli\014cation)d(of)j -(tensors)f(expressions)1206 2284 y(\(pro)s(jection)9 -b(to)h(the)i(canonical)e(elemen)o(t)f(\(5\)\).)1206 2340 -y(This)25 b(is)g(the)g(main)f(step)h(of)g(the)h(function)1206 -2397 y Fu(siev)r(e)p 1312 2397 V 16 w(t)p Fx(.;)1159 -2491 y Fs(\017)e Fu(r)q(educe)p 1343 2491 V 15 w(pv)r -Fx(\()p Fu(pv)r(;)8 b(q)r(v)r Fx(\))16 b(-)j(reduces)g(the)g -Fu(p)p Fx(-v)o(ector)1206 2547 y Fu(pv)e Fx(with)e(resp)q(ect)i(to)e -(the)h Fu(p)p Fx(-v)o(ector)f Fu(q)r(v)r Fx(.)21 b(This)1206 -2604 y(is)10 b(the)h(main)e(step)i(of)f(the)h(function)g -Fu(siev)r(e)p 1923 2604 V 16 w(pv)r Fx(.;)1039 2827 y -Fr(10)p eop -%%Page: 11 11 -11 10 bop 193 154 a Fs(\017)24 b Fu(inser)q(t)p 366 154 -14 2 v 17 w(pv)r Fx(\()p Fu(pv)r(;)8 b(b)p Fx(\))13 b(-)j(inserts)g -(the)g Fu(p)p Fx(-v)o(ector)g Fu(pv)240 210 y Fx(in)o(to)f(the)h(basis) -g Fu(b)p Fx(.)22 b(This)16 b(pro)q(cedure)h(also)e(re-)240 -267 y(arranges)f Fu(b)h Fx(with)g(resp)q(ect)g(to)g Fu(pv)r -Fx(.)193 360 y Fs(\017)24 b Fu(siev)r(e)p 346 360 V 16 -w(t)p Fx(\()p Fu(tt)p Fx(\))13 b(-)g(siev)o(es)f(the)h(tensor)f -Fu(tt)h Fx(using)f(the)240 417 y(corresp)q(onding)k Fo(K)p -Fx(-basis.)21 b(The)16 b(\014rst)g(step)g(of)240 473 -y(this)h(pro)q(cedure)i(is)e(generation)g(of)h(relations)240 -530 y(due)24 b(to)e(renamings)g(of)h(dummies)e(and)i(the)240 -586 y(corresp)q(onding)d(completion)e(of)h Fo(K)871 593 -y Fc(M)932 586 y Fx(up)h(to)240 643 y Fo(K)281 650 y -Fc(D)314 643 y Fx(-basis.)118 781 y Fd(7.8)66 b(Global)24 -b(v)l(ariables)118 867 y Fx(In)g(this)e(section)h(w)o(e)g(describ)q(es) -h(the)f(main)f(global)118 923 y(v)m(ariables)k(whic)o(h)h(allo)o(w)e(a) -i(user)g(to)f(con)o(trol)g(the)118 980 y(w)o(ork.)19 -b(W)l(e)c(sho)o(w)g(the)g(default)g(v)m(alues)g(in)g(brac)o(k)o(ets.) -193 1086 y Fs(\017)24 b Fx(!)t Fs(\003)t Fu(ppack)q(ed)p -Fx(\()p Fu(T)6 b Fx(\))16 b(-)i(are)f(p)q(erm)o(utations)f(stored)240 -1142 y(in)f(pac)o(k)o(ed)g(form?)193 1236 y Fs(\017)24 -b Fx(!)s Fs(\003)s Fu(debug)r Fx(\()p Fu(N)t(I)t(L)p -Fx(\))12 b(-)j(switc)o(hes)f(the)i(debug)f(out-)240 1293 -y(put)g(on.)118 1452 y Fy(8)108 b(User's)27 b(in)n(terface)118 -1554 y Fx(T)l(o)12 b(simplify)e(the)j(user)f(in)o(terface,)g(w)o(e)g -(restricted)g(the)118 1610 y(n)o(um)o(b)q(er)f(of)g(additional)f -(commands.)16 b(The)c(names)f(of)118 1667 y(these)19 -b(commands)e(are)h(v)o(ery)h(similar)d(to)i(the)g(stan-)118 -1723 y(dard)d(REDUCE)g(ones)h(used)f(in)g(similar)e(cases.)118 -1862 y Fd(8.1)66 b Fb(K)t(B)s(AS)s(I)5 b(S)118 1947 y -Fx(The)17 b(command)e Fu(K)s(B)r(AS)s(I)t(S)k Fx(prin)o(ts)d(the)h -(tensor)f Fo(K)p Fx(-)118 2004 y(basis.)177 2060 y(The)g(n)o(um)o(b)q -(er)f(of)g(v)o(ectors)f(in)i(the)f(basis,)g(i.e.)20 b(the)118 -2117 y(dimension)14 b(of)g(the)h(corresp)q(onding)g(subspace)g -Fo(K)p Fx(,)g(is)118 2173 y(t)o(yp)q(ed)h(in)f(the)g(last)f(line)h(of)g -(the)g(output.)20 b(F)l(ormat)13 b(of)118 2230 y(this)i(command)e(is:) -333 2332 y Fu(K)s(B)r(AS)s(I)t(S)27 b(tt)587 2339 y Fm(1)608 -2332 y Fu(;)8 b(tt)661 2339 y Fm(2)680 2332 y Fu(;)g(:::;)g(tt)793 -2339 y Ft(n)815 2332 y Fx(;)118 2434 y(Here)16 b Fu(tt)258 -2441 y Fm(1)278 2434 y Fu(;)8 b(tt)331 2441 y Fm(2)351 -2434 y Fu(;)g(:::;)g(tt)464 2441 y Ft(n)501 2434 y Fx(are)14 -b(tensor)h(names.)177 2490 y(T)l(o)10 b(output)g(the)h -Fo(K)p Fx(-basis)f(in)g(the)g(case)g(of)g(the)h(m)o(ul-)118 -2547 y(tiplication)16 b(of)i(t)o(w)o(o)e(or)h(more)g(tensors,)h(it)f -(is)g(neces-)118 2603 y(sary)k(to)f(use)i(the)f(follo)o(wing)e(format)g -(of)i(the)g(com-)118 2660 y(mand:)1276 210 y Fu(K)s(B)r(AS)s(I)t(S)28 -b(t)1515 217 y Fm(1)1535 210 y Fx(\()p Fu(t)1569 217 -y Fm(2)1588 210 y Fu(;)8 b(:::;)g(t)1685 217 y Ft(k)1704 -210 y Fx(\))p Fu(;)g(:)g(:)g(:)d Fx(;)1084 290 y(Here)15 -b Fu(t)1207 297 y Fm(1)1227 290 y Fu(;)8 b(t)1264 297 -y Fm(2)1284 290 y Fu(;)g(:)g(:)g(:)k Fx(are)j(the)g(names)f(of)h -(tensor)g(factors.)1143 347 y(If)10 b(some)f(names)g(ha)o(v)o(e)h(not)g -(b)q(een)h(declared)g(as)f(ten-)1084 403 y(sors)k(the)i(message)d(is)i -(pro)q(duced)1171 483 y Fz(*****)j(b)n(asis1)d(***)i(Invalid)f(as)g -(tensor:)k(tt)1084 621 y Fd(8.2)66 b Fb(T)8 b(E)t(N)e(S)s(O)r(R)1084 -706 y Fx(The)11 b(command)e Fu(T)d(E)s(N)f(S)s(O)q(R)k -Fx(declares)h(new)i(tensors.)1084 763 y(F)l(ormat)h(of)h(this)h -(command)e(is:)1316 858 y Fu(T)6 b(E)s(N)f(S)s(O)q(R)23 -b(t)1569 865 y Fm(1)1589 858 y Fu(;)8 b(t)1626 865 y -Fm(2)1645 858 y Fu(;)g(:::;)g(t)1742 865 y Ft(n)1763 -858 y Fx(;)1084 954 y(Here)14 b Fu(t)1206 961 y Fm(1)1226 -954 y Fu(;)8 b(t)1263 961 y Fm(2)1282 954 y Fu(;)g(:::;)g(t)1379 -961 y Ft(n)1414 954 y Fx(are)14 b(iden)o(ti\014ers.)19 -b(The)14 b(n)o(um)o(b)q(er)f(of)1084 1010 y(indices)i(will)e(b)q(e)j -(\014xed)f(during)g(the)g(\014rst)g(ev)m(aluation)1084 -1067 y(of)g(a)f(tensor)h(expressions.)1143 1123 y(If)d(some)f(names)h -(ha)o(v)o(e)f(b)q(een)j(declared)e(as)g(tensors)1084 -1180 y(already)i(the)i(message)d(is)i(pro)q(duced:)1177 -1260 y Fz(+++)h(tt)g(is)g(alr)n(e)n(ady)g(de)n(clar)n(e)n(d)f(as)h -(tensor.)1084 1397 y Fd(8.3)66 b Fb(T)8 b(C)t(LE)t(AR)1084 -1483 y Fx(The)k(command)e Fu(T)c(C)s(LE)s(AR)k Fx(remo)o(v)o(es)g -(tensors)i(from)1084 1539 y(the)i(list)g(of)g(tensors.)19 -b(F)l(ormat)12 b(of)i(this)g(command)f(is:)1319 1635 -y Fu(T)6 b(C)s(LE)s(AR)24 b(t)1565 1642 y Fm(1)1585 1635 -y Fu(;)8 b(t)1622 1642 y Fm(2)1642 1635 y Fu(;)g(:::;)g(t)1739 -1642 y Ft(n)1760 1635 y Fx(;)1084 1731 y(Here)14 b Fu(t)1206 -1738 y Fm(1)1226 1731 y Fu(;)8 b(t)1263 1738 y Fm(2)1283 -1731 y Fu(;)g(:::;)g(t)1380 1738 y Ft(n)1415 1731 y Fx(are)14 -b(the)g(names)f(of)h(tensor)g(\(iden-)1084 1787 y(ti\014ers\).)1143 -1844 y(If)c(some)f(names)g(ha)o(v)o(e)h(not)g(b)q(een)h(declared)g(as)f -(ten-)1084 1900 y(sors)k(the)i(message)d(is)i(pro)q(duced)1293 -1980 y Fz(+++)h(xxx)h(is)e(not)h(a)h(tensor.)1143 2060 -y(Note:)37 b Fx(All)22 b Fo(K)p Fx(-bases)i(where)g(an)o(y)f(of)g -Fu(t)1863 2067 y Ft(i)1901 2060 y Fx(is)g(in-)1084 2117 -y(cluded)16 b(as)e(a)h(factor)g(will)e(b)q(e)j(lost.)1084 -2254 y Fd(8.4)66 b Fb(T)8 b(S)s(Y)14 b(M)1084 2340 y -Fx(The)j(command)e Fu(T)6 b(S)s(Y)k(M)22 b Fx(de\014nes)c(symmetry)c -(rela-)1084 2396 y(tions)d(of)h(basic)h(tensors.)18 b(F)l(ormat)10 -b(of)i(this)g(command)1084 2453 y(is:)1316 2509 y Fu(T)6 -b(S)s(Y)k(M)31 b(te)1528 2516 y Fm(1)1548 2509 y Fu(;)8 -b(te)1606 2516 y Fm(2)1625 2509 y Fu(;)g(:::;)g(te)1743 -2516 y Ft(k)1763 2509 y Fx(;)1084 2589 y(Here)18 b Fu(te)1231 -2596 y Fm(1)1251 2589 y Fu(;)8 b(te)1309 2596 y Fm(2)1329 -2589 y Fu(;)g(:::;)g(te)1447 2596 y Ft(k)1484 2589 y -Fx(are)18 b(linear)f(com)o(binations)e(of)1084 2646 y(basic)h(tensors)g -(with)g(in)o(teger)f(co)q(e\016cien)o(ts)h(not)h(con-)1084 -2702 y(taining)d(without)g(dumm)o(y)f(indices.)1039 2827 -y Fr(11)p eop -%%Page: 12 12 -12 11 bop 177 154 a Fx(All)25 b(relations)f(corresp)q(ond)i(to)f(the)h -(left)f(hand)118 210 y(side)17 b(of)f(the)h(symmetry)d(equations.)24 -b(F)l(or)16 b(example,)118 267 y(for)i(an)o(tisymm)o(etric)d(tensor)j -(w)o(e)g(ha)o(v)o(e)f(the)i(relation)118 323 y Fu(AA)p -Fx(\()p Fu(i;)8 b(j)s Fx(\))f(+)i Fu(AA)p Fx(\()p Fu(j;)f(i)p -Fx(\))j(=)h(0.)20 b(Th)o(us,)14 b(the)h(corresp)q(ond-)118 -379 y(ing)g(input)g(format)e(is:)285 482 y Fu(T)6 b(S)s(Y)k(M)30 -b(AA)p Fx(\()p Fu(I)t(;)8 b(J)t Fx(\))h(+)h Fu(AA)p Fx(\()p -Fu(J)o(;)e(I)t Fx(\);)118 620 y Fd(8.5)66 b(Algebraic)24 -b(op)r(erations)118 706 y Fx(The)12 b(standard)e(algebraic)g(op)q -(erations)h(are)g(a)o(v)m(ailable)118 762 y(for)k(tensors:)202 -806 y(+)74 b(sum)14 b(of)h(tensors;)202 862 y Fs(\000)74 -b Fx(di\013erence)15 b(of)g(tensors)g(or)f(negation;)202 -919 y Fs(\003)86 b Fx(m)o(ultiplicati)o(on)13 b(of)h(tensors.)177 -971 y(W)l(e)20 b(assume)e(that)g(t)o(w)o(o)g(indices)i(with)e(iden)o -(tical)118 1028 y(names)d(means)g(the)i(summatio)o(n)d(o)o(v)o(er)h -(their)h(v)m(alues)118 1084 y(\(the)23 b(Einstein)g(con)o(v)o(en)o -(tion\))f(-)h(they)g(are)g(dumm)o(y)118 1141 y(ones.)31 -b(Th)o(us,)19 b(the)g(m)o(ultiplication)d(of)i(t)o(w)o(o)g(tensors)118 -1197 y(ma)o(y)d(b)q(e)j(either)f(a)g(direct)f(pro)q(duct,)i(or)e(it)h -(can)g(con-)118 1254 y(tain)e(con)o(tractions)e(of)i(dumm)o(y)e -(indices.)177 1310 y(Examples:)420 1367 y Fu(t)436 1374 -y Fm(1)456 1367 y Fx(\()p Fu(i;)8 b(j)s Fx(\))g Fs(\003)i -Fu(t)608 1374 y Fm(2)628 1367 y Fx(\()p Fu(j;)e(k)q Fx(\);)386 -1450 y Fu(t)402 1457 y Fm(1)422 1450 y Fx(\()p Fu(i;)g(j)s -Fx(\))g(+)i(2)g Fs(\003)g Fu(t)652 1457 y Fm(2)672 1450 -y Fx(\()p Fu(j;)e(i)p Fx(\);)118 1588 y Fd(8.6)66 b(Switc)n(h)24 -b Fb(D)r(U)6 b(M)g(M)g(Y)12 b(P)c(RI)118 1674 y Fx(This)17 -b(switc)o(h)f(is)g(con)o(trolled)g(b)o(y)h(the)g(standard)g(RE-)118 -1731 y(DUCE)i(commands)e Fu(O)q(N)5 b Fx(/)p Fu(O)q(F)h(F)g -Fx(.)32 b(It)19 b(con)o(trols)f(the)118 1787 y(output)d(pro)q(cess)h -(for)f(tensor)g(expressions.)20 b(The)c(de-)118 1843 -y(fault)e(v)m(alue)i(is)f Fu(O)q(F)6 b(F)g Fx(.)177 1900 -y Fu(D)q(U)f(M)g(M)g(Y)11 b(P)6 b(RI)22 b Fx(prin)o(ts)c(dumm)o(y)f -(indices)i(with)118 1956 y(in)o(ternal)i(names)f({)i(n)o(um)o(b)q(ers.) -38 b(The)22 b(general)f(rule)118 2013 y(is:the)10 b(index)g(\(2)p -Fu(k)r Fs(\000)p Fx(1\))f(is)g(con)o(tracted)h(with)g(the)g(index)118 -2069 y(\(2)p Fu(k)q Fx(\).)177 2126 y(Examples)370 2109 -y Fm(7)388 2126 y Fx(:)143 2190 y Fu(T)c(E)s(N)f(S)s(O)q(R)36 -b(GG)p Fx(;)143 2247 y Fu(GG)p Fx(\()p Fu(M)r(;)8 b(M)d -Fx(\);)285 b Fs(\))13 b Fu(GG)p Fx(\()p Fu(M)r(;)8 b(M)d -Fx(\))143 2303 y Fu(O)q(N)42 b(D)q(U)5 b(M)g(M)g(Y)11 -b(P)6 b(RI)t Fx(;)143 2359 y Fu(GG)p Fx(\()p Fu(M)r(;)i(M)d -Fx(\);)285 b Fs(\))13 b Fu(GG)p Fx(\()p Fu(M)857 2366 -y Fm(41)894 2359 y Fu(;)8 b(M)959 2366 y Fm(42)996 2359 -y Fx(\))p 118 2415 370 2 v 174 2445 a Fh(7)193 2460 y -Fv(Here)13 b(and)f(b)q(elo)o(w)h(REDUCE)g(output)f(is)h(giv)o(en)g -(after)118 2510 y(the)i(arro)o(w)e(")p FA(\))p Fv(".)1084 -154 y Fd(8.7)66 b(Switc)n(h)23 b Fb(S)s(H)5 b(O)r(RT)j(E)t(S)s(T)1084 -239 y Fx(This)16 b(switc)o(h)h(is)f(con)o(trolled)g(b)o(y)h(the)g -(standard)f(RE-)1084 296 y(DUCE)j(commands)e Fu(O)q(N)5 -b Fx(/)p Fu(O)q(F)h(F)g Fx(.)32 b(It)19 b(con)o(trols)f(the)1084 -352 y(output)d(pro)q(cess)h(for)e(tensor)h(expressions.)21 -b(The)15 b(de-)1084 409 y(fault)f(v)m(alue)h(is)g Fu(O)q(F)6 -b(F)g Fx(.)1143 465 y Fu(S)s(H)t(O)q(RT)g(E)s(S)s(T)31 -b Fx(prin)o(ts)c(tensor)g(expression)h(in)1084 522 y(shortest)18 -b(form)g(that)g(w)o(as)g(pro)q(duced)j(during)e(ev)m(al-)1084 -578 y(uation.)24 b(Ho)q(ev)o(er,)17 b(the)g(sortest)f(form)g(ma)o(y)f -(b)q(e)i(non-)1084 635 y(canonical.)1084 703 y Fu(T)6 -b(E)s(N)f(S)s(O)q(R)35 b(C)s Fx(;)1084 759 y Fu(T)6 b(S)s(Y)k(M)167 -b(C)s Fx(\()p Fu(K)q(;)8 b(L;)g(M)d Fx(\))24 b(+)j Fu(C)s -Fx(\()p Fu(L;)8 b(M)r(;)g(K)s Fx(\))25 b(+)1084 816 y -Fu(C)s Fx(\()p Fu(M)r(;)8 b(K)q(;)g(L)p Fx(\);)1084 872 -y Fu(C)s Fx(\()p Fu(K)q(;)g(L;)g(M)d Fx(\))i(+)j Fu(C)s -Fx(\()p Fu(M)r(;)e(L;)g(K)s Fx(\);)1261 929 y Fs(\))60 -b Fx(\()p Fs(\000)p Fx(1\))28 b Fs(\003)g Fu(C)s Fx(\()p -Fu(L;)8 b(M)r(;)g(K)s Fx(\))27 b(+)i(\()p Fs(\000)p Fx(1\))f -Fs(\003)1084 985 y Fu(C)s Fx(\()p Fu(M)r(;)8 b(K)q(;)g(L)p -Fx(\))f(+)k Fu(C)s Fx(\()p Fu(M)r(;)d(L;)g(K)s Fx(\))1084 -1042 y Fu(O)q(N)42 b(S)s(H)t(O)q(RT)6 b(E)s(S)s(T)g Fx(;)1084 -1098 y Fu(C)s Fx(\()p Fu(K)q(;)i(L;)g(M)d Fx(\))i(+)j -Fu(C)s Fx(\()p Fu(M)r(;)e(L;)g(K)s Fx(\);)1214 1154 y -Fs(\))14 b Fu(C)s Fx(\()p Fu(K)q(;)8 b(L;)g(M)d Fx(\))h(+)11 -b Fu(C)s Fx(\()p Fu(M)r(;)d(L;)g(K)s Fx(\))1084 1314 -y Fy(9)81 b(Memory)25 b(usage)1084 1416 y Fx(Let)c(us)g(consider)g -(simpli\014cation)e(of)h(a)h(tensor)g(ex-)1084 1472 y(pressions)16 -b(with)g Fu(n)h Fx(indices.)24 b(The)17 b(rank)f(of)g(the)h(cor-)1084 -1529 y(resp)q(onding)26 b(p)q(erm)o(utation)e(group)h(is)h -Fu(n)g Fx(and)g(the)1084 1585 y(dimension)h(of)h(its)g(group)h(algebra) -e(is)h Fu(n)p Fx(!.)61 b(Let)1084 1642 y(us)22 b(consider)f(t)o(w)o(o)f -(cases:)33 b(when)22 b(there)g(are)f(man)o(y)1084 1698 -y Fo(S)10 b Fs(\000)g Fo(I)g Fs(\000)h Fo(D)19 b Fx(relations)e(\(so)h -(that)h(the)g(dimension)e(of)1084 1755 y(the)11 b Fo(K)h -Fx(subspace)g(is)f(almost)e(equal)j(to)e Fu(n)p Fx(!\))i(and)f(when) -1084 1811 y(there)17 b(are)g(small)d(n)o(um)o(b)q(er)j(of)f -Fo(S)10 b Fs(\000)h Fo(I)f Fs(\000)g Fo(D)17 b Fx(relations)1084 -1867 y(\(so)k(that)g(the)h(dimension)e(of)h(the)h Fo(K)g -Fx(subspace)g(is)1084 1924 y(small\).)1143 1980 y(In)f(the)g(\014rst)f -(case,)i(ab)q(out)e Fu(n)p Fx(!)14 b Fs(\001)f Fu(l)h -Fs(\001)g Fu(k)21 b Fx(Lisp)g(cells)1084 2037 y(are)16 -b(necessary)g(to)g(store)g(the)g(full)g Fo(K)1734 2044 -y Fc(D)1767 2037 y Fx(-basis.)24 b(Here)1084 2093 y Fu(l)14 -b Fx(is)f(the)h(n)o(um)o(b)q(er)g(of)f(cells)g(needed)j(to)d(store)g(a) -h(single)1084 2150 y(term)c(of)i(a)g Fu(p)p Fx(-v)o(ector,)f(and)i -Fu(k)g Fx(is)e(the)i(a)o(v)o(erage)d(n)o(um)o(b)q(er)1084 -2206 y(of)20 b(terms)e(in)i(v)o(ectors)g(from)e(this)i -Fo(K)1737 2213 y Fc(D)1770 2206 y Fx(-basis.)35 b(The)1084 -2263 y(n)o(um)o(b)q(er)17 b(of)g(terms)f(in)i(these)g(v)o(ectors)f(\()p -Fu(k)q Fx(\))g(is)g(ab)q(out)1084 2319 y(2)s Fs(\000)s -Fx(3)12 b(in)f(practical)g(cases.)18 b(The)12 b(n)o(um)o(b)q(er)f(of)h -(terms)e(in)1084 2376 y(the)15 b(simpli\014ed)f(expression)i(is)f(\(in) -g(practical)f(cases\))1084 2432 y Fu(O)q Fx(\(1\),)g(and)h(can)g(b)q(e) -h(omitted)d(from)h(this)g(estimate.)1143 2488 y(In)h(the)f(case)g(of)f -(a)h(small)e(set)i(of)f(symmetries)f(and)1084 2545 y(linear)g(iden)o -(tities)h(of)g(basic)g(tensors,)g(the)g(n)o(um)o(b)q(er)g(of)1084 -2601 y(v)o(ectors)20 b(in)g(the)h(full)f Fo(K)1512 2608 -y Fc(D)1546 2601 y Fx(-basis)g(is)g(small)f(enough,)1084 -2658 y(and)f(can)f(b)q(e)i(omitted)c(from)h(this)h(estimate.)25 -b(Ho)o(w-)1039 2827 y Fr(12)p eop -%%Page: 13 13 -13 12 bop 118 154 a Fx(ev)o(er,)19 b(the)f(n)o(um)o(b)q(er)f(of)h -(terms)f(in)h(a)f(canonical)h(rep-)118 210 y(resen)o(tativ)o(e)11 -b(\(the)i(expression)f(after)g(simpli\014cation\))118 -267 y(will)i(b)q(e)i(ab)q(out)f Fu(n)p Fx(!.)177 323 -y(An)o(yw)o(a)o(y)l(,)26 b(w)o(e)f(ha)o(v)o(e)g(to)f(w)o(ork)g(with)g -(a)h(practi-)118 379 y(cally)19 b(full)h(set)g(of)f(p)q(erm)o -(utations,)g(whic)o(h)h(con)o(tains)118 436 y Fu(n)p -Fx(!)15 b(mem)o(b)q(ers.)177 492 y(Th)o(us,)f(the)h(minim)o(um)c -(computer)i(memory)f(nec-)118 549 y(essary)f(to)f(store)h(the)g(elab)q -(orated)f(expressions)h(is)g(not)118 605 y(less)16 b(then)h -Fu(n)p Fx(!)11 b Fs(\001)f Fu(l)i Fs(\001)e Fu(k)q Fx(.)24 -b(The)17 b(t)o(ypical)e(n)o(um)o(b)q(er)h(of)g(Lisp)118 -662 y(cells)c(necessary)g(to)g(store)f(a)h(single)f(term)g(of)h(a)g -(tensor)118 718 y(expressions)19 b(\(basic)f(tensor\))f(is)i(4.)29 -b(The)19 b(length)g(of)118 775 y(eac)o(h)f(cell)f(is)h(8)f(Byte.)28 -b(The)18 b(results)f(of)h(calculation)118 831 y(for)11 -b(di\013eren)o(t)f(ranks)h(of)g(the)g(p)q(erm)o(utation)f(group)h(are) -118 888 y(collected)k(in)g(the)g(table.)p 177 917 859 -2 v 176 1030 2 113 v 202 956 a(Rank)h(of)e Fu(S)402 963 -y Ft(n)p 462 1030 V 488 956 a Fx(Num)o(b)q(er)39 b(of)488 -1013 y(Mcells)p 748 1030 V 774 956 a(Memory)32 b(in)774 -1013 y(Mb)o(yte)p 1034 1030 V 177 1032 859 2 v 176 1088 -2 57 v 202 1071 a(9)p 462 1088 V 263 w(2.9)p 748 1088 -V 227 w(22.6)p 1034 1088 V 176 1144 V 202 1127 a(10)p -462 1144 V 240 w(29.0)p 748 1144 V 204 w(226.8)p 1034 -1144 V 176 1201 V 202 1184 a(11)p 462 1201 V 240 w(319.3)p -748 1201 V 181 w(2494.8)p 1034 1201 V 177 1203 859 2 -v 177 1262 a(2{3)16 b(times)e(more)h(memory)f(is)i(necessary)g(in)g -(the)118 1318 y(in)o(termediate)26 b(steps)h(of)g(calculations.)56 -b(Mo)q(dern)118 1375 y(computers)24 b(usually)h(equipp)q(ed)i(with)d -(up)i(to)f(512)118 1431 y(Mb)o(yte)f(memory)e(can)j(elab)q(orate)f -(tensor)g(expres-)118 1488 y(sions)19 b(with)g(not)g(more)f(then)i(10)f -(indices)g(with)g(the)118 1544 y(help)11 b(of)f(the)g(prop)q(osed)h -(algorithm.)k(Ho)o(w)o(ev)o(er,)10 b(hard-)118 1601 y(w)o(are)16 -b(dev)o(elopmen)o(t)e(is)i(v)o(ery)g(fast)f(no)o(w,)h(and)g(it)g(will) -118 1657 y(b)q(e)k(p)q(ossible)g(to)f(solv)o(e)g(problems)f(with)h(11)g -(indices)118 1714 y(with)14 b(the)h(help)f(of)g(our)h(program.)i -(Finally)l(,)c(w)o(e)h(note)118 1770 y(that)e(it)f(p)q(ossible)h(to)g -(mo)q(dify)f(the)h(algorithm)d(so)j(that)118 1826 y(the)17 -b(memory)c(limitatio)o(ns)h(w)o(ould)i(b)q(e)h(not)f(so)g(hard.)118 -1883 y(Ho)o(w)o(ev)o(er,)i(this)g(adv)m(an)o(tage)h(is)f(comp)q -(ensated)g(b)o(y)h(a)118 1939 y(signi\014can)o(t)f(increase)h(of)f(the) -h(execution)g(time.)29 b(T)l(o)118 1996 y(summarize)17 -b(this)i(section,)h(w)o(e)g(conclude)g(that)f(the)118 -2052 y(absolute)f(limit)e(for)h(the)i(group)f(algebra)g(approac)o(h)118 -2109 y(dev)o(elop)q(ed)e(in)f(this)g(w)o(ork)f(is)h(12)f(indices.)118 -2269 y Fy(10)82 b(Examples)118 2388 y Fd(10.1)66 b(Symmetric)31 -b(and)f(an)n(tisym-)305 2463 y(metric)23 b(tensors)118 -2549 y Fx(A)o(t)18 b(the)h(b)q(eginning,)g(let)f(us)g(declare)h(the)f -(names)g(of)118 2605 y(basic)d(tensors:)118 2685 y Fu(tensor)27 -b(s)p Fx(2)p Fu(;)8 b(a)p Fx(3)p Fu(;)g(v)r Fx(1)p Fu(;)g(v)r -Fx(2)p Fu(;)f(v)q Fx(3;)1143 154 y(By)j(using)h Fu(T)6 -b(S)s(Y)j(M)16 b Fx(command)8 b(w)o(e)i(in)o(tro)q(duce)h(the)1084 -210 y Fo(S-I)k Fx(relations)f(of)h(the)g(basic)g(tensors:)1109 -277 y Fu(tsy)r(m)50 b(s)p Fx(2\()p Fu(i;)8 b(j)s Fx(\))g -Fs(\000)i Fu(s)p Fx(2\()p Fu(j;)e(i)p Fx(\))p Fu(;)141 -b Fx(\045)15 b(Symmetric)1260 334 y Fu(a)p Fx(3\()p Fu(i;)8 -b(j;)g(k)q Fx(\))f(+)k Fu(a)p Fx(3\()p Fu(j;)d(i;)g(k)q -Fx(\))p Fu(;)46 b Fx(\045)15 b(An)o(tisymm.)1260 390 -y Fu(a)p Fx(3\()p Fu(i;)8 b(j;)g(k)q Fx(\))f Fs(\000)k -Fu(a)p Fx(3\()p Fu(j;)d(k)q(;)g(i)p Fx(\);)1143 491 y(Let)15 -b(us)h(output)f(the)g Fo(K)1551 498 y Fc(0)1574 491 y -Fx(-bases)g(constructed)g(for)1084 548 y(the)g(tensors)g -Fu(a)1341 555 y Fm(2)1376 548 y Fx(and)g Fu(s)1485 555 -y Fm(2)1084 628 y Fu(k)q(basis)25 b(s)p Fx(2)p Fu(;)8 -b(a)p Fx(3;)1168 704 y Fs(\))50 b Fu(s)p Fx(2\()p Fu(j;)8 -b(i)p Fx(\))g(+)j(\()p Fs(\000)p Fx(1\))e Fs(\003)h Fu(s)p -Fx(2\()p Fu(i;)e(j)s Fx(\))1168 761 y Fs(\))50 b Fx(1)1168 -873 y Fs(\))g Fu(a)p Fx(3\()p Fu(k)q(;)8 b(i;)g(j)s Fx(\))f(+)j -Fu(a)p Fx(3\()p Fu(j;)e(i;)g(k)q Fx(\))1168 930 y Fs(\))50 -b Fu(a)p Fx(3\()p Fu(k)q(;)8 b(j;)g(i)p Fx(\))f(+)k(\()p -Fs(\000)p Fx(1\))e Fs(\003)h Fu(a)p Fx(3\()p Fu(j;)e(i;)g(k)q -Fx(\))1168 986 y Fs(\))50 b Fu(a)p Fx(3\()p Fu(i;)8 b(k)q(;)g(j)s -Fx(\))f(+)j(\()p Fs(\000)p Fx(1\))g Fs(\003)f Fu(a)p -Fx(3\()p Fu(j;)f(i;)g(k)q Fx(\))1168 1043 y Fs(\))50 -b Fu(a)p Fx(3\()p Fu(i;)8 b(j;)g(k)q Fx(\))f(+)k Fu(a)p -Fx(3\()p Fu(j;)d(i;)g(k)q Fx(\))1168 1099 y Fs(\))50 -b Fu(a)p Fx(3\()p Fu(j;)8 b(k)q(;)g(i)p Fx(\))f(+)k Fu(a)p -Fx(3\()p Fu(j;)d(i;)g(k)q Fx(\))1168 1156 y Fs(\))50 -b Fx(5)1143 1232 y(No)o(w)13 b(w)o(e)g(are)g(ready)h(to)f(simplify)e -(tensor)i(expres-)1084 1288 y(sions.)19 b(Some)14 b(examples)g(are:) -1109 1365 y Fu(s)p Fx(2\()p Fu(i;)8 b(j)s Fx(\))f(+)k -Fu(s)p Fx(2\()p Fu(j;)d(i)p Fx(\);)83 b Fs(\))13 b Fx(2)d -Fs(\003)f Fu(s)p Fx(2\()p Fu(i;)f(j)s Fx(\))1109 1421 -y Fu(a)p Fx(3\()p Fu(i;)g(j;)g(k)q Fx(\))f Fs(\003)j -Fu(s)p Fx(2\()p Fu(i;)e(j)s Fx(\);)47 b Fs(\))13 b Fx(0)1109 -1482 y Fu(a)p Fx(3\()p Fu(i;)8 b(j;)g(k)q Fx(\))f Fs(\003)j -Fu(v)r Fx(1\()p Fu(i)p Fx(\))e Fs(\003)i Fu(v)r Fx(2\()p -Fu(j)s Fx(\))e Fs(\003)i Fu(v)r Fx(1\()p Fu(k)q Fx(\);)48 -b Fs(\))13 b Fx(0)1143 1562 y(Sometimes)19 b(one)j(can)f(get)h(a)f -('strange')f(output)1084 1618 y(if)e(one)g(will)f(not)h(b)q(e)h -(careful)g(with)e(the)i(input.)29 b(F)l(or)1084 1675 -y(example,)1109 1751 y Fu(x)12 b Fx(:=)h Fu(s)p Fx(2\()p -Fu(i;)8 b(i)p Fx(\);)47 b Fs(\))13 b Fu(x)g Fx(:=)g Fu(s)p -Fx(2\()p Fu(i;)8 b(i)p Fx(\))1109 1807 y Fu(x)i Fs(\003)g -Fu(v)r Fx(1\()p Fu(i)p Fx(\);)111 b Fs(\))13 b Fu(s)p -Fx(2\()p Fu(i;)8 b(i)p Fx(\))g Fs(\003)i Fu(v)r Fx(1\()p -Fu(i)p Fx(\))1084 1884 y(F)l(rom)19 b(the)h(standard)g(p)q(oin)o(t)g -(of)h(view,)g(the)f(second)1084 1940 y(output)f(is)f(incorrect)h(due)g -(to)g(the)g(fact)f(that)h(three)1084 1996 y(indices)c(with)g(the)h -(same)e(name)g(are)i(presen)o(t.)k(Ho)o(w-)1084 2053 -y(ev)o(er,)e(the)f(input)h(has)g(not)f(b)q(een)i(recognized)f(as)f(an) -1084 2109 y(error.)i(If)c(one)h(switc)o(hes)e(on)h(the)h(\015ag)1084 -2189 y Fu(on)38 b(dummy)r(pr)q(i)p Fx(;)1084 2270 y(and)18 -b(then)h(rep)q(eats)f(the)h(previous)f(input)g(then)h(one)1084 -2326 y(gets)14 b(the)i(follo)o(wing)d(output:)1109 2406 -y Fu(x)d Fs(\003)g Fu(v)r Fx(1\()p Fu(i)p Fx(\);)47 b -Fs(\))13 b Fu(s)p Fx(2\()p Fu(i)1473 2413 y Fm(23)1510 -2406 y Fu(;)8 b(i)1547 2413 y Fm(24)1583 2406 y Fx(\))i -Fs(\003)g Fu(v)r Fx(1\()p Fu(i)p Fx(\))1084 2486 y(Hence,)21 -b(the)f(\014rst)f(t)o(w)o(o)g Fu(i)p Fx('s)g(are)g(dummies)f(and)i(the) -1084 2543 y(last)14 b(one)h(is)g(a)g(free)g(index.)1143 -2599 y(If)e(a)g(user)h(w)o(ould)e(lik)o(e)h(to)f(output)h(the)g -Fo(K)p Fx(-basis)g(of)1084 2655 y(the)18 b(pro)q(duct)h(of)g(the)f -(tensors)h Fu(s)1656 2662 y Fm(2)1694 2655 y Fx(and)g -Fu(a)1810 2662 y Fm(3)1830 2655 y Fx(,)g(the)f(fol-)1039 -2827 y Fr(13)p eop -%%Page: 14 14 -14 13 bop 118 154 a Fx(lo)o(wing)17 b(format)f(of)h(the)i(command)d -Fu(K)s(B)r(AS)s(I)t(S)k Fx(has)118 210 y(to)15 b(b)q(e)h(used:)118 -290 y Fu(k)q(basis)25 b(s)p Fx(2\()p Fu(a)p Fx(3\);)168 -369 y Fs(\))68 b Fu(a)p Fx(3\()p Fu(j;)8 b(i;)g(k)q Fx(\))f -Fs(\003)j Fu(s)p Fx(2\()p Fu(i;)e(j)s Fx(\))g(+)i Fu(a)p -Fx(3\()p Fu(k)q(;)e(i;)g(j)s Fx(\))f Fs(\003)i Fu(s)p -Fx(2\()p Fu(j;)f(i)p Fx(\))168 425 y Fs(\))68 b Fu(a)p -Fx(3\()p Fu(j;)8 b(i;)g(k)q Fx(\))f Fs(\003)j Fu(s)p -Fx(2\()p Fu(j;)e(i)p Fx(\))g(+)i Fu(a)p Fx(3\()p Fu(k)q(;)e(i;)g(j)s -Fx(\))f Fs(\003)j Fu(s)p Fx(2\()p Fu(j;)e(i)p Fx(\))168 -482 y(.....)168 538 y Fs(\))68 b Fx(110)118 698 y Fd(10.2)e(Riemann)23 -b(tensor)118 783 y Fx(Let)c(us)f(in)o(tro)q(duce)h(the)g(Riemann)e -(tensor)h(and)h(the)118 840 y(standard)c(set)g(of)g(its)f -Fo(S-I)h Fx(relations:)177 896 y Fu(tensor)27 b(r)q(i)p -Fx(;)118 953 y Fu(tsy)r(m)f(r)q(i)p Fx(\()p Fu(i;)8 b(j;)g(k)q(;)f(l)q -Fx(\))f(+)11 b Fu(r)q(i)p Fx(\()p Fu(j;)d(i;)g(k;)g(l)q -Fx(\))o(;)118 1009 y Fu(tsy)r(m)26 b(r)q(i)p Fx(\()p -Fu(i;)8 b(j;)g(k)q(;)f(l)q Fx(\))f(+)11 b Fu(r)q(i)p -Fx(\()p Fu(i;)d(j;)g(l;)f(k)q Fx(\);)118 1066 y Fu(tsy)r(m)26 -b(r)q(i)p Fx(\()p Fu(i;)8 b(j;)g(k)q(;)f(l)q Fx(\))f(+)11 -b Fu(r)q(i)p Fx(\()p Fu(i;)d(k)q(;)g(l)q(;)f(j)r Fx(\))g(+)j -Fu(r)q(i)p Fx(\()p Fu(i;)e(l)q(;)g(j;)f(k)q Fx(\);)177 -1146 y(The)27 b Fo(K)323 1153 y Fc(0)346 1146 y Fx(-basis)g(consists)f -(of)g(22)h(v)o(ectors)f(\(see)118 1202 y(TEST)h(R)o(UN)g(OUTPUT\))g -(and)g(the)g(full)g(v)o(ector)118 1259 y(space)19 b(has)g(4!)f(=)h(24)f -(dimensions.)29 b(Th)o(us,)19 b(an)o(y)g(ex-)118 1315 -y(pressions)13 b(whic)o(h)g(are)g(linear)g(com)o(binations)e(of)i(Rie-) -118 1372 y(mann)24 b(tensors)g(with)f(p)q(erm)o(uted)h(indices)h(can)g -(b)q(e)118 1428 y(simpli\014ed)c(to)h(expressions)g(con)o(taining)f -(only)h(t)o(w)o(o)118 1484 y(basic)15 b(tensors)372 1468 -y Fm(8)391 1484 y Fx(.)177 1541 y(This)k(set)g(of)g(prop)q(erties)h -(leads)f(us)g(to)g(the)h(v)o(ery)118 1597 y(imp)q(ortan)o(t)11 -b(symmetry)f(prop)q(ert)o(y)i(of)h(Riemann)f(ten-)118 -1654 y(sor)i(with)g(resp)q(ect)h(to)f(the)h(exc)o(hange)g(of)f(pairs)g -(of)g(in-)118 1710 y(dices:)177 1767 y Fu(r)q(i)p Fx(\()p -Fu(i;)8 b(j;)g(k)q(;)f(l)q Fx(\))g Fs(\000)j Fu(r)q(i)p -Fx(\()p Fu(k)q(;)e(l)q(;)g(i;)f(j)r Fx(\);)95 b Fs(\))13 -b Fx(0)177 1847 y(Let)j(us)f(consider)g(some)f(more)g(examples,)118 -1927 y Fu(r)q(i)p Fx(\()p Fu(m;)8 b(n;)g(m;)g(n)p Fx(\))f -Fs(\000)j Fu(r)q(i)p Fx(\()p Fu(m;)e(n;)g(n;)g(m)p Fx(\))603 -1983 y Fs(\))13 b Fx(2)d Fs(\003)g Fu(r)q(i)p Fx(\()p -Fu(m;)e(n;)g(m;)g(n)p Fx(\).)177 2063 y(An)o(y)16 b(tensors)g -(expressions)g(consists)f(of)h(Rieman)118 2120 y(tensors)i(ma)o(y)f(b)q -(e)j(expressed)f(through)g(summ)d(of)j(2)118 2176 y(ones:)118 -2256 y Fu(r)q(i)p Fx(\()p Fu(i;)8 b(j;)g(k)q(;)f(l)q -Fx(\))35 b(+)k Fu(r)q(i)p Fx(\()p Fu(j;)8 b(k)q(;)g(l)q(;)f(i)p -Fx(\))35 b(+)k Fu(r)q(i)p Fx(\()p Fu(k)q(;)8 b(l)q(;)g(i;)f(j)s -Fx(\))35 b(+)118 2313 y Fu(r)q(i)p Fx(\()p Fu(l)q(;)8 -b(i;)g(j)o(;)g(k)p Fx(\);)249 2369 y Fs(\))13 b Fx(\()p -Fs(\000)p Fx(2\))c Fs(\003)h Fu(r)q(i)p Fx(\()p Fu(l)q(;)e(j;)g(i;)f(k) -q Fx(\))g(+)j(4)g Fs(\003)g Fu(r)q(i)p Fx(\()p Fu(l)q(;)e(i;)g(j)o(;)g -(k)p Fx(\))177 2449 y(A)15 b(more)e(complicated)g(example)h(with)g(m)o -(ultipli-)118 2506 y(cation)f(of)g(the)h(Riemann)f(tensor)h(and)f(the)h -(an)o(tisym-)p 118 2549 370 2 v 174 2579 a Fh(8)193 2594 -y Fv(This)g(simpli\014cation)i(has)e(no)g(relation)h(to)f(the)g(n)o -(um-)118 2644 y(b)q(er)d(of)f(indep)q(enden)o(t)i(comp)q(onen)o(ts)f -(of)f(the)g(Riemann)h(cur-)118 2694 y(v)n(ature)j(tensor)h(in)g -(space-time)g(of)e(v)n(arious)h(dimensions)1084 154 y -Fx(metric)f(tensor)i Fu(a)p Fx(2)g(is)g(giv)o(en)g(in)g(the)g(section)g -Fo(TEST)1084 210 y(R)o(UN)i(OUTPUT)p Fx(.)1084 370 y -Fy(Ac)n(kno)n(wledgemen)n(ts)1084 471 y Fx(The)c(authors)g(are)g -(grateful)f(to)g(A.Grozin)g(for)h(useful)1084 528 y(discussions.)1143 -584 y(This)i(w)o(ork)f(w)o(as)h(supp)q(orted)h(b)o(y)f(Russian)h(F)l -(oun-)1084 641 y(dation)c(for)g(F)l(undamen)o(tal)f(Researc)o(h)i -(\(gran)o(t)f(93-02-)1084 697 y(14428\).)1084 857 y Fy(References)1084 -958 y Fx([1])23 b(L.D.Landau)f(and)g(E.M.Lifshitz,)f -Fz(Field)h(The-)1133 1015 y(ory)p Fx(,)16 b(\(Mosco)o(w,)d(Nauk)m(a,)i -(1973,)f(in)h(Russian\);)1133 1071 y(J.A.Sc)o(houten,)h -Fz(T)m(ensor)g(analysis)f(for)j(physicist)p Fx(,)1133 -1128 y(\(Oxford,)d(1951\).)1084 1222 y([2])23 b(A.T)l(rautman,)13 -b Fz(Symp.)j(Math.)p Fx(,)f Fo(12)h Fx(\(1973\))d(139;)1133 -1278 y(F.W.Hehl)g(et)g(al.,)f Fz(R)n(ev.)i(Mo)n(d.)h(Phys.)p -Fx(,)e Fo(48)h Fx(\(1976\))1133 1335 y(393;)1133 1391 -y(Y)l(u.N.Obukho)o(v)e(and)g(P)l(.I.Pronin,)g Fz(A)n(cta)g(Physic)n(a) -1133 1447 y(Polonic)n(a)p Fx(,)i Fo(B19)i Fx(\(1988\))d(341.)1084 -1541 y([3])23 b(A.Y)l(a.Ro)q(diono)o(v)14 b(and)h(A.Y)l(u.T)l(arano)o -(v,)e Fz(L)n(e)n(ctur)n(e)1133 1598 y(Notes)f(in)g(Comp.)g(Sci.)d -Fo(378)p Fx(,)j(\(Pro)q(ceedins)f(of)f(EU-)1133 1654 -y(R)o(OCAL'87,)15 b(1989\))f(192)1084 1748 y([4])23 b(V.A.Ilyin)k(et)g -(al.,)i(in:)44 b Fz(Pr)n(o)n(c.)27 b(of)h(IV)e(Inter-)1133 -1804 y(national)20 b(c)n(onfer)n(enc)n(e)e(on)i(c)n(omputer)h(algebr)n -(a)e(in)1133 1861 y(physic)n(al)g(r)n(ese)n(ar)n(ch)g(\(Dubna)g(1990,)i -(22-26)g(May,)1133 1917 y(USSR\))14 b Fx(190-194.)1084 -2011 y([5])23 b(M.A.Naimark,)12 b Fz(The)n(ory)k(of)g(gr)n(oup)g(r)n -(epr)n(esenta-)1133 2068 y(tion)p Fx(,)f(\(Mosco)o(w,)e(Nauk)m(a,)i -(1976,)f(in)h(Russian\).)1084 2161 y([6])23 b(B.Buc)o(h)o(burger,)41 -b(G.E.Collins)32 b(and)k(R.Lo)q(os,)1133 2218 y Fz(Computer)i(A)o -(lgebr)n(a)e(-)h(symb)n(olic)f(and)h(alge-)1133 2274 -y(br)n(aic)12 b(c)n(omputation)p Fx(,)g(\(second)f(edition,)f -(Springer,)1133 2331 y(1983\).)1084 2425 y([7])23 b(A.C.Hearn,)15 -b Fz(REDUCE)i(USER'S)f(MANUAL,)1133 2481 y(version)22 -b(3.3)p Fx(,)i(\(The)e(Rand)h(publication)e(CP78,)1133 -2538 y(Rev.)16 b(7.87,)d(1987\).)1084 2631 y([8])23 b(V.A.Ilyin)28 -b(and)g(A.P)l(.Kryuk)o(o)o(v,)i(in)e(Pro)q(c.)g(of)1133 -2688 y(the)21 b(In)o(t.)g(Symp.)e(of)i(Sym)o(b)q(olic.)e(and)i -(Algebraic)1039 2827 y Fr(14)p eop -%%Page: 15 15 -15 14 bop 168 154 a Fx(Computation)14 b(\(ISSA)o(C'91\),)h(July)h -(15-17,)g(1991,)168 210 y(Bonn,)26 b(Ed.)e(b)o(y)g(S.W)l(att,)h(A)o(CM) -f(Press)g(\(1991\))168 267 y(224.)118 360 y([9])f(V.A.Ilyin)13 -b(and)h(A.P)l(.Kryuk)o(o)o(v,)f(in)g("New)h(Com-)168 -417 y(puting)21 b(tec)o(hniques)h(in)f(Ph)o(ysics)g(Researc)o(h)h(I)q -(I",)168 473 y(Pro)q(c.)34 b(of)f(AIHENP-92,)39 b(Ed.)34 -b(b)o(y)g(D.P)o(erret-)168 530 y(Gallix,)22 b(W)l(orld)g(Scien)o -(ti\014c,)h(Singap)q(ore,)h(\(1992\))168 586 y(639-648.)118 -680 y([10])f(R.J.)f(Bradford,)g(A.C.)f(Hearn,)i(J.A.)e(P)o(adget)168 -736 y(and)g(E.)g(Sc)o(hr)q(\177)-24 b(ufer,)22 b(\\Enlarging)e(the)h -Fz(REDUCE)168 793 y Fx(Domain)h(of)j(Computation,")f(Pro)q(c.)g(of)g -(SYM-)168 849 y(SA)o(C)15 b('86,)f(A)o(CM,)g(New)h(Y)l(ork)g(\(1986\))e -(100.)118 943 y([11])23 b(S.A.F)l(ulling,)45 b(R.C.King,)h(B.G.Wyb)q -(ourne)168 1000 y(and)18 b(C.J.Cummi)o(ns)d(Class.)h(Quan)o(tum)h(Gra)o -(v.)f Fo(9)168 1056 y Fx(\(1992\))d(1151-1197.)118 1150 -y([12])23 b(D.E.)35 b(Kn)o(uth,)41 b Fz(F)m(undamental)35 -b(A)o(lgorithms,)168 1206 y(vol.)25 b(1)h(of)g(the)f("A)o(rt)h(of)g -(Computer)g(Pr)n(o)n(gr)n(am-)168 1263 y(ming")15 b Fx(\(Addison-W)l -(esley)l(,)g(1968\).)1039 2827 y Fr(15)p eop -%%Page: 16 16 -16 15 bop 664 154 a Fy(TEST)26 b(R)n(UN)h(OUTPUT)118 -264 y Fa(\045**************************)o(*******)o(********)o(*******) -o(*******)o(********)o(******)118 320 y(\045)620 b(ATENSOR)47 -b(TEST)g(RUN.)118 377 y(\045)118 433 y(\045)549 b(V.A.Ilyin)22 -b(&)i(A.P.Kryukov)118 490 y(\045)430 b(E-mail:)70 b -(ilyin@theory.npi.msu.su)118 546 y(\045)620 b -(kryukov@theory.npi.msu.su)118 603 y(\045)118 659 y(\045)382 -b(Nucl.)23 b(Phys.)g(Inst.,)g(Moscow)g(State)g(Univ.)118 -716 y(\045)573 b(119899)23 b(Moscow,)g(RUSSIA)118 772 -y(\045**************************)o(*******)o(********)o(*******)o -(*******)o(********)o(******)118 885 y(\045)h(First)f(of)h(all)f(we)h -(have)f(to)h(load)f(the)g(ATENSOR)g(program)g(using)g(the)h(one)f(of)h -(the)118 941 y(\045)g(following)e(command:)118 998 y(\045)167 -b(1\))24 b(in)f("atensor.red"$)213 b(\045)24 b(If)f(we)h(load)f(source) -g(code)118 1054 y(\045)167 b(2\))24 b(load)f(atensor$)309 -b(\045)24 b(If)f(we)h(load)f(binary)g(\(compiled\))g(code.)118 -1111 y(load)g(atensor;)118 1224 y(\(atensor\))118 1337 -y(\045)h(To)f(control)g(of)h(total)f(execution)g(time)g(clear)g(timer:) -118 1393 y(showtime;)118 1506 y(Time:)g(0)h(ms)118 1619 -y(\045)g(Switch)f(on)g(the)h(switch)f(TIME)g(to)h(control)f(of)g -(executing)g(time)118 1675 y(\045)h(for)f(each)h(statement.)118 -1732 y(\045on)g(time$)118 1845 y(\045)g(Let)f(us)h(introduce)f(the)g -(antisymmetric)f(tensor)h(of)h(the)f(second)g(order.)118 -1901 y(tensor)g(a2;)118 2014 y(\045)h(The)f(antisymmetric)f(property)h -(can)h(be)f(expressed)g(as:)118 2071 y(tsym)g(a2\(i,j\)+a2\(j,i\);)118 -2183 y(\045)h(The)f(K-basis)g(that)h(span)f(K)h(subspace)e(is:)118 -2240 y(kbasis)h(a2;)118 2353 y(a2\(i,j\))g(+)h(a2\(j,i\))118 -2409 y(1)118 2522 y(\045)g(Let)f(us)h(input)f(very)g(simple)g(example:) -118 2579 y(a2\(k,k\);)118 2692 y(0)1039 2827 y Fr(16)p -eop -%%Page: 17 17 -17 16 bop 118 210 a Fa(\045)24 b(By)f(the)h(way)f(the)h(next)f(two)h -(expressions)e(looks)h(like)g(different)g(ones:)118 267 -y(a2\(i,j\);)118 379 y(a2\(i,j\))118 492 y(a2\(j,i\);)118 -605 y(a2\(j,i\))118 718 y(\045)h(But)f(the)h(difference)e(of)i(them)f -(has)h(a)f(correct)g(value:)118 775 y(a2\(j,i\)-a2\(i,j\);)118 -888 y(2*a2\(j,i\))118 1000 y(\045)h(Next)f(examples.)g(For)g(this)h -(purpose)e(we)i(introduce)f(3)g(abstract)118 1057 y(\045)h(vectors)f(-) -g(v1,v2,v3:)118 1113 y(tensor)g(v1,v2,v3;)118 1226 y(\045)h(The)f -(following)g(expression)f(equal)i(zero:)118 1283 y -(a2\(i,j\)*v1\(i\)*v1\(j\);)118 1396 y(0)118 1509 y(\045)g(It)f(is)h -(interest)f(that)g(the)h(result)f(is)g(consequence)g(of)g(the)h -(equivalence)118 1565 y(\045)g(of)f(the)h(name)f(of)h(tensors.)118 -1678 y(\045)g(While)f(the)g(next)h(one)f(-)h(not:)118 -1734 y(a2\(i,j\)*v1\(i\)*v2\(j\);)118 1847 y(a2\(i,j\)*v1\(i\)*v2\(j\)) -118 1960 y(\045)g(Well.)f(Let)g(us)h(introduce)f(the)g(symmetric)g -(tensor)g(of)g(the)h(second)f(order.)118 2017 y(tensor)g(s2;)118 -2130 y(tsym)g(s2\(i,j\)-s2\(j,i\);)118 2299 y(\045)h(Their)f(K-basis)g -(look)g(like)h(for)f(a2)h(excepted)e(sign:)118 2355 y(kbasis)h(s2;)118 -2468 y(s2\(j,i\))g(+)h(\(-1\)*s2\(i,j\))118 2525 y(1)118 -2638 y(\045)g(Of)f(course)g(the)h(contraction)e(symmetric)47 -b(and)23 b(antisymmetric)f(tensors)118 2694 y(\045)i(equal)f(zero:)1039 -2827 y Fr(17)p eop -%%Page: 18 18 -18 17 bop 118 154 a Fa(a2\(i,j\)*s2\(i,j\);)118 267 y(0)118 -379 y(\045)24 b(By)f(the)h(way,)f(the)h(next)f(example)g(not)g(so)h -(trivial)f(for)g(computer...)118 436 y(a2\(i,j\)*a2\(j,k\)*a2\(k,i\);) -118 549 y(0)118 662 y(\045)h(Much)f(more)g(interesting)g(examples)g(we) -g(can)h(demonstrate)e(with)h(the)118 718 y(\045)h(the)f(tensor)g -(higher)g(order.)g(For)h(example)f(full)g(antisymmetric)f(tensor)118 -775 y(\045)i(of)f(the)h(third)f(order:)118 831 y(tensor)g(a3;)118 -944 y(\045)h(The)f(antisymmetric)f(property)h(we)h(can)f(introduce)g -(through)g(the)118 1000 y(\045)h(permutation)e(of)i(the)f(two)h(first)f -(indices:)118 1057 y(tsym)g(a3\(i,j,k\)+a3\(j,i,k\);)118 -1170 y(\045)h(And)f(the)h(cyclic)f(permutation)f(all)i(of)f(them:)118 -1226 y(tsym)g(a3\(i,j,k\)-a3\(j,k,i\);)118 1339 y(\045)h(The)f(K)h -(basis)f(of)h(a3)f(consist)g(of)h(5)g(vectors:)118 1396 -y(kbasis)f(a3;)118 1509 y(a3\(k,i,j\))g(+)g(a3\(j,i,k\))118 -1565 y(a3\(k,j,i\))g(+)g(\(-1\)*a3\(j,i,k\))118 1621 -y(a3\(i,k,j\))g(+)g(\(-1\)*a3\(j,i,k\))118 1678 y(a3\(i,j,k\))g(+)g -(a3\(j,i,k\))118 1734 y(a3\(j,k,i\))g(+)g(a3\(j,i,k\))118 -1791 y(5)118 1904 y(\045)h(In)f(the)h(beginning)f(some)g(very)g(simple) -g(examples:)118 1960 y(a3\(i,k,i\);)118 2073 y(0)118 -2186 y(a3\(i,j,k\)*s2\(i,j\);)118 2299 y(0)118 2412 y(\045)h(The)f -(full)h(symmetric)e(tensor)h(of)h(the)f(third)h(order)f(may)g(be)h -(introduce)118 2468 y(\045)g(by)f(the)h(similar)f(way:)118 -2525 y(tensor)g(s3;)118 2638 y(tsym)g(s3\(i,j,k\)-s3\(j,i,k\);)1039 -2827 y Fr(18)p eop -%%Page: 19 19 -19 18 bop 118 154 a Fa(tsym)23 b(s3\(i,j,k\)-s3\(j,k,i\);)118 -267 y(kbasis)g(s3;)118 379 y(s3\(k,j,i\))g(+)g(\(-1\)*s3\(i,j,k\))118 -436 y(s3\(k,i,j\))g(+)g(\(-1\)*s3\(i,j,k\))118 492 y(s3\(j,k,i\))g(+)g -(\(-1\)*s3\(i,j,k\))118 549 y(s3\(j,i,k\))g(+)g(\(-1\)*s3\(i,j,k\))118 -605 y(s3\(i,k,j\))g(+)g(\(-1\)*s3\(i,j,k\))118 662 y(5)118 -775 y(\045)h(The)f(next)h(examples)e(demonstrate)h(some)g(calculation)f -(with)i(them:)118 831 y(s3\(i,j,k\)-s3\(i,k,j\);)118 -944 y(0)118 1057 y(s3\(i,j,k\)*a2\(i,j\);)118 1170 y(0)118 -1283 y(a3\(i,j,k\)*s2\(i,j\);)118 1396 y(0)118 1509 y -(s3\(i,j,k\)*a3\(i,j,k\);)118 1621 y(0)118 1734 y(\045)g(Now)f(we)h -(consider)f(very)g(important)g(physical)f(case)i(-)f(Rieman)g(tensor:) -118 1791 y(tensor)g(ri;)118 1904 y(\045)h(It)f(has)h(the)f -(antisymmetric)f(property)h(with)h(respect)e(to)i(the)f(permutation)118 -1960 y(\045)h(of)f(the)h(first)f(two)h(indices:)118 2017 -y(tsym)f(ri\(i,j,k,l\))g(+)h(ri\(j,i,k,l\);)118 2130 -y(\045)g(It)f(has)h(the)f(antisymmetric)f(property)h(with)h(respect)e -(to)i(the)f(permutation)118 2186 y(\045)h(of)f(the)h(second)f(two)g -(indices:)118 2242 y(tsym)g(ri\(i,j,k,l\))g(+)h(ri\(i,j,l,k\);)118 -2355 y(\045)g(And)f(the)h(triple)f(term)g(identity)g(with)g(cyclic)g -(permutation)g(the)118 2412 y(\045)h(third)f(of)h(them:)118 -2468 y(tsym)f(ri\(i,j,k,l\))g(+)h(ri\(i,k,l,j\))e(+)i(ri\(i,l,j,k\);) -118 2581 y(\045)g(The)f(corresponding)f(K)i(basis)f(consist)g(of)h -(22\(!\))f(vectors:)118 2638 y(kbasis)g(ri;)1039 2827 -y Fr(19)p eop -%%Page: 20 20 -20 19 bop 118 154 a Fa(ri\(l,k,i,j\))22 b(+)i(\(-1\)*ri\(j,i,k,l\))118 -210 y(ri\(l,k,j,i\))e(+)i(ri\(j,i,k,l\))118 267 y(ri\(l,i,k,j\))e(+)i -(\(-1\)*ri\(j,k,i,l\))118 323 y(ri\(l,i,j,k\))e(+)i(ri\(j,k,i,l\))118 -379 y(ri\(l,j,k,i\))e(+)i(\(-1\)*ri\(j,k,i,l\))e(+)i(ri\(j,i,k,l\))118 -436 y(ri\(l,j,i,k\))e(+)i(ri\(j,k,i,l\))f(+)g(\(-1\)*ri\(j,i,k,l\))118 -492 y(ri\(k,l,i,j\))f(+)i(ri\(j,i,k,l\))118 549 y(ri\(k,l,j,i\))e(+)i -(\(-1\)*ri\(j,i,k,l\))118 605 y(ri\(k,i,l,j\))e(+)i -(\(-1\)*ri\(j,k,i,l\))e(+)i(ri\(j,i,k,l\))118 662 y(ri\(k,i,j,l\))e(+)i -(ri\(j,k,i,l\))f(+)g(\(-1\)*ri\(j,i,k,l\))118 718 y(ri\(k,j,l,i\))f(+)i -(\(-1\)*ri\(j,k,i,l\))118 775 y(ri\(k,j,i,l\))e(+)i(ri\(j,k,i,l\))118 -831 y(ri\(i,l,k,j\))e(+)i(ri\(j,k,i,l\))118 888 y(ri\(i,l,j,k\))e(+)i -(\(-1\)*ri\(j,k,i,l\))118 944 y(ri\(i,k,l,j\))e(+)i(ri\(j,k,i,l\))f(+)g -(\(-1\)*ri\(j,i,k,l\))118 1000 y(ri\(i,k,j,l\))f(+)i -(\(-1\)*ri\(j,k,i,l\))e(+)i(ri\(j,i,k,l\))118 1057 y(ri\(i,j,l,k\))e(+) -i(\(-1\)*ri\(j,i,k,l\))118 1113 y(ri\(i,j,k,l\))e(+)i(ri\(j,i,k,l\))118 -1170 y(ri\(j,l,k,i\))e(+)i(ri\(j,k,i,l\))f(+)g(\(-1\)*ri\(j,i,k,l\))118 -1226 y(ri\(j,l,i,k\))f(+)i(\(-1\)*ri\(j,k,i,l\))e(+)i(ri\(j,i,k,l\))118 -1283 y(ri\(j,k,l,i\))e(+)i(ri\(j,k,i,l\))118 1339 y(ri\(j,i,l,k\))e(+)i -(ri\(j,i,k,l\))118 1396 y(22)118 1509 y(\045)g(So)f(we)h(get)f(the)h -(answer)f(for)g(any)h(expressions)e(with)i(3)f(and)h(more)f(terms)g(of) -118 1565 y(\045)h(Rieman)f(tensors)g(with)g(not)h(more)f(then)g(2)h -(terms.)f(For)g(example:)118 1621 y(ri\(i,j,k,l\)+ri\(j,k,l,i\)+ri\()o -(k,l,i,j)o(\)+ri\(l,i)o(,j,k\);)118 1734 y(\(-2\)*ri\(l,j,i,k\))f(+)i -(4*ri\(l,i,j,k\))118 1847 y(\045)g(This)f(three)g(identities)g(leads)g -(us)h(to)f(very)h(important)e(symmetry)h(property)g(with)118 -1904 y(\045)h(respect)f(to)g(exchange)g(of)h(pairs)f(indices:)118 -1960 y(ri\(i,j,k,l\)-ri\(k,l,i,j\);)118 2073 y(0)118 -2186 y(\045)h(Let)f(us)h(start)f(with)g(simple)g(example:)118 -2242 y(ri\(m,n,m,n\)-ri\(m,n,n,m\);)118 2355 y(2*ri\(m,n,m,n\))118 -2468 y(\045)h(Much)f(more)g(complicated)g(example)g(is:)118 -2525 y(a2\(m,n\)*ri\(m,n,c,d\))e(+)j(a2\(k,l\)*ri\(c,d,l,k\);)118 -2638 y(0)1039 2827 y Fr(20)p eop -%%Page: 21 21 -21 20 bop 118 154 a Fa(\045)24 b(The)f(answer)g(is)h(trivial)f(but)g -(not)h(so)f(simple)g(to)h(obtain)f(one.)118 267 y(\045)h(The)f -(dimension)g(of)h(the)f(full)g(space)g(is)h(6!)g(=)f(720.)118 -323 y(\045)h(The)f(K)h(basis)f(consists)g(of)h(690)f(vectors)g(\(to)g -(reduce)g(output)g(we)118 379 y(\045)h(commented)e(the)i(last)f -(statement\):)118 436 y(\045kbasis)g(ri\(a2\);)118 549 -y(\045)h(One)f(else)h(nontrivial)e(examples)h(with)g(Riemann)g -(tensors:)118 605 y(\(ri\(i,j,k,l\)-ri\(i,k,j,l\)\)*a)o(2\(i,j\);)142 -718 y(a2\(i,j\)*ri\(i,j,k,l\))118 775 y(---------------------)357 -831 y(2)118 944 y(\045*****************)f(END)h(OF)h(TEST)f(RUN)g -(************************)118 1000 y(\045)h(The)f(total)g(execution)g -(time)g(is:)118 1057 y(showtime;)118 1170 y(Time:)g(196940)g(ms)48 -b(plus)23 b(GC)h(time:)f(10670)g(ms)118 1283 y($)118 -1396 y(END$)1039 2827 y Fr(21)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF - DELETED r37/packages/plot/bild1.ps Index: r37/packages/plot/bild1.ps ================================================================== --- r37/packages/plot/bild1.ps +++ /dev/null @@ -1,1037 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: gnuplot -%%DocumentFonts: Helvetica -%%BoundingBox: 50 50 554 770 -%%Pages: (atend) -%%EndComments -/gnudict 40 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/vshift -46 def -/dl {10 mul} def -/hpt 31.5 def -/vpt 31.5 def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/PL { stroke gnulinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/P { stroke [] 0 setdash - currentlinewidth 2 div sub M - 0 currentlinewidth V stroke } def -/D { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - P } def -/A { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - P } def -/C { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - P } def -/S { 2 copy A C} def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.040 0.040 scale -0 setgray -/Helvetica findfont 140 scalefont setfont -newpath -LTa -840 2917 M -6129 0 V -3905 351 M -0 4618 V -LTb -840 351 M -63 0 V -6066 0 R --63 0 V -756 351 M -(-2.5) Rshow -840 864 M -63 0 V -6066 0 R --63 0 V -756 864 M -(-2) Rshow -840 1377 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(-1.5) Rshow -840 1890 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(-1) Rshow -840 2403 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(-0.5) Rshow -840 2917 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(0) Rshow -840 3430 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(0.5) Rshow -840 3943 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(1) Rshow -840 4456 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(1.5) Rshow -840 4969 M -63 0 V -6066 0 R --63 0 V --6150 0 R -(2) Rshow -840 351 M -0 63 V -0 4555 R -0 -63 V -840 211 M -(-6) Cshow -1862 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(-4) Cshow -2883 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(-2) Cshow -3905 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(0) Cshow -4926 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(2) Cshow -5948 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(4) Cshow -6969 351 M -0 63 V -0 4555 R -0 -63 V -0 -4695 R -(6) Cshow -840 351 M -6129 0 V -0 4618 V --6129 0 V -840 351 L -140 2660 M -currentpoint gsave translate 90 rotate 0 0 M -(x) Cshow -grestore -3904 71 M -(y) Cshow -LT0 -1351 351 M -0 4618 R -6458 351 M -0 4618 R -3910 2933 M -0 -5 V --11 -8 V --25 -2 V --12 1 V --2 0 V --2 -2 V --4 -1 V --54 15 V --37 11 V --28 12 V --10 5 V --12 6 V --26 15 V --67 42 V --17 13 V --10 7 V --37 32 V --25 23 V --28 27 V --31 33 V --31 34 V --26 31 V --27 33 V --31 38 V --26 36 V --24 32 V --24 34 V --26 37 V --32 48 V --22 34 V --25 38 V --34 54 V --25 40 V --17 28 V --20 33 V --18 30 V --9 16 V --32 53 V --9 16 V --8 13 V --44 78 V --35 62 V --29 51 V --24 43 V --23 42 V --27 49 V --8 15 V --10 19 V --47 85 V --9 18 V --35 65 V --33 63 V --37 68 V --38 73 V --8 15 V --9 17 V --19 36 V --3 5 V --4 9 V --1 2 V --1 0 V -0 2 V --6 11 V --37 70 V --23 46 V --14 27 V --41 77 V --3 7 V --9 18 V --18 34 V --3 6 V --8 16 V -3889 2893 M --12 26 V -20 22 V -8 25 V -1 28 V -11 24 V --3 72 V -2 91 V -6 63 V -5 39 V -6 48 V -3 25 V -6 37 V -4 27 V -17 96 V -3 15 V -3 12 V -19 87 V -11 46 V -15 56 V -21 72 V -24 72 V -12 35 V -18 52 V -32 78 V -26 60 V -26 52 V -8 17 V -18 34 V -18 34 V -17 28 V -21 34 V -40 58 V -13 18 V -26 33 V -27 29 V -13 14 V -38 33 V -32 24 V -24 15 V -2 1 V -26 11 V -15 4 V -47 4 V -7 -1 V -5 0 V -5 -1 V -10 -3 V -58 -41 V -27 -45 V -29 -85 V -8 -42 V -5 -36 V -3 -71 V -0 -26 V --2 -47 V --2 -29 V --3 -31 V --12 -96 V --5 -25 V --11 -55 V --14 -59 V --18 -67 V --23 -73 V --21 -60 V --29 -76 V --2 -6 V --31 -68 V --32 -65 V --29 -55 V --16 -28 V --14 -24 V --32 -50 V --1 -2 V -0 -1 V --16 -22 V --15 -22 V --25 -33 V --51 -60 V --40 -43 V --16 -16 V --33 -30 V --30 -24 V --23 -17 V --35 -22 V --25 -14 V --26 -14 V --30 -13 V --3 -1 V --33 -12 V --39 -8 V --35 -6 V --13 -2 V --9 1 V --14 -25 V --1 -58 V -1 -53 V -4 -68 V -2 -32 V -4 -37 V -3 -43 V -6 -53 V -1 -7 V -15 -110 V -9 -56 V -15 -76 V -14 -69 V -18 -82 V -28 -107 V -19 -71 V -20 -68 V -22 -71 V -31 -92 V -13 -39 V -29 -82 V -8 -22 V -22 -60 V -28 -73 V -12 -30 V -19 -50 V -18 -45 V -26 -64 V -30 -71 V -4 -10 V -11 -27 V -46 -108 V -5 -12 V -26 -60 V -28 -62 V -11 -24 V -22 -49 V -22 -50 V -27 -59 V -10 -23 V -13 -29 V -24 -52 V -19 -41 V -22 -47 V -23 -51 V -15 -33 V -5 -9 V -8 -17 V -8 -19 V -8 -16 V -6 -12 V -9 -21 V -6 -12 V -37 -7 R --14 30 V --7 18 V --8 18 V --11 24 V --10 23 V --3 8 V --7 15 V --8 19 V --2 4 V --22 52 V --17 40 V --33 76 V --27 65 V --21 51 V --21 53 V --28 68 V --24 63 V --17 44 V --18 47 V --28 75 V --13 37 V --23 66 V --19 57 V --13 38 V --17 52 V --7 25 V --30 101 V --3 10 V --1 5 V --18 66 V --15 61 V --13 57 V --9 43 V --7 38 V --5 29 V --6 32 V --7 49 V --2 15 V --2 17 V --3 25 V --8 93 V --1 21 V --1 9 V -0 21 V -0 88 V -4 66 V -6 55 V -13 77 V -2 8 V -19 80 V -13 44 V -20 58 V -38 93 V -22 49 V -8 18 V -21 43 V -15 31 V -12 25 V -12 25 V -10 21 V -11 21 V -13 27 V -9 19 V -26 51 V -22 46 V -12 25 V -5 10 V -23 50 V -16 33 V -8 18 V -3 8 V -7 15 V -16 37 V -4 10 V -15 35 V -15 35 V -29 75 V -27 74 V -7 20 V -21 61 V -22 72 V -2 6 V -1 6 V -5 15 V -32 121 V -4 17 V -4 16 V -23 106 V -6 35 V -4 25 V -4 23 V -9 64 V -6 58 V -4 44 V -3 56 V -1 63 V -0 45 V --1 24 V --4 48 V --8 67 V --14 68 V --29 78 V --27 52 V --3 5 V --1 2 V --5 6 V --67 58 V --13 7 V --10 3 V --41 7 V --33 -1 V --38 -7 V --35 -14 V --10 -5 V --18 -9 V --23 -13 V --26 -18 V --33 -26 V --22 -20 V --35 -33 V --36 -38 V --49 -59 V --3 -4 V --3 -3 V --5 -8 V --48 -65 V --2 -3 V --26 -38 V --25 -39 V -0 -1 V --1 -1 V --31 -51 V --33 -56 V --1 -2 V --46 -83 V --5 -9 V --2 -4 V --28 -53 V --24 -47 V --4 -9 V --29 -56 V --27 -56 V --23 -46 V --21 -42 V --12 -22 V --8 -16 V --20 -39 V --21 -38 V --30 -50 V --33 -50 V --42 -53 V --2 -3 V --2 -2 V --37 -35 V --26 -19 V --25 -13 V --26 -10 V --26 -5 V --23 -1 V --21 1 V --22 4 V --26 8 V --34 14 V --9 5 V --28 16 V --32 24 V --24 18 V --21 18 V --16 14 V --7 8 V --19 18 V --8 8 V --27 29 V --34 39 V --8 9 V -currentpoint stroke M --16 19 V --57 73 V --5 6 V --2 4 V --34 46 V --31 44 V --7 10 V --30 44 V --27 41 V --10 15 V --12 19 V --27 42 V --23 36 V --22 37 V --26 41 V --24 40 V --10 17 V --37 63 V --12 19 V --26 46 V --35 61 V --23 40 V --21 38 V --31 54 V --12 22 V --15 27 V --31 56 V --15 28 V --7 12 V --7 12 V --8 15 V --23 41 V --25 48 V --23 41 V --36 67 V --5 11 V --5 8 V -4768 360 M --8 18 V --14 34 V --20 49 V --7 16 V --6 15 V --29 71 V --18 45 V --19 49 V --24 63 V --22 58 V --7 17 V --7 20 V --30 81 V --5 14 V --2 7 V --23 63 V --17 50 V --11 34 V --23 71 V --13 44 V --17 57 V --18 61 V --11 42 V --19 73 V --14 60 V --32 162 V --1 0 V -0 1 V --22 167 V --6 73 V --3 70 V -0 9 V -0 82 V -7 121 V -6 53 V -2 14 V -4 25 V -6 38 V -7 35 V -2 12 V -5 21 V -22 90 V -10 38 V -20 65 V -20 61 V -10 28 V -6 15 V -10 29 V -6 17 V -21 55 V -22 56 V -16 41 V -1 4 V -1 2 V -2 4 V -29 74 V -29 73 V -5 14 V -5 13 V -6 16 V -7 17 V -31 82 V -16 43 V -20 56 V -23 63 V -22 66 V -19 59 V -16 52 V -22 75 V -1 3 V -1 1 V -9 35 V -7 25 V -5 20 V -1 0 V -9 37 V -22 92 V -18 82 V -0 3 V -1 3 V -12 65 V -17 108 V -9 67 V -1 15 V -2 19 V -6 69 V -4 66 V -1 59 V -0 65 V -0 12 V --6 82 V --7 62 V --5 30 V --10 51 V --10 38 V --19 56 V --22 49 V --27 45 V --34 41 V --6 5 V --43 28 V --46 20 V --49 5 V --56 -6 V --68 -24 V --12 -6 V --48 -27 V --40 -28 V --18 -15 V --18 -15 V --23 -20 V --28 -26 V --6 -6 V --5 -5 V --4 -4 V --17 -17 V --20 -21 V --37 -42 V --7 -8 V --5 -6 V --8 -10 V --38 -47 V --47 -63 V --32 -44 V --14 -21 V --23 -33 V --19 -29 V --10 -16 V --11 -17 V --22 -34 V --24 -37 V --21 -34 V --24 -36 V --37 -60 V --37 -59 V --33 -51 V --25 -36 V --41 -58 V --6 -9 V --6 -7 V --32 -40 V --31 -36 V --30 -30 V --32 -27 V --13 -9 V --26 -17 V --50 -23 V --8 -3 V --41 -8 V --27 -1 V --20 2 V --22 3 V --58 19 V --1 0 V -0 1 V --1 0 V --65 37 V --29 20 V --15 12 V --38 32 V --39 38 V --7 7 V --14 15 V --51 56 V --10 12 V --6 7 V --5 6 V --35 43 V --30 39 V --30 41 V --24 33 V --23 31 V --24 35 V --22 32 V --13 20 V --24 37 V --27 41 V --6 9 V --7 11 V --42 67 V --7 12 V --23 37 V --24 39 V --11 19 V --25 41 V --25 42 V --18 31 V --20 33 V --3 6 V --3 6 V --5 7 V --11 20 V --6 10 V --27 48 V --18 30 V --8 16 V --14 24 V --25 44 V --3 5 V --2 5 V --2 3 V --1 1 V --9 16 V --9 17 V -4802 353 M --4 10 V --2 4 V --1 3 V --9 22 V --8 21 V --4 10 V --22 57 V --25 64 V --3 8 V --1 5 V --20 53 V --19 51 V --20 55 V --16 47 V --13 37 V --9 26 V --14 41 V --7 21 V --5 17 V --12 38 V --20 62 V --18 63 V --4 14 V --4 13 V --17 61 V --10 40 V --12 46 V --13 55 V --10 43 V --15 74 V --17 91 V --3 19 V --2 15 V --11 82 V --8 74 V --2 30 V --5 70 V --2 73 V -0 34 V -3 87 V -4 64 V -6 67 V -10 71 V -2 15 V -12 70 V -13 60 V -10 43 V -8 36 V -19 71 V -18 63 V -8 27 V -9 30 V -9 27 V -5 15 V -9 28 V -10 31 V -2 7 V -14 42 V -27 78 V -15 44 V -1 3 V -26 77 V -10 29 V -4 11 V -19 56 V -17 49 V -8 24 V -14 43 V -14 44 V -13 39 V -12 38 V -18 59 V -16 53 V -19 69 V -11 37 V -7 27 V -14 53 V -11 45 V -12 50 V -13 59 V -6 25 V -3 14 V -12 59 V -21 118 V -1 7 V -0 5 V -1 3 V -1 4 V -0 3 V -11 80 V -7 57 V -6 55 V -4 48 V -5 80 V -2 86 V -0 33 V --3 75 V --5 68 V --7 57 V --9 58 V --24 98 V --11 36 V --11 28 V --21 46 V --20 35 V --14 20 V --9 13 V --9 10 V --2344 3 R -16 -27 V -14 -24 V -6 -10 V -2 -4 V -6 -9 V -5 -10 V -12 -20 V -20 -33 V -16 -26 V -15 -25 V -19 -31 V -21 -34 V -28 -45 V -31 -49 V -12 -18 V -28 -43 V -28 -42 V -29 -43 V -30 -43 V -5 -7 V -4 -7 V -14 -19 V -56 -75 V -3 -4 V -34 -44 V -32 -40 V -7 -8 V -8 -9 V -40 -46 V -53 -56 V -35 -33 V -33 -29 V -36 -28 V -32 -22 V -10 -6 V -46 -24 V -49 -19 V -3 -1 V -2 -1 V -45 -8 V -59 0 V -37 7 V -39 13 V -36 19 V -11 6 V -30 21 V -33 26 V -4 3 V -currentpoint stroke M -48 46 V -16 18 V -22 24 V -27 32 V -23 28 V -28 36 V -12 16 V -20 26 V -34 46 V -32 45 V -34 48 V -34 47 V -10 14 V -39 53 V -24 32 V -17 22 V -17 23 V -37 48 V -5 6 V -32 39 V -28 33 V -30 35 V -36 39 V -42 44 V -16 16 V -22 20 V -43 38 V -21 17 V -16 12 V -17 12 V -9 7 V -9 6 V -stroke -grestore -end -showpage -%%Trailer -%%Pages: 1 DELETED r37/packages/plot/bild2.ps Index: r37/packages/plot/bild2.ps ================================================================== --- r37/packages/plot/bild2.ps +++ /dev/null @@ -1,2171 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: gnuplot -%%DocumentFonts: Helvetica -%%BoundingBox: 50 50 554 770 -%%Pages: (atend) -%%EndComments -/gnudict 40 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/vshift -46 def -/dl {10 mul} def -/hpt 31.5 def -/vpt 31.5 def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/PL { stroke gnulinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/P { stroke [] 0 setdash - currentlinewidth 2 div sub M - 0 currentlinewidth V stroke } def -/D { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - P } def -/A { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/B { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - P } def -/C { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/T { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - P } def -/S { 2 copy A C} def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.040 0.040 scale -0 setgray -/Helvetica findfont 140 scalefont setfont -newpath -LTb -3600 4829 M -(Enneper Surface) Cshow -LT0 -LT1 -4115 2259 M -433 -207 V --244 -20 R -244 20 V --697 211 R -453 -231 V --453 231 R -264 -4 V --363 199 R -354 -200 V --255 5 R --377 222 R -372 -224 V --372 224 R -278 -27 V -LT0 -2751 2928 M -371 85 V --371 -85 R -30 -21 V -318 75 V -23 31 V -6 0 R -331 87 V -3099 2982 M -6 0 R -0 4 V -6 0 R -275 72 V -73 42 V -2347 2848 M -402 80 V --402 -80 R -90 -12 V -342 68 V --28 24 R -708 172 R -6 0 R -291 88 V -3386 3058 M -18 4 R -0 4 V -6 0 R -229 68 V -117 54 V -LT1 -3457 2647 M -288 -188 V --271 26 R --306 211 R -306 -212 V --306 212 R -289 -49 V -LT0 -3756 3188 M -6 0 R -252 88 V -3639 3134 M -18 4 R -0 4 V -12 0 R -0 4 V -6 0 R -183 63 V -156 67 V -1914 2774 M -432 76 V --432 -76 R -154 -3 V -360 68 V --81 9 R -LT1 -3225 2825 M -234 -180 V --291 51 R --237 199 R -240 -196 V --240 196 R -294 -70 V -LT0 -4014 3276 M -6 0 R -208 86 V -3858 3209 M -36 12 R -0 4 V -18 4 R -0 4 V -12 0 R -0 4 V -6 0 R -0 4 V -12 0 R -0 4 V -12 0 R -0 4 V -6 0 R -0 4 V -12 0 R -0 4 V -6 0 R -6 4 V -6 0 R -0 4 V -6 0 R -6 4 V -6 0 R -30 13 V -190 80 V -LT1 -4309 2263 M -410 -185 V --171 -26 R -6 0 R -165 26 V --604 181 R -12 0 R -182 4 V -LT0 -1454 2708 M -462 64 V --462 -64 R -223 3 V -378 60 V --141 3 R -1185 208 R -0 -4 R -7 -29 V -240 66 V -36 40 V -6 0 R -0 4 V -LT1 -3963 2441 M -342 -180 V --190 -2 R --363 199 R -12 0 R -199 -17 V -LT0 -2781 2907 M -6 -4 R -52 -20 V -264 68 V --4 31 R -287 76 R --40 -43 R -6 0 R -0 4 V -6 0 R -201 63 V -60 44 V -6 0 R -0 4 V -LT1 -3054 2990 M -48 -44 R -114 -116 V -6 0 R -0 -4 V --291 69 R --170 185 R -108 -124 V -54 -60 R -6 -4 V --168 188 R -276 -88 V -643 -383 R -276 -168 V --204 17 R --295 189 R -12 0 R -0 -4 V -6 0 R -205 -34 V -LT0 -3639 3134 M --80 -52 R -6 0 R -0 4 V -6 0 R -169 60 V -102 56 V -6 0 R -0 4 V -2437 2836 M -12 -4 R -102 -13 V -282 64 V --52 24 R -LT1 -4228 3362 M -6 0 R -162 82 V -4038 3282 M -66 36 R -6 0 V -12 8 R -6 0 V -6 4 R -6 0 V -0 4 R -6 0 V -0 4 R -12 0 V -0 4 R -18 7 V -220 95 V -3457 2768 M -222 -160 V --222 39 R --232 178 R -6 0 R -0 -4 V -6 0 R -220 -53 V -LT0 -3858 3209 M --118 -63 R -24 8 R -0 4 V -6 0 R -6 4 V -6 0 R -0 4 V -6 0 R -101 40 V -96 52 V -6 0 R -12 8 V -6 0 R -0 4 V -12 0 R -0 4 V -6 0 R -0 4 V -LT1 -2943 3140 M -108 -144 V --290 84 R --107 169 R -108 -168 V --108 168 R -289 -109 V -LT0 -971 2650 M -486 60 V -971 2650 M -296 10 V -390 48 V --203 0 R -614 63 R -18 0 R -157 -11 V -300 56 V --106 20 R -LT1 -3289 2914 M -162 -140 V -6 0 R -0 -4 V --232 55 R --171 165 R -90 -32 R -145 -44 V -LT0 -3346 3015 M --11 -41 R -12 40 V --12 -40 R -174 57 V -48 48 V -6 0 R -0 4 V -3106 2949 M -31 -34 R -84 28 R -114 32 V -0 -1 R -224 108 R --50 -51 R -6 0 R -0 4 V -6 0 R -136 51 V -78 56 V -6 0 R -0 4 V -LT1 -4113 2433 M -325 -158 V --129 -12 R -12 0 R -117 12 V --475 166 R -12 0 R -138 -8 V -LT0 -2839 2883 M -6 -4 R -75 -23 V -36 12 V -150 81 R -932 333 R --149 -76 R -111 55 R -132 68 R -6 0 V -LT1 -4396 3444 M -6 0 R -113 78 V -4176 3349 M -0 4 R -6 0 V -0 4 R -6 0 V -0 4 R -82 50 V -245 111 V -4438 2275 M -6 0 R -379 -165 V --104 -32 R -6 0 R -98 32 V --514 153 R --464 319 R -264 -148 V --146 7 R --283 168 R -12 0 R -0 -4 V -6 0 R -147 -23 V --959 692 R -54 -132 V --286 107 R --47 153 R -48 -152 V --48 152 R -279 -128 V -290 -227 R -12 -12 V -72 -88 R -24 -28 V -6 0 R -0 -4 V --236 75 R --111 150 R -6 0 R -0 -4 V -6 0 R -221 -89 V -456 -324 R -198 -136 V -6 0 R -0 -4 V --156 26 R --223 159 R -6 0 R -0 -4 V -6 0 R -163 -41 V -LT0 -3740 3146 M --83 -60 R -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -101 41 V -90 60 V -6 0 R -0 4 V -6 0 R -0 4 V -1677 2711 M -18 0 R -223 -4 V -312 56 V --162 8 R -483 48 R -12 0 R -122 -21 V -228 60 V --74 25 R -LT1 -3471 2853 M -156 -128 V -6 0 R -0 -4 V --176 47 R --168 146 R -6 0 R -0 -4 V -6 0 R -170 -57 V --358 312 R -60 -116 V -6 0 R -0 -4 V --236 95 R --57 134 R -6 0 R -221 -109 V -1063 184 R --176 -88 R -36 28 R -6 0 V -0 4 R -31 15 V -156 76 V -0 4 R -6 0 V -0 4 R -6 0 V -0 4 R -6 0 V -LT0 -3335 2974 M -0 -4 R -11 -36 V -139 50 V -18 40 V -6 0 R -0 4 V -380 178 R --113 -71 R -30 12 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -40 20 V -78 52 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -LT1 -3358 2969 M -24 -28 R -84 -84 V -6 0 R -0 -4 V --183 61 R --113 133 R -6 0 R -0 -4 V -6 0 R -12 -8 V --317 356 R -6 -116 V --282 127 R -0 4 R -12 130 V -264 -145 V -LT0 -3509 3031 M --24 -47 R -6 0 R -0 4 V -6 0 R -105 42 V -48 52 V -6 0 R -0 4 V -2243 2760 M -18 0 R -174 -16 V -240 52 V --124 23 R -LT1 -4515 3522 M -0 4 R -66 66 V -4270 3411 M -0 4 R -6 0 V -0 4 R -41 46 V -264 127 V -LT0 -3657 3086 M --55 -56 R -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -75 33 V -78 60 V -6 0 R -0 4 V -2920 2856 M -6 -4 R -78 -20 V -0 -4 R -6 0 V -8 -1 R -119 88 R -LT1 -3955 2565 M -250 -132 V --92 0 R -12 0 R -80 0 V --360 149 R -12 0 R -0 -4 V -6 0 R -92 -13 V --199 125 R -186 -120 V -6 0 R -0 -4 V --103 16 R --213 141 R -6 0 R -0 -4 V -6 0 R -112 -29 V --465 382 R -6 -12 V --121 -13 R --63 118 R -6 0 R -0 -4 V -6 0 R -166 -89 V --194 193 R -12 -100 V --223 109 R --3 117 R -6 0 R -208 -126 V -506 -461 R -150 -112 V -6 0 R -0 -4 V --127 35 R --161 130 R -6 0 R -0 -4 V -6 0 R -120 -45 V -602 -371 R -6 0 R -295 -140 V --68 -18 R -6 4 R -62 14 V --393 140 R --113 828 R --136 -82 R -53 35 R -LT0 -3776 3135 M --81 -64 R -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -43 21 V -84 60 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -1267 2660 M -24 0 R -289 0 V -318 44 V --221 7 R -LT1 -3494 2906 M -102 -96 V -6 0 R -0 -4 V --131 47 R --113 116 R -42 -20 R -94 -43 V -4506 2293 M -6 0 R -351 -146 V --40 -37 R -0 4 R -40 33 V --425 128 R -2883 3391 M -0 4 R -47 93 V --311 48 R -0 4 R -66 109 V -245 -161 V -LT0 -3485 2984 M --3 -43 R -0 44 V -0 -44 R -89 40 V -24 44 V -6 0 R -0 4 V --255 -95 R -30 -38 R -78 32 R -30 12 V --2 1 R -LT1 -3267 3158 M -24 -84 V --178 91 R --16 100 R -6 0 R -164 -107 V -1003 253 R -4073 3308 M -0 4 R -6 0 V -0 4 R -24 32 V -210 112 V -0 4 R -6 0 V -LT0 -2685 2798 M -12 0 R -136 -24 V -180 48 V --93 34 R -682 174 R --31 -49 R -6 0 R -0 4 V -6 0 R -58 29 V -42 48 V -6 0 R -0 4 V -6 0 R -0 4 V -LT1 -3426 2995 M -48 -60 R -12 -24 V -6 0 R -0 -4 V --134 62 R --67 103 R -6 0 R -0 -4 V -6 0 R -6 -8 V --212 205 R -0 4 R -30 78 V --244 44 R -47 97 R -6 -4 R -191 -137 V -LT0 -3864 3179 M --102 -75 R -37 25 R -1918 2707 M -18 0 R -238 -12 V -246 52 V --177 13 R -1452 311 R --54 -57 R -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -31 17 V -60 60 V -6 0 R -0 4 V -6 0 R -0 4 V -LT1 -3396 3069 M --105 3 R --24 86 R -6 -4 R -102 -72 V -316 -315 R -142 -101 V --77 24 R -18 -4 R -0 -4 V -6 0 R -53 -16 V --230 138 R -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -70 -29 V --424 391 R -0 4 R -16 65 V --186 38 R -30 82 R -6 -4 R -150 -116 V -307 -371 R -90 -84 V -6 0 R -0 -4 V -6 0 R -0 -4 V --89 40 R --109 102 R -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -72 -38 V -243 -190 R -6 0 R -178 -110 V --62 9 R -12 0 R -0 -4 V -6 0 R -44 -5 V --261 134 R -471 -489 R -60 -164 R -23 -64 V --83 228 R -267 101 R -4310 1973 M -276 84 V -12 0 R -0 4 V --632 72 R -26 -225 V --26 225 R -84 24 V -177 44 R -3992 1908 M -318 64 V -4073 3308 M --156 -94 R -16 26 R -36 24 R -6 0 V -0 4 R -120 76 V -0 4 R -6 0 V -LT0 -3018 2827 M -110 -30 R -62 84 R -292 60 R -0 -4 R -6 -20 V -7 -15 R -12 4 R -52 32 V -12 44 V -LT1 -3523 2933 M -12 -16 R -48 -56 V -6 0 R -0 -4 V --95 49 R --68 89 R -LT0 -3571 2981 M --12 -43 R -6 0 R -44 27 V -24 44 V -6 0 R -0 4 V -LT1 -4017 2556 M -6 0 R -221 -116 V --39 -7 R -12 0 R -27 7 V --289 125 R -539 -263 R -6 0 R -262 133 V -205 -230 V -4637 2071 M -210 88 R -120 46 V -4581 3592 M -0 4 R -12 58 V -4317 3465 M --3 45 R -0 -44 V -0 44 R -279 144 V -3688 1876 M -27 221 V -252 36 V --1 0 R -3688 1876 M -306 32 V -2930 3488 M -0 4 R -94 72 V --339 85 R -0 4 R -119 88 V -220 -177 V -372 -495 R -0 20 R -5 37 V --134 32 R -16 69 R -6 -4 R -112 -97 V -LT0 -3762 3104 M --72 -65 R -18 12 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -6 12 V -6 0 R -12 16 V -6 0 R -6 12 V -6 0 R -12 16 V -6 0 R -0 4 V -6 0 R -0 4 V -6 0 R -0 4 V -2435 2744 M -18 0 R -186 -21 V -192 52 V --146 23 R -LT1 -3127 3347 M -6 4 R -67 58 V --270 79 R -94 76 R -6 -4 R -170 -151 V -LT0 -3641 3014 M --32 -49 R -6 0 R -0 4 V -6 0 R -21 15 V -36 44 V -6 0 R -0 4 V -6 0 R -0 4 V -LT1 -3283 3227 M -6 4 R -47 46 V --209 70 R -73 62 R -6 -4 R -130 -128 V -581 -63 R --118 -85 R -5 14 R -440 -703 R -6 0 R -270 -124 V --14 -23 R -12 24 R -2 -1 V --315 117 R --719 610 R --90 26 R -5 57 R -6 -4 R -24 -28 V -4762 2435 M -6 0 R -258 167 V -271 -228 V -4967 2205 M -6 0 R -324 169 V -3587 2885 M -61 -66 V --58 37 R -24 -16 R -0 -4 V -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -16 -9 V --125 114 R -18 -12 R -0 -4 V -6 0 R -40 -32 V -3403 1875 M -79 215 V -234 8 V --28 -222 R --285 -1 R -282 4 V --37 940 R -0 -4 R -94 -74 V --51 26 R -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -0 -4 V -6 0 R -27 -14 V --152 115 R -339 -528 R -24 -124 R -18 -72 V --42 196 R -209 70 R -3966 2133 M -172 265 R -108 48 R -105 53 V -108 -152 V -6 0 R -0 -4 V -4227 2201 M --826 925 R -6 4 R -31 35 V --155 62 R -53 50 R -6 -4 R -96 -108 V -LT0 -3559 2938 M -0 -4 R -0 -28 V -2 -4 R -6 4 R -27 19 V -12 40 V --111 -63 R -24 -32 R -40 68 R -LT1 -4314 3510 M -4103 3348 M --16 29 R -12 -28 V --12 28 R -228 132 V -3553 2939 M -18 -32 R -6 -12 V --54 38 R --34 63 R -LT0 -3690 3039 M --48 -55 R -14 8 R -6 4 R -0 4 V -6 0 R -0 8 V -6 0 R -0 4 V -6 0 R -0 8 V -6 0 R -6 12 V -6 0 R -6 12 V -6 0 R -0 4 V -6 0 R -0 4 V -LT1 -3742 2741 M -0 -4 R -127 -85 V --36 14 R -18 -4 R -0 -4 V -6 0 R -12 -6 V --178 115 R -LT0 -2833 2774 M -12 0 R -146 -27 V -78 32 V --51 48 R -LT1 -3715 2097 M -0 4 R -12 186 V -54 12 V -148 29 R -3715 2097 M -LT0 -3609 2965 M --15 -40 R -6 4 R -14 10 V -24 44 V -6 0 R -0 4 V -LT1 -3486 3043 M --85 83 R -37 39 R -6 -4 R -36 -52 V -871 -610 R -6 0 R -204 132 V -198 -196 V -4494 2302 M --695 827 R --85 -74 R --3 4 R -158 -407 R -6 0 R -158 -96 V --16 0 R -12 0 R -4 0 V --200 110 R --497 611 R -6 0 R -82 29 V --224 103 R -6 0 R -105 41 V -113 -144 V -LT0 -3642 2984 M --28 -45 R -7 2 R -6 4 R -0 8 V -6 0 R -0 8 V -6 0 R -0 8 V -6 4 R -0 8 V -6 0 R -0 8 V -6 0 R -0 4 V -LT1 -3591 2896 M -18 -32 V -6 0 R -0 -8 V -6 -4 R -0 -4 V --34 37 R -36 -32 R -0 -4 V --70 90 R -24 -28 R -14 -15 V -LT0 -3561 2902 M -11 -27 R -19 21 R -0 8 R -6 20 V -LT1 -3200 3409 M --176 155 R -6 0 R -132 53 V -144 -168 V -4520 2316 M -325 -128 R -12 -32 R -6 -12 V --357 149 R -3438 3165 M -6 0 R -61 19 V --169 93 R -88 29 R -0 -4 R -81 -118 V -116 -333 R -12 -8 R -0 -4 V -12 -8 R -0 -4 V -3 -8 R --61 66 R -297 -393 R -150 60 R -0 4 V -6 0 R -6 7 V -12 -24 V -3929 2328 M -158 1049 R -3933 3240 M --24 15 R -12 -8 V --12 8 R -180 120 V -3482 2090 M -0 4 R -58 181 V -186 12 V --11 -190 R --233 -7 R -LT0 -3594 2925 M --3 -29 R -6 4 R -4 5 V -12 32 V -LT1 -3024 3564 M --220 177 R -6 0 R -162 68 V -192 -192 V -346 -544 R --72 92 R -67 19 R -0 -4 R -30 -56 V -511 -561 R -6 0 R -157 101 V -144 -168 V --215 -98 R --412 51 R -0 -120 R -0 -44 V -0 164 R -158 43 R -3727 2287 M --16 772 R --55 -67 R --9 -5 R -3141 1906 M -127 207 V -216 -24 V --81 -214 R --262 31 R -264 -32 V -1621 728 R -0 4 R -256 199 V -338 -226 V -5297 2374 M -6 0 R -317 205 V -LT0 -3676 2793 M -66 -52 R --94 78 R -LT1 -4561 2631 M -0 4 R -204 161 V -258 -192 V -4762 2435 M -LT0 -3614 2939 M --13 -34 R -0 -4 R -2 2 V -0 4 V -6 4 R -0 4 V -6 8 R -0 8 V -6 4 R -0 8 V -LT1 -3597 2894 M -6 -8 R -0 -4 V --12 14 R --12 32 R -18 -32 R -0 -4 V -LT0 -3607 2868 M -14 -17 R --30 45 R -1580 2660 M -24 0 R -299 -8 V -258 40 V --243 15 R -LT1 -4209 2664 M -0 4 R -158 127 V -198 -160 V -4351 2499 M --704 488 R --26 -46 R --12 -12 R -225 -301 R -42 24 R -78 48 V -90 -140 V --160 -68 R --285 414 R -12 -4 R --2 0 V --23 42 R -20 -1 R -0 -36 R -3 -5 V -300 353 R -3804 3143 M --30 3 R -108 92 R -6 0 V -0 4 R -18 12 V -3559 3084 M --54 100 R -6 0 R -87 -2 V -12 -36 V -LT0 -3601 2905 M --2 -20 R -6 12 R -0 4 V --6 -16 R -0 -6 R -6 12 R -0 12 V --4 -28 R -6 -7 R --10 26 R -LT1 -3540 2275 M -0 4 R -36 144 V -4 10 R -146 16 R -3540 2275 M -66 668 R -18 -8 R -15 -11 V --48 80 R -48 -80 R -0 36 V -LT0 -3634 2829 M -42 -36 R --55 58 R -LT1 -3505 3184 M --81 122 R -6 0 R -113 7 V -54 -132 V -LT0 -3758 2725 M -110 -78 R --126 94 R -LT1 -3601 2884 M -6 -4 R --1 -2 V --7 28 R -7 -28 R -0 24 V -348 -202 R -0 4 R -118 95 V -138 -128 V -4046 2563 M --437 339 R -6 -4 R -13 -18 V --22 63 R -22 -63 R -12 44 V -LT0 -3609 2853 M -19 -35 R --21 50 R -LT1 -3609 2929 M --6 -26 R --10 -17 R -13 -8 R -3 24 R -4 -47 R -6 8 R -6 20 V --201 423 R --113 144 R -6 0 R -143 17 V -84 -152 V -95 -391 R -6 -4 R -36 -36 V --42 40 R -2 64 R -18 -8 R -46 -28 V --24 -68 R -24 68 V -3268 2113 M -0 4 R -101 174 V -174 -16 V --61 -185 R --214 23 R -373 875 R --12 86 R -84 -32 R -5 1 V --13 -91 R -0 4 R -13 87 V -63 -305 R -12 -32 V -6 0 R -0 -4 V --18 36 R -84 71 V -90 -104 V --121 -77 R --206 252 R -6 -4 R -17 -38 V --23 42 R -11 44 R -12 -86 R -30 48 V -LT0 -2174 2695 M -18 0 R -246 -19 V -186 44 V --189 24 R -1165 105 R -8 -31 R -1 35 R --9 -4 R -LT1 -3697 2691 M -66 40 R -18 8 V -0 -1 R --65 -156 R -58 564 R --63 -87 R --34 -9 R -4 -166 R -6 -4 R -43 -57 V --49 61 R -24 68 R -6 -4 R -70 -55 V --51 -70 R -51 70 V --168 -38 R -15 25 R --9 -67 R -24 20 R -6 4 V --20 237 R --31 108 R -6 0 R -66 -16 V -45 -9 R -0 -112 R -0 -4 V -15 -218 R -0 -4 R -54 -76 V --54 80 R -51 70 R -6 -4 R -78 -80 V --84 -71 R --130 100 R -0 -8 R -6 -16 V -6 0 R -0 -4 V --12 28 R -30 46 R --6 -108 R -18 12 R -36 28 V -136 -7 R -6 4 R -72 94 V -126 -108 V --115 -99 R --279 76 R -55 47 R --33 -132 R -375 108 R -6 4 R -104 124 V -180 -132 V -4209 2664 M --504 288 R -13 91 R -6 0 R -100 -56 V --43 -94 R -0 8 R -43 86 V -LT0 -3628 2818 M -32 -45 R --26 56 R --6 -11 R -LT1 -3619 2813 M -32 25 R --29 -86 R --311 698 R --149 167 R -6 0 R -174 30 V -114 -180 V -325 -574 R -43 94 R -6 -4 R -114 -76 V --79 -98 R -502 -14 R -6 4 R -142 157 V -252 -160 V -4561 2631 M -LT0 -2639 2723 M -12 0 R -198 -25 V -138 48 V --154 28 R -LT1 -3598 3182 M --55 131 R -6 0 R -142 -18 V -18 -116 V -3369 2291 M -0 4 R -79 148 V -114 -8 V --22 -160 R --171 16 R -349 752 R --3 114 R -90 -32 R -49 -18 V --30 -120 R -0 4 R -30 116 V -LT0 -2991 2747 M -12 0 R -138 -24 V -0 -4 R -6 0 V -7 0 R --26 78 R -LT1 -3943 2907 M -0 4 R -67 120 V -174 -104 V -4072 2799 M -474 908 R -48 -52 V -4314 3510 M --57 34 R -54 -36 V --54 36 R -289 163 V -3824 2987 M -30 120 R -6 0 R -150 -76 V --67 -124 R -822 -111 R -0 4 R -192 194 V -324 -188 V -5026 2602 M -3448 2443 M -0 4 R -24 44 V -35 76 R -73 -134 R --132 10 R -2907 1968 M -172 197 V -186 -52 V -3141 1906 M --234 62 R -234 -64 V -21 1713 R --190 192 R -6 0 R -208 43 V -156 -208 V -201 -331 R --83 154 R -6 0 R -175 -7 V -54 -168 V -20 -135 R --24 138 R -6 0 R -168 -42 V --11 -146 R -0 4 R -6 60 V -6 60 R --1 22 V -317 -326 R -0 4 R -98 154 V -234 -128 V -4367 2795 M -915 10 R -0 4 R -241 234 V -410 -221 V -5620 2579 M -6 4 R -307 239 V -4257 3544 M -4087 3377 M --63 17 R -66 -16 V --66 16 R -234 152 V -3854 3107 M -11 146 R -6 0 R -24 -8 V -54 -20 R -114 -42 V --53 -152 R -0 4 R -53 148 V -3079 2165 M -0 4 R -142 165 V -150 -44 V -3268 2113 M --189 52 R -931 866 R -53 152 R -6 0 R -210 -96 V --97 -160 R -3221 2334 M -0 4 R -114 140 V -114 -36 V --80 -151 R --148 43 R -114 144 R -0 4 R -54 64 V -36 50 R -23 -153 R --113 35 R -125 989 R --118 180 R -6 0 R -213 3 V -78 -188 V -385 -68 R -3909 3255 M --67 2 R -24 0 R -6 -4 V -6 0 R -30 0 V --66 4 R -6 4 R -174 132 V --331 -98 R --50 165 R -6 0 R -207 -34 V -12 -148 V -649 -322 R -0 4 R -134 190 V -312 -156 V -4765 2796 M --923 461 R --68 -111 R --68 -12 R -159 119 R --11 173 R -6 0 R -150 -40 V -53 -203 R -0 4 R -18 112 V -199 -214 R -0 4 R -81 183 V -288 -124 V -4515 2956 M -LT0 -3154 2719 M -162 -28 R --70 77 R -LT1 -4063 3183 M -31 181 R -84 -28 R -180 -64 V --78 -187 R --938 562 R --156 205 R -6 0 R -252 16 V -114 -220 V -3248 2537 M -66 60 V -51 51 R --30 -170 R --87 59 R -84 -56 V -1625 513 R -0 4 R -175 229 V -390 -184 V -5282 2805 M -3641 3460 M --80 190 R -6 0 R -247 -24 V -42 -200 V -2706 2058 M -215 186 V -162 -80 V -2907 1968 M --201 90 R -198 -88 V -197 434 R -150 128 V --3 5 R --27 -203 R --120 70 R -120 -72 V -LT0 -2849 2698 M -12 0 R -201 -27 V -84 44 V --155 32 R -LT1 -2921 2244 M -0 4 R -180 156 V --22 -239 R --158 79 R -LT0 -2438 2676 M -12 0 R -256 -24 V -132 44 V --199 27 R -LT1 -3854 3426 M --40 200 R -6 0 R -281 -52 V --7 -210 R -0 80 R -7 130 V -548 -424 R -0 4 R -114 222 V -372 -152 V -4957 2994 M -LT0 -1903 2652 M -18 0 R -312 -17 V -192 44 V --251 16 R -LT1 -3190 2620 M -42 32 V -100 69 R --84 -184 R --58 83 R -60 -80 V -2273 503 R -0 4 R -223 271 V -483 -214 V -5933 2822 M -0 4 R -296 278 V -4094 3364 M -7 210 R -6 0 R -132 -36 V -122 -266 R -0 4 R -48 172 V --48 -176 R -58 219 R -36 -12 R -306 -100 V -4649 3150 M -3561 3650 M --117 218 R -6 0 R -291 -12 V -72 -232 V -3013 2498 M -174 120 V -3 2 R --89 -216 R --88 94 R -84 -88 V -4146 3566 M -102 -20 V -4024 3394 M --113 4 R -240 168 R --5 0 V -293 181 R -102 -40 V -4257 3544 M --111 22 R -6 4 R -287 177 V -LT0 -3062 2671 M -12 0 R -150 -20 V -47 -10 R --117 78 R -LT1 -2799 2350 M -216 144 V --2 4 R --92 -254 R --122 106 R -120 -100 V -895 1376 R --73 230 R -6 0 R -331 -41 V -24 -240 V -3167 2727 M -164 89 R -3190 2620 M --23 107 R -18 -76 R -6 -24 V -1941 600 R -0 4 R -154 264 V -456 -176 V -5523 3043 M -2544 2177 M -252 168 V -3 5 R --93 -292 R --162 119 R -162 -116 V -4101 3574 M --23 241 R -6 0 R -348 -68 V --13 -256 R -344 -115 R -0 4 R -90 256 V -438 -144 V -5132 3227 M -LT0 -2706 2652 M -12 0 R -255 -28 V -84 44 V --208 30 R -LT1 -4419 3491 M -30 251 R -18 -4 R -6 -4 V -6 0 R -6 -4 V -6 0 R -360 -92 V --88 -262 R -2963 2616 M -12 8 V -24 8 R -0 4 V -168 91 R -3013 2498 M --50 118 R -54 -116 V --300 -18 R -246 136 V -0 -2 R -2799 2350 M --82 132 R -84 -128 V -LT0 -2233 2635 M -18 0 R -312 -24 V -138 44 V --263 21 R -LT1 -2425 2323 M -288 160 V -4 -1 R -2544 2177 M --119 146 R -120 -140 V -411 574 R -211 -30 R -2963 2616 M --7 141 R -6 -136 R -0 -4 V -4269 3775 M -132 -20 R -0 -4 V -24 0 R -0 -4 V -4146 3566 M --171 7 R -2680 2638 M -12 8 V -6 0 R -6 4 V -6 0 R -0 4 V -246 103 R -2717 2482 M --37 156 R -36 -156 V -LT0 -2563 2611 M -12 0 R -108 -12 V -207 -18 R --184 71 R -LT1 -2355 2496 M -246 108 V -79 34 R -2425 2323 M --70 173 R -72 -176 V -4032 3788 M --57 -215 R --232 -8 R -2337 2693 M -343 -55 R -2355 2496 M --18 197 R -6 -72 R -12 -124 V -407 526 R -42 12 V -191 -113 R -2694 2819 M -36 112 R -32 92 V -2377 2916 M -384 104 V --67 -201 R -2337 2693 M -30 164 R -10 59 V -514 333 R -196 -141 R --325 -85 R -0 4 R -6 0 V -0 4 R -12 28 V --299 103 R -198 44 V -83 -183 R -2377 2916 M -0 4 R -104 242 V -171 270 R -239 -183 R --410 -87 R -0 4 R -132 208 V -283 349 R -189 -227 R --433 -64 R -LT0 -LTb -971 1221 M -4304 601 L -6229 1674 L -2896 2294 M -4432 2006 M -6229 1674 L -971 1221 M -1632 912 V -996 1216 M -55 30 V -831 1124 M -(-2000) Rshow -1406 1140 M -55 30 V -1241 1049 M -(-1500) Rshow -1817 1064 M -55 30 V -1652 973 M -(-1000) Rshow -2227 987 M -55 30 V -2062 895 M -(-500) Rshow -2638 911 M -55 30 V -2473 820 M -(0) Rshow -3049 835 M -55 30 V -2884 743 M -(500) Rshow -3459 758 M -55 30 V -3294 666 M -(1000) Rshow -3869 682 M -55 30 V -3704 590 M -(1500) Rshow -4279 606 M -55 30 V -4114 515 M -(2000) Rshow -4257 620 M -61 -11 V -185 -34 R -(-2000) Lshow -4494 752 M -61 -11 V -185 -34 R -(-1500) Lshow -4731 884 M -61 -11 V -185 -34 R -(-1000) Lshow -4969 1017 M -61 -11 V -185 -34 R -(-500) Lshow -5206 1149 M -61 -11 V -185 -34 R -(0) Lshow -5443 1281 M -61 -11 V -185 -34 R -(500) Lshow -5680 1413 M -61 -11 V -185 -34 R -(1000) Lshow -5917 1545 M -61 -11 V -185 -34 R -(1500) Lshow -6154 1677 M -61 -11 V -185 -34 R -(2000) Lshow -971 1936 M -63 0 V --126 0 R -(-300) Rshow -971 2175 M -63 0 V --126 0 R -(-200) Rshow -971 2413 M -63 0 V --126 0 R -(-100) Rshow -971 2650 M -54 0 R -9 0 V --126 0 R -(0) Rshow -971 2889 M -63 0 V --126 0 R -(100) Rshow -971 3127 M -63 0 V --126 0 R -(200) Rshow -971 3366 M -63 0 V --126 0 R -(300) Rshow -971 1221 M -0 1428 V -0 4 R -0 713 V -LTa -2157 643 M -(x) Cshow -6100 983 M -(y) Cshow -971 3723 M -(z) Cshow -stroke -grestore -end -showpage -%%Trailer -%%Pages: 1 DELETED r37/packages/plot/eg1.ps Index: r37/packages/plot/eg1.ps ================================================================== --- r37/packages/plot/eg1.ps +++ /dev/null @@ -1,389 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg1.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:09:49 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-100) Rshow -812 1593 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 2625 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3658 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(-100) Cshow -2388 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-50) Cshow -3964 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(0) Cshow -5540 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -3964 2625 M -3104 359 V -3964 2625 L -2962 706 V -3964 2625 L -6694 3658 L -3964 2625 L -6379 3952 L -3964 2625 L -5990 4207 L -3964 2625 L -5540 4413 L -3964 2625 L -5042 4565 L -3964 2625 L -547 2034 V -3964 2625 L -0 2065 V -0 -2065 V -3417 4659 L -3964 2625 L -2886 4565 L -3964 2625 L -2388 4413 L -3964 2625 L -1938 4207 L -3964 2625 L -1549 3952 L -3964 2625 L -1234 3658 L -3964 2625 L -1002 3331 L -3964 2625 L -860 2984 L -3964 2625 L --3152 0 V -3152 0 V -860 2266 L -3104 359 V -1002 1919 L -2962 706 V -1234 1593 L -3964 2625 L -1549 1298 L -3964 2625 L -1938 1043 L -3964 2625 L -2388 837 L -3964 2625 L -2886 685 L -3964 2625 L -3417 591 L -547 2034 V -0 -2065 V -0 2065 V -4511 591 L -3964 2625 L -5042 685 L -3964 2625 L -5540 837 L -3964 2625 L -5990 1043 L -3964 2625 L -6379 1298 L -3964 2625 L -6694 1593 L -3964 2625 L -6926 1919 L -3964 2625 L -7068 2266 L -3964 2625 L -3152 0 V --3152 0 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg4.ps Index: r37/packages/plot/eg4.ps ================================================================== --- r37/packages/plot/eg4.ps +++ /dev/null @@ -1,485 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg4.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:13:03 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-150) Rshow -812 1248 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-100) Rshow -812 1937 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 2625 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3313 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 4002 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(150) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(-150) Cshow -1863 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-100) Cshow -2913 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-50) Cshow -3964 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(0) Cshow -5015 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -6065 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(150) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -3964 2625 M -841 0 V -727 275 V -421 477 V -0 551 V --421 477 V --727 275 V --841 0 V -3236 4405 L -2816 3928 L -0 -551 V -420 -477 V -728 -275 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -2396 4405 L -1975 3928 L -0 -551 V -421 -477 V -727 -275 V -841 0 V -420 477 V -0 551 V --420 476 V --728 276 V --840 0 V -1668 4129 L -1247 3653 L -0 -551 V -421 -477 V -728 -275 V -840 0 V -728 275 V -0 551 V --420 477 V --728 275 V --841 0 V -1247 3653 L -827 3176 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V --420 477 V --728 275 V --841 0 V -1247 3102 L -827 2625 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --728 275 V --840 0 V -1668 2625 L -1247 2148 L -0 -551 V -421 -476 V -2396 845 L -840 0 V -728 276 V -420 476 V -0 551 V --420 477 V --841 0 V -2396 2350 L -1975 1873 L -0 -551 V -2396 845 L -3123 570 L -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V -3236 2350 L -2816 1873 L -0 -551 V -3236 845 L -3964 570 L -841 0 V -727 275 V -421 477 V -0 551 V --421 477 V --727 275 V --841 0 V -3544 2148 L -0 -551 V -420 -476 V -4692 845 L -840 0 V -728 276 V -421 476 V -0 551 V --421 477 V --728 275 V --840 0 V -3964 2625 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -4384 3102 L -3964 2625 L -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -4384 3653 L -3964 3176 L -0 -551 V -728 -275 V -840 0 V -728 275 V -421 477 V -0 551 V --421 476 V --728 276 V --840 0 V -3964 4129 L -3544 3653 L -0 -551 V -420 -477 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg5a.ps Index: r37/packages/plot/eg5a.ps ================================================================== --- r37/packages/plot/eg5a.ps +++ /dev/null @@ -1,357 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg5a.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:13:40 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -728 560 M -63 0 V -6325 0 R --63 0 V -644 560 M -(-10) Rshow -728 1248 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(0) Rshow -728 1937 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(10) Rshow -728 2625 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(20) Rshow -728 3313 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(30) Rshow -728 4002 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(40) Rshow -728 4690 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(50) Rshow -728 560 M -0 63 V -0 4067 R -0 -63 V -728 420 M -(0) Cshow -1793 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(20) Cshow -2857 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(40) Cshow -3922 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(60) Cshow -4987 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(80) Cshow -6051 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(120) Cshow -LTb -728 560 M -6388 0 V -0 4130 V --6388 0 V -728 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3922 210 M -(x) Cshow -3922 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -728 1248 M -994 560 L -533 4130 V -2059 560 L -266 688 V -2591 560 L -533 4130 V -3656 560 L -266 688 V -4188 560 L -533 4130 V -5253 560 L -266 688 V -5785 560 L -533 4130 V -6850 560 L -266 688 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg5b.ps Index: r37/packages/plot/eg5b.ps ================================================================== --- r37/packages/plot/eg5b.ps +++ /dev/null @@ -1,360 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg5b.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:16:54 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-150) Rshow -812 1386 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-100) Rshow -812 2212 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 3038 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3864 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(0) Cshow -2073 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -3334 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -4594 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(150) Cshow -5855 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(200) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(250) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -812 3038 M -126 826 V -126 -165 V -252 991 V -252 -991 V -127 165 V -126 -165 V -252 991 V -252 -991 V -126 165 V -126 -165 V -252 991 V -252 -991 V -127 165 V -126 -165 V -252 991 V -252 -991 V -126 165 V -4216 1386 L -126 -165 V -252 991 V -253 -991 V -126 165 V -126 -165 V -252 991 V -252 -991 V -126 165 V -126 -165 V -252 991 V -253 -991 V -126 165 V -252 1652 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg6a.ps Index: r37/packages/plot/eg6a.ps ================================================================== --- r37/packages/plot/eg6a.ps +++ /dev/null @@ -1,868 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg6a.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:18:38 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-250) Rshow -812 973 M -63 0 V -6241 0 R --63 0 V -728 973 M -(-200) Rshow -812 1386 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-150) Rshow -812 1799 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-100) Rshow -812 2212 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 2625 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3038 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 3451 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 3864 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(150) Rshow -812 4277 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(200) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(250) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(0) Cshow -2073 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -3334 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -4594 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(150) Cshow -5855 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(200) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(250) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -812 2625 M -2318 759 V -0 537 V --580 190 V --409 0 V --145 -47 V -0 -34 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 34 V --103 0 V --36 -12 V -36 12 V --36 11 V -36 -11 V -103 0 V -145 47 V --145 47 V --103 0 V --36 -11 V -36 11 V --36 12 V -36 -12 V -103 0 V -0 34 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -34 V -145 -47 V -409 0 V -0 134 V --144 48 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -0 33 V --37 12 V -37 -12 V -36 12 V --36 -12 V -0 -33 V -144 -48 V -145 48 V -0 33 V --36 12 V -36 -12 V -37 12 V --37 -12 V -0 -33 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -48 V -0 -134 V -580 -190 V -579 190 V -0 134 V --144 48 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -0 33 V --37 12 V -37 -12 V -36 12 V --36 -12 V -0 -33 V -144 -48 V -145 48 V -0 33 V --36 12 V -36 -12 V -37 12 V --37 -12 V -0 -33 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -48 V -0 -134 V -410 0 V -145 47 V -0 34 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -34 V -103 0 V -36 12 V --36 -12 V -36 -11 V --36 11 V --103 0 V --145 -47 V -145 -47 V -103 0 V -36 11 V --36 -11 V -36 -12 V --36 12 V --103 0 V -0 -34 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 34 V --145 47 V --410 0 V -3130 3921 L -0 -537 V -1639 0 V -579 190 V -0 134 V --144 48 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -0 33 V --37 12 V -37 -12 V -36 12 V --36 -12 V -0 -33 V -144 -48 V -145 48 V -0 33 V --36 12 V -36 -12 V -37 12 V --37 -12 V -0 -33 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -48 V -0 -134 V -410 0 V -145 48 V -0 33 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -33 V -103 0 V -36 11 V --36 -11 V -36 -12 V --36 12 V --103 0 V --145 -48 V -145 -47 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -34 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 34 V --145 47 V --410 0 V -4769 3384 L -579 -190 V -410 0 V -145 48 V -0 33 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -33 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -48 V -145 -47 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -34 V -36 -11 V --36 11 V --36 -11 V -36 11 V -0 34 V --145 47 V --410 0 V -0 -134 V -145 -47 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -34 V -37 -12 V --37 12 V --36 -12 V -36 12 V -0 34 V --145 47 V --144 -47 V -0 -34 V -36 -12 V --36 12 V --37 -12 V -37 12 V -0 34 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -144 47 V -0 134 V --579 190 V --1639 0 V -812 2625 L -3130 1866 L -1639 0 V -579 190 V -0 134 V --144 47 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -0 34 V --37 12 V -37 -12 V -36 12 V --36 -12 V -0 -34 V -144 -47 V -145 47 V -0 34 V --36 12 V -36 -12 V -37 12 V --37 -12 V -0 -34 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -47 V -0 -134 V -410 0 V -145 47 V -0 34 V --36 11 V -36 -11 V -36 11 V --36 -11 V -0 -34 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -47 V -145 -48 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -33 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 33 V --145 48 V --410 0 V -4769 1866 L -579 -190 V -410 0 V -145 47 V -0 34 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -34 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V --145 -47 V -145 -48 V -103 0 V -36 12 V --36 -12 V -36 -11 V --36 11 V --103 0 V -0 -33 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 33 V --145 48 V --410 0 V -0 -134 V -145 -48 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -33 V -37 -12 V --37 12 V --36 -12 V -36 12 V -0 33 V --145 48 V --144 -48 V -0 -33 V -36 -12 V --36 12 V --37 -12 V -37 12 V -0 33 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -144 48 V -0 134 V --579 190 V --1639 0 V -0 -537 V -579 -190 V -410 0 V -145 47 V -0 34 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -34 V -103 0 V -36 12 V --36 -12 V -36 -11 V --36 11 V --103 0 V --145 -47 V -145 -47 V -currentpoint stroke M -103 0 V -36 11 V --36 -11 V -36 -12 V --36 12 V --103 0 V -0 -34 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 34 V --145 47 V --410 0 V -0 -134 V -145 -48 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -33 V -37 -12 V --37 12 V --36 -12 V -36 12 V -0 33 V --145 48 V -3565 957 L -0 -33 V -36 -12 V --36 12 V --37 -12 V -37 12 V -0 33 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -144 48 V -0 134 V --579 190 V -2550 1139 L -0 -134 V -145 -48 V -103 0 V -36 12 V --36 -12 V -36 -12 V --36 12 V --103 0 V -0 -33 V -37 -12 V --37 12 V --36 -12 V -36 12 V -0 33 V --145 48 V -2406 957 L -0 -33 V -36 -12 V --36 12 V --37 -12 V -37 12 V -0 33 V --103 0 V --36 -12 V -36 12 V --36 12 V -36 -12 V -103 0 V -144 48 V -0 134 V --409 0 V --145 -47 V -0 -34 V -36 -12 V --36 12 V --36 -12 V -36 12 V -0 34 V --103 0 V --36 -12 V -36 12 V --36 11 V -36 -11 V -103 0 V -145 47 V --145 47 V --103 0 V --36 -11 V -36 11 V --36 12 V -36 -12 V -103 0 V -0 34 V --36 12 V -36 -12 V -36 12 V --36 -12 V -0 -34 V -145 -47 V -409 0 V -580 190 V -0 537 V -812 2625 L -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg7.ps Index: r37/packages/plot/eg7.ps ================================================================== --- r37/packages/plot/eg7.ps +++ /dev/null @@ -1,407 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg7.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:22:44 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -728 560 M -63 0 V -6325 0 R --63 0 V -644 560 M -(0) Rshow -728 1386 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(20) Rshow -728 2212 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(40) Rshow -728 3038 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(60) Rshow -728 3864 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(80) Rshow -728 4690 M -63 0 V -6325 0 R --63 0 V --6409 0 R -(100) Rshow -728 560 M -0 63 V -0 4067 R -0 -63 V -728 420 M -(-60) Cshow -1793 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-40) Cshow -2857 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-20) Cshow -3922 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(0) Cshow -4987 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(20) Cshow -6051 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(40) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(60) Cshow -LTb -728 560 M -6388 0 V -0 4130 V --6388 0 V -728 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3922 210 M -(x) Cshow -3922 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -3922 560 M -2998 4627 L -4818 746 L -2157 4323 L -5578 1159 L -1500 3814 L -6111 1749 L -1108 3162 L -6351 2444 L --5324 0 V -5243 718 V -1268 1749 L -5878 3814 L -1800 1159 L -5222 4323 L -2560 746 L -4381 4627 L -3456 560 L -0 4130 V -4381 623 L -2560 4504 L -5222 927 L -1800 4091 L -5878 1436 L -1268 3501 L -6270 2088 L -1027 2806 L -5324 0 V -1108 2088 L -6111 3501 L -1500 1436 L -5578 4091 L -2157 927 L -4818 4504 L -2998 623 L -924 4067 V -0 -4130 V -2998 4627 L -4818 746 L -2157 4323 L -5578 1159 L -1500 3814 L -6111 1749 L -1108 3162 L -6351 2444 L --5324 0 V -5243 718 V -1268 1749 L -5878 3814 L -1800 1159 L -5222 4323 L -2560 746 L -4381 4627 L -3456 560 L -0 4130 V -4381 623 L -2560 4504 L -5222 927 L -1800 4091 L -5878 1436 L -1268 3501 L -6270 2088 L -1027 2806 L -5324 0 V -1108 2088 L -6111 3501 L -1500 1436 L -5578 4091 L -2157 927 L -4818 4504 L -2998 623 L -924 4067 V -0 -4130 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg8.ps Index: r37/packages/plot/eg8.ps ================================================================== --- r37/packages/plot/eg8.ps +++ /dev/null @@ -1,641 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg8.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:26:42 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-150) Rshow -812 1248 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-100) Rshow -812 1937 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 2625 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3313 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 4002 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(150) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(-150) Cshow -1863 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-100) Cshow -2913 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-50) Cshow -3964 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(0) Cshow -5015 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -6065 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(150) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -3964 2625 M -3152 0 V -5540 4413 L -3964 2625 L -3146 130 V -5365 4475 L -3964 2625 L -3127 259 V -5185 4529 L -3964 2625 L -3096 387 V -5001 4575 L -3964 2625 L -3053 514 V -4812 4614 L -3964 2625 L -2998 638 V -4619 4645 L -3964 2625 L -2931 760 V -4424 4668 L -3964 2625 L -2852 879 V -4228 4683 L -3964 2625 L -2762 995 V -4030 4690 L -3964 2625 L -6625 3731 L -3832 4688 L -3964 2625 L -6514 3839 L -3635 4679 L -3964 2625 L -6393 3941 L -3438 4661 L -3964 2625 L -6262 4039 L -3244 4635 L -3964 2625 L -6122 4130 L -3053 4602 L -3964 2625 L -5973 4216 L -2865 4560 L -3964 2625 L -5817 4296 L -2682 4511 L -3964 2625 L -5653 4369 L --3149 86 V -3964 2625 L -5482 4435 L -2331 4391 L -3964 2625 L -5306 4493 L -2165 4321 L -3964 2625 L -5124 4545 L -2006 4243 L -3964 2625 L -974 1964 V -1855 4160 L -3964 2625 L -784 2000 V -1712 4070 L -3964 2625 L -591 2028 V -1578 3974 L -3964 2625 L -395 2049 V -1453 3873 L -3964 2625 L -198 2061 V -1339 3768 L -3964 2625 L -0 2065 V -1234 3658 L -3964 2625 L -3766 4686 L -1141 3543 L -3964 2625 L -3569 4674 L -1058 3425 L -3964 2625 L -3373 4653 L -987 3304 L -3964 2625 L -3180 4625 L -928 3180 L -3964 2625 L -2990 4589 L -881 3054 L -3964 2625 L -2804 4545 L -846 2927 L -3964 2625 L -2622 4493 L -823 2798 L -3964 2625 L -2446 4435 L -813 2668 L -3151 -43 V -2275 4369 L -815 2539 L -3149 86 V -2111 4296 L -829 2409 L -3135 216 V -1955 4216 L -856 2281 L -3108 344 V -1806 4130 L -895 2153 L -3069 472 V -1666 4039 L -947 2028 L -3017 597 V -1535 3941 L -1010 1905 L -2954 720 V -1414 3839 L -1085 1785 L -2879 840 V -1303 3731 L -1171 1668 L -2793 957 V -1202 3620 L -66 -2065 V -3964 2625 L -1112 3504 L -1376 1446 L -3964 2625 L -1033 3385 L -1494 1342 L -3964 2625 L -966 3263 L -1622 1243 L -3964 2625 L -911 3139 L -1759 1150 L -3964 2625 L -868 3012 L -1904 1062 L -3964 2625 L -837 2884 L -2058 980 L -3964 2625 L -818 2755 L -2220 905 L -3964 2625 L --3152 0 V -2388 837 L -3964 2625 L -818 2495 L -2563 775 L -3964 2625 L -837 2366 L -2743 721 L -3964 2625 L -868 2238 L -2927 675 L -3964 2625 L -911 2111 L -3116 636 L -848 1989 V -966 1987 L -3309 605 L -655 2020 V -1033 1865 L -3504 582 L -460 2043 V -1112 1746 L -3700 567 L -264 2058 V -1202 1630 L -3898 560 L -66 2065 V -1303 1519 L -4096 562 L -3964 2625 L -1414 1411 L -4293 571 L -3964 2625 L -1535 1309 L -4490 589 L -3964 2625 L -1666 1211 L -4684 615 L -3964 2625 L -1806 1120 L -4875 648 L -3964 2625 L -1955 1034 L -5063 690 L -3964 2625 L -2111 954 L -5246 739 L -3964 2625 L -2275 881 L -5424 795 L -3964 2625 L -2446 815 L -3151 44 V -3964 2625 L -2622 757 L -5763 929 L -3964 2625 L -2804 705 L -3118 302 V -3964 2625 L -2990 661 L -3083 429 V -3964 2625 L -3180 625 L -3036 555 V -3964 2625 L -3373 597 L -2977 679 V -3964 2625 L -3569 576 L -2906 801 V -3964 2625 L -3766 564 L -2823 918 V -3964 2625 L -0 -2065 V -6694 1593 L -3964 2625 L -4162 564 L -6787 1707 L -3964 2625 L -4359 576 L -6870 1825 L -3964 2625 L -4555 597 L -6941 1946 L -3964 2625 L -4748 625 L -7000 2070 L -3964 2625 L -4938 661 L -7047 2196 L -3964 2625 L -5124 705 L -7082 2323 L -3964 2625 L -5306 757 L -7105 2452 L -3964 2625 L -5482 815 L -7115 2582 L --3151 43 V -5653 881 L -7113 2711 L -3964 2625 L -5817 954 L -7099 2841 L -3964 2625 L -5973 1034 L -7072 2969 L -3964 2625 L -6122 1120 L -911 1977 V -3964 2625 L -6262 1211 L -719 2011 V -3964 2625 L -6393 1309 L -525 2036 V -3964 2625 L -6514 1411 L -329 2054 V -3964 2625 L -6625 1519 L -132 2063 V -3964 2625 L -6726 1630 L --66 2065 V -3964 2625 L -6816 1746 L -6552 3804 L -3964 2625 L -6895 1865 L -6434 3908 L -3964 2625 L -6962 1987 L -6306 4007 L -3964 2625 L -7017 2111 L -6169 4100 L -3964 2625 L -7060 2238 L -6024 4188 L -3964 2625 L -7091 2366 L -5870 4270 L -3964 2625 L -7110 2495 L -5708 4345 L -3964 2625 L -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/eg9.ps Index: r37/packages/plot/eg9.ps ================================================================== --- r37/packages/plot/eg9.ps +++ /dev/null @@ -1,786 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: eg9.ps -%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 340 -%%CreationDate: Tue Nov 17 14:31:58 1998 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 554 770 -%%Orientation: Landscape -%%Pages: (atend) -%%EndComments -/gnudict 120 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -46 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke gnulinewidth 2 mul setlinewidth } def -/AL { stroke gnulinewidth 2 div setlinewidth } def -/UL { gnulinewidth mul /userlinewidth exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 0 1 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 0 1 DL } def -/LT2 { PL [2 dl 3 dl] 1 0 0 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -end -%%EndProlog -%%Page: 1 1 -gnudict begin -gsave -50 50 translate -0.100 0.100 scale -90 rotate -0 -5040 translate -0 setgray -newpath -(Helvetica) findfont 140 scalefont setfont -LTb -812 560 M -63 0 V -6241 0 R --63 0 V -728 560 M -(-150) Rshow -812 1248 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-100) Rshow -812 1937 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(-50) Rshow -812 2625 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(0) Rshow -812 3313 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(50) Rshow -812 4002 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(100) Rshow -812 4690 M -63 0 V -6241 0 R --63 0 V --6325 0 R -(150) Rshow -812 560 M -0 63 V -0 4067 R -0 -63 V -812 420 M -(-150) Cshow -1863 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-100) Cshow -2913 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(-50) Cshow -3964 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(0) Cshow -5015 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(50) Cshow -6065 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(100) Cshow -7116 560 M -0 63 V -0 4067 R -0 -63 V -0 -4207 R -(150) Cshow -LTb -812 560 M -6304 0 V -0 4130 V --6304 0 V -812 560 L -140 2625 M -currentpoint gsave translate 90 rotate 0 0 M -(points) Cshow -grestore -3964 210 M -(x) Cshow -3964 4900 M -(REDUCE Plot) Cshow -1.000 UL -LT0 -3964 2625 M -841 0 V -727 275 V -421 477 V -0 551 V --421 477 V --727 275 V --841 0 V -3236 4405 L -2816 3928 L -0 -551 V -420 -477 V -728 -275 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -2396 4405 L -1975 3928 L -0 -551 V -421 -477 V -727 -275 V -841 0 V -420 477 V -0 551 V --420 476 V --728 276 V --840 0 V -1668 4129 L -1247 3653 L -0 -551 V -421 -477 V -728 -275 V -840 0 V -728 275 V -0 551 V --420 477 V --728 275 V --841 0 V -1247 3653 L -827 3176 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V --420 477 V --728 275 V --841 0 V -1247 3102 L -827 2625 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --728 275 V --840 0 V -1668 2625 L -1247 2148 L -0 -551 V -421 -476 V -2396 845 L -840 0 V -728 276 V -420 476 V -0 551 V --420 477 V --841 0 V -2396 2350 L -1975 1873 L -0 -551 V -2396 845 L -3123 570 L -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V -3236 2350 L -2816 1873 L -0 -551 V -3236 845 L -3964 570 L -841 0 V -727 275 V -421 477 V -0 551 V --421 477 V --727 275 V --841 0 V -3544 2148 L -0 -551 V -420 -476 V -4692 845 L -840 0 V -728 276 V -421 476 V -0 551 V --421 477 V --728 275 V --840 0 V -3964 2625 L -0 -551 V -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -4384 3102 L -3964 2625 L -420 -477 V -728 -275 V -841 0 V -728 275 V -420 477 V -0 551 V --420 477 V --728 275 V --841 0 V -4384 3653 L -3964 3176 L -0 -551 V -728 -275 V -840 0 V -728 275 V -421 477 V -0 551 V --421 476 V --728 276 V --840 0 V -3964 4129 L -3544 3653 L -0 -551 V -420 -477 V -3152 0 V -5540 4413 L -3964 2625 L -3146 130 V -5365 4475 L -3964 2625 L -3127 259 V -5185 4529 L -3964 2625 L -3096 387 V -5001 4575 L -3964 2625 L -3053 514 V -4812 4614 L -3964 2625 L -2998 638 V -4619 4645 L -3964 2625 L -2931 760 V -4424 4668 L -3964 2625 L -2852 879 V -4228 4683 L -3964 2625 L -2762 995 V -4030 4690 L -3964 2625 L -6625 3731 L -3832 4688 L -3964 2625 L -6514 3839 L -3635 4679 L -3964 2625 L -6393 3941 L -3438 4661 L -3964 2625 L -6262 4039 L -3244 4635 L -3964 2625 L -6122 4130 L -3053 4602 L -3964 2625 L -5973 4216 L -2865 4560 L -3964 2625 L -5817 4296 L -2682 4511 L -3964 2625 L -5653 4369 L --3149 86 V -3964 2625 L -5482 4435 L -2331 4391 L -3964 2625 L -5306 4493 L -2165 4321 L -3964 2625 L -5124 4545 L -2006 4243 L -3964 2625 L -974 1964 V -1855 4160 L -3964 2625 L -784 2000 V -1712 4070 L -3964 2625 L -591 2028 V -1578 3974 L -3964 2625 L -395 2049 V -1453 3873 L -3964 2625 L -198 2061 V -1339 3768 L -3964 2625 L -0 2065 V -1234 3658 L -3964 2625 L -3766 4686 L -1141 3543 L -3964 2625 L -3569 4674 L -1058 3425 L -3964 2625 L -3373 4653 L -987 3304 L -3964 2625 L -3180 4625 L -928 3180 L -3964 2625 L -2990 4589 L -881 3054 L -3964 2625 L -2804 4545 L -846 2927 L -3964 2625 L -2622 4493 L -823 2798 L -3964 2625 L -2446 4435 L -813 2668 L -3151 -43 V -2275 4369 L -815 2539 L -3149 86 V -2111 4296 L -829 2409 L -3135 216 V -1955 4216 L -856 2281 L -3108 344 V -1806 4130 L -895 2153 L -3069 472 V -1666 4039 L -947 2028 L -3017 597 V -1535 3941 L -1010 1905 L -2954 720 V -1414 3839 L -1085 1785 L -2879 840 V -1303 3731 L -1171 1668 L -2793 957 V -1202 3620 L -66 -2065 V -3964 2625 L -1112 3504 L -1376 1446 L -3964 2625 L -1033 3385 L -1494 1342 L -3964 2625 L -966 3263 L -1622 1243 L -3964 2625 L -911 3139 L -1759 1150 L -3964 2625 L -868 3012 L -1904 1062 L -3964 2625 L -837 2884 L -2058 980 L -3964 2625 L -818 2755 L -2220 905 L -3964 2625 L --3152 0 V -2388 837 L -3964 2625 L -818 2495 L -2563 775 L -3964 2625 L -837 2366 L -2743 721 L -3964 2625 L -868 2238 L -2927 675 L -3964 2625 L -911 2111 L -3116 636 L -848 1989 V -966 1987 L -3309 605 L -655 2020 V -1033 1865 L -3504 582 L -460 2043 V -1112 1746 L -3700 567 L -264 2058 V -1202 1630 L -3898 560 L -66 2065 V -1303 1519 L -4096 562 L -3964 2625 L -1414 1411 L -4293 571 L -3964 2625 L -1535 1309 L -4490 589 L -3964 2625 L -1666 1211 L -4684 615 L -3964 2625 L -1806 1120 L -4875 648 L -3964 2625 L -1955 1034 L -5063 690 L -3964 2625 L -2111 954 L -5246 739 L -3964 2625 L -2275 881 L -5424 795 L -3964 2625 L -2446 815 L -3151 44 V -3964 2625 L -2622 757 L -5763 929 L -3964 2625 L -2804 705 L -3118 302 V -3964 2625 L -2990 661 L -3083 429 V -3964 2625 L -3180 625 L -3036 555 V -3964 2625 L -3373 597 L -2977 679 V -3964 2625 L -3569 576 L -2906 801 V -3964 2625 L -3766 564 L -2823 918 V -3964 2625 L -0 -2065 V -6694 1593 L -3964 2625 L -4162 564 L -6787 1707 L -3964 2625 L -4359 576 L -6870 1825 L -3964 2625 L -4555 597 L -6941 1946 L -3964 2625 L -4748 625 L -7000 2070 L -3964 2625 L -4938 661 L -7047 2196 L -3964 2625 L -5124 705 L -7082 2323 L -3964 2625 L -5306 757 L -7105 2452 L -3964 2625 L -5482 815 L -7115 2582 L --3151 43 V -5653 881 L -7113 2711 L -3964 2625 L -currentpoint stroke M -5817 954 L -7099 2841 L -3964 2625 L -5973 1034 L -7072 2969 L -3964 2625 L -6122 1120 L -911 1977 V -3964 2625 L -6262 1211 L -719 2011 V -3964 2625 L -6393 1309 L -525 2036 V -3964 2625 L -6514 1411 L -329 2054 V -3964 2625 L -6625 1519 L -132 2063 V -3964 2625 L -6726 1630 L --66 2065 V -3964 2625 L -6816 1746 L -6552 3804 L -3964 2625 L -6895 1865 L -6434 3908 L -3964 2625 L -6962 1987 L -6306 4007 L -3964 2625 L -7017 2111 L -6169 4100 L -3964 2625 L -7060 2238 L -6024 4188 L -3964 2625 L -7091 2366 L -5870 4270 L -3964 2625 L -7110 2495 L -5708 4345 L -3964 2625 L -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 - - DELETED r37/packages/plot/gnuplotex1.ps Index: r37/packages/plot/gnuplotex1.ps ================================================================== --- r37/packages/plot/gnuplotex1.ps +++ /dev/null @@ -1,361 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:84 94 528 697 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -128 93 translate -%% 90 rotate -%%605 444 scale -302 222 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 157 116 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 82 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 654 def -/nscans 482 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa8555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556aaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaaa555554d555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -5555555555555555555555555555555555555555555555555556a80000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000a853ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaa9aaaa6aaa9a9535554d5555555555555555555555555555555555555555555555555555555555555555557fffffffffff5555555555555555555555555555555555555555555555555555555555555555555555555555555aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabfffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6aaa9a9535554d555555555555555555555555555555555555555555555555555555555555555555783fffff9ff35555555555555555555555555555555555555555555555555555555555555555555 -5555557ff554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab39fffff9ff3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a8535554d55555555555555555555555555555555555555555555555555555555555555555567f2664 -998615555555555555555555555555555555555555555555555555555555555555555555555555555554aabffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa7f126449333aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9abea6ea89aa537544d5 -555555555555555555555555555555555555555555555555555555555555555556613264c93335555555555555555555555555555555555555555555555555555555555555555555557155555556aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa793264c9333aaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a8536004d5555555555555555555555555555555555555555555555555555555555555555556793264c93335555555555555555555555555555555555555555555555555555555555555555555556155555554aaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab39324449332aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a8535554d55555555555555555555555555555555555555555555555555555555555555555578533249987955555555555555555555555555555555555 -55555555555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffcfffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6c009a8535554d55555555555555555555555555555555555555555 -55555555555555555555555557fffffcfffff5555555555555555555555555555555555555555555555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffcfffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaa9aaaa6aaa9a85200008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000400015400000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffca9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffab51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a8efffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa850efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff54a8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa850cfffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a92fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffa851efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8511fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff56a9ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffeff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -07ffffaa51ffffffffffffeff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffff56a9ffffffffffffeff3fffffffffffff3fffffffffffff3fffffffffffff3ffffffffffff13ffffffe7fb -aeb1f2efbfff3ffff3fffffffffffff3fffffffffffff0000ffffffffff3fffffffffffff3ffffaa51ffffffffffffeff3fffffffffffff3fffffffffffff3fffffffffffff3ffffffffffff23ffffffe7fbaeb1f2ef3fff3ffff3fffffffffffff3ffffffffffff83fff0000ffffff3fffffffffffff3ffff56a9ffffffffff -ffeff3fffffffffffff3fffffffffffff3fffffffffffff3fffffffffffe73ffffffe7fbae91f2ef3fff3ffff3fffffffffffff3fffffffffffc73fffffff0fffff3fffffffffffff3ffffaa51ffffffffffff83f3fffffffffffff3fffffffffffff3fffffffffffff3fffffffffffef3ffffffe7fbaa91e2ef3fff3ffff3ff -fffffffffff3ffffffffffc3f3ffffffff0ffff3fffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffe7f3aa9de2ef3ffe5fffffffffffffffffffffffffffff3ffffffffffff1fffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffff -fffffffffffffffffffffffffffffffffffffffdf7ffffffe7f3a29da2ef3ffedffffffffffffffffffffffffffffefffffffffffffe1ffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffbfbffffffe7f3a29d824f3ffedfffffffffffffffffffffffffff -f9ffffffffffffffe1fffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffbfbffffffe7f3a29d824f3ffedffffffffffffffffffffffffffff7fffffffffffffffe1ffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffff -fffffffffffffffffffbfbffffffe7f3a29d824f3ffedfffffffffffffffffffffffffffefffffffffffffffffe3fffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffbfbffffffe7f3a09d824f3ffedfffffffffffffffffffffffffff9ffffffffffffffffffc -7ffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffbfbffffffe7f3a099804f3ffedfffffffffffffffffffffffffff7fffffffffffffffffff8ffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffb -fdffffffd7f3a09d804f3ffedffffffffffffffffffffffffffefffffffffffffffffffff1fffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffbfdffffffd7f3a01d804f3ffedffffffffffffffffffffffffffdfffffffffffffffffffffe3ffffffffff3ffffa8 -51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffff7fdffffffd7f3a01d804f3ffedffffffffffffffffffffffffff3ffffffffffffffffffffffcffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffff7fdffffffd7f3a01d804f -3ffedfffffffffffffffffffffffffeffffffffffffffffffffffff1fffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffff7fdffffffd7f3a01d804f3ffedfffffffffffffffffffffffffdffffffffffffffffffffffffe3ffffffff3ffff54a9fffffffffffffff3ff -fffffffffffffffffffffffffffffffffffffffffffffffffff7fdffffffd7f3a01d804f3ffeefffffffffffffffffffffffffbfffffffffffffffffffffffffc7fffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffeffffffd7f3a019804f3ffeefffffffffffffff -ffffffffff7ffffffffffffffffffffffffff8fffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffeffffffd7f3a01d804f3ffeeffffffffffffffffffffffffeffffffffffffffffffffffffffff1ffffff3ffffa851fffffffffffffff3ffffffffffffffffffffff -ffffffffffffffffffffffffffffffeffeffffffd7f3a01d804f3ffeeffffffffffffffffffffffffdffffffffffffffffffffffffffffe3fffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffeffffffd7f3a01d804f5ffdeffffffffffffffffffffffffdffffffffff -fffffffffffffffffffcfffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdffeffffffd7f3a01d804f5ffdeffffffffffffffffffffffffbffffffffffffffffffffffffffffff1ffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffdffeffffffd7f3a015804f5ffdeffffffffffffffffffffffff7ffffffffffffffffffffffffffffffe3fff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdffeffffffdbf3a015804f5ffdefffffffffffffffffffffffefffffffffffffffffffffffffffffff -fc7ff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdfff7fffffdbf3a011804f5ffdefffffffffffffffffffffffdfffffffffffffffffffffffffffffffff8ff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdfff7fffff -dbf3a015804f5ffdefffffffffffffffffffffffbffffffffffffffffffffffffffffffffff3f3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdfff7fffffdbf3a015804f5ffdefffffffffffffffffffffffbffffffffffffffffffffffffffffffffffc73ffffa851ffffff -fffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffdfff7fffffdbf3a015804f5ffdefffffffffffffffffffffff7fffffffffffffffffffffffffffffffffff83ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffbfff7fffffdbf3a015804f5ffdefff -ffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffbfff7fffffdbf3a015804f5ffdeffffffffffffffffffffffefffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffff -ffffffffffffffffffffffffffffffffffffffffffbfff7fffffdbf3a015804f5ffdeffffffffffffffffffffffefffffffffffffffffffffffffffffffffffff3ffffa851fffffffffeffc7f3ffffffffffffffffffffffffffffffffffffffffffffffffffffbfff7fffffdbf3a011804f5ffdeffffffffffffffffffffffd -fffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffd7fbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffbfff7fffffdbf3a015804f5ffdeffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfbbf3ffffffffffffffffffffffffffffff -ffffffffffffffffffffffbfffbfffffdbf3a015804f5ffdeffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfbbf07fffffffffffffffffffffffffffffffffffffffffffffffffffbfffbfffffdbf3a015804f5ffdeffffffffffffffffffffff7ffffffffffffffffffff -ffffffffffffffff83ffffa851fffffffffbbfc7f07fffffffffffffffffffffffffffffffffffffffffffffffffff7fffbfffffdbf3a015804f5ffdeffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff83ffff54a9fffffffffbbfbbf3ffffffffffffffffffffffffffffffffffffffffffffffffff -ff7fffbfffffdbf3a015804f5ffdf7ffffffffffffffffffffeffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffbfffffdbf3a015804f5ffdf7ffffffffffffffffffffeffffffffffffffffffffffffffffffffffffff3ff -ff54a9fffffffffd7bbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffbfffffdbf3a011804f5ffdf7ffffffffffffffffffffdffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffef1c7f3ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffbfffffdbf3a015 -804f5ffdf7ffffffffffffffffffffdffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffbfff3ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffbfffffdbf3a015804f5ffdf7ffffffffffffffffffffbffffffffffffffffffffffffffffffffffffff3ffffaa51ffffffffffffff -f3fffffffffffffffffffffffffffffffffffffffffffffffffffeffffbfffffdbf3a015804f5ffdf7ffffffffffffffffffffbffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffeffffbfffffbbf3a015804f5ffdf7ffffffffff -ffffffffff7ffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffeffffbfffffbbf3a015804f5ffdf7ffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffff -fffffffffffffffffffffffffffffffffeffffbfffffbbf32015804f5ffdf7ffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffeffffbfffffbbf32001804f5ffdf7fffffffffffffffffffeffffffffff -fffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffeffffbfffffbbf32005804f5ffdf7fffffffffffffffffffefffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffff -fffffffffffffdffffbfffffbbf32005804f5ffdf7fffffffffffffffffffdfffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdfffffbbf32000804f5ffdf7fffffffffffffffffffdffffffffffffffffffffffffffffff -fffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdfffffbbf32000804f5ffdf7fffffffffffffffffffbfffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdf -ffffbbf32000804edffdfbfffffffffffffffffffbfffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdfffffbbf32000804edffbfbfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffff3ffff54a9ff -fffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdfffffbbf32000804edffbfbfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffdffffdfffffbbf32000804edffb -fbfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffff3ffff55a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffffeffffffffffffffffffffffffffffffffffffffff3ffffa951fffffffffffffff3ffffff -fffffffffffffffffffffffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffffeffffffffffffffffffffffffffffffffffffffff3ffff55a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffff -dffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffffdffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffff -fffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffffdffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffdfffffbbf32000804edffbfbffffffffffffffffffbfffffffffffffffffff -fffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdfffffbbf32000804edffbfbffffffffffffffffffbffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff -fffff7ffffdfffffbbf32000804edffbfbffffffffffffffffffbffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdfffffbbf32000804edffbfbffffffffffffffffff7fffffffffffffffffffffffffffffffffffffff -f3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdfffffbbf32000804edffbfbffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffbbf3 -2000804edffbfbfffffffffffffffffefffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffbbf32000804edffbfbfffffffffffffffffefffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffff -fffff3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffbbf32000804edffbfbfffffffffffffffffefffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffeffc7f3ffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbbf32000804edffbfbffffff -fffffffffffdfffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffd7fbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbbf32000004edffbfbfffffffffffffffffdfffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfbff3ffffffffffffff -ffffffffffffffffffffffffffffffffffffefffffefffffbbf32000004edffbfbfffffffffffffffffdfffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfbff07fffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbdf32000004edffbfbfffffffffffffffffbffffffff -ffffffffffffffffffffffffffffffff83ffffa851fffffffffbbf87f07fffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbdf32000004edffbfbfffffffffffffffffbffffffffffffffffffffffffffffffffffffffff83ffff54a9fffffffffbbfbbf3ffffffffffffffffffffffffffffffffff -ffffffffffffffffefffffefffffbdf32000004edffbfbfffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbdf32000004edffbfbfffffffffffffffff7ffffffffffffffffffffffffffff -fffffffffffff3ffff54a9fffffffffd7bbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffdfffffefffffbdf32000004edffbfbfffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffef1c7f3ffffffffffffffffffffffffffffffffffffffffffffffffffdfff -ffefffffbdf32000004edffbfbfffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff3ffff57a9fffffffffffbfff3ffffffffffffffffffffffffffffffffffffffffffffffffffdfffffefffffbdf32000004edffbfbffffffffffffffffeffffffffffffffffffffffffffffffffffffffffff3ffffa8 -51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffdfffffefffffbdf32000004edffbfbffffffffffffffffeffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffdfffffefffffbdf32000004e -dffbfbffffffffffffffffeffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffdffffff7ffffbdf32000004edffbfbffffffffffffffffeffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ff -ffffffffffffffffffffffffffffffffffffffffffffffffbffffff7ffffbdf32000004edffbfbffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffbffffff7ffffbdf32000004edffbfdffffffffffffff -ffdffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffbffffff7ffffbdf32000004edffbfdffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffff -ffffffffffffffffffffffffffffbffffff7ffffbdf32000004edff7fdffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffbffffff7ffffbdf32000004edff7fdffffffffffffffffbfffffffffffffffff -fffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffbffffff7ffffbdf32000004edff7fdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff -ffffffffbffffff7ffffbdf32000004edff7fdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdf32000004edff7fdffffffffffffffffbfffffffffffffffffffffffffffffffffffff -fffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdf34000004edff7fdffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffff -bdf34000004edff7fdffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdf34000004edff7fdffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffff -fffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdeb4000004edff7fdffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdeb4000004edff7fdff -fffffffffffffefffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdeb4000004edff7fdfffffffffffffffefffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffff -ffffffffffffffffffffffffffffffffffffffff7ffffff7ffffbdeb4000004edff7fdfffffffffffffffefffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffeffffff -fffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffdfffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffff -fffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffdfffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffdffffffffffffffffffffffffff -fffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffdfffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffe -fffffffbffffbdeb4000004edff7fdfffffffffffffffbfffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffbfffffffffffffffffffffffffffffffffffffffffff3ff -ff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffefffffffbffffbdeb4000004edff7fdfffffffffffffffbfffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffefff7f3fffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbdeb4000 -004edff7fdfffffffffffffffbfffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffd7ff7f3fffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbdeb4000004edff7fdfffffffffffffff7fffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfe7 -f3fffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbdeb4000004edff7fdfffffffffffffff7fffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfd7f07ffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbded4000004edff7fdffffffffff -fffff7ffffffffffffffffffffffffffffffffffffffffff83ffffa851fffffffffbbfd7f07ffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbded4000004edff7fdfffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff83ffff54a9fffffffffbbfb7f3ffffffffffffffffff -fffffffffffffffffffffffffffffffdfffffffbffffbded4000004edff7fdffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbf83f3fffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbded4000004edff7fdffffffffffffffefffffffffffffff -fffffffffffffffffffffffffffff3ffff54a9fffffffffd7bf7f3fffffffffffffffffffffffffffffffffffffffffffffffffdfffffffbffffbded4000004edff7fdffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffef1f7f3ffffffffffffffffffffffffffffffffffffff -fffffffffffbfffffffbffffbded4000004edff7fdffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffbfff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffbffffbded4000004edfeffdffffffffffffffefffffffffffffffffffffffffffffffffff -fffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffdffffbded4000004edfeffdffffffffffffffdffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffd -ffffbded4000004edfeffeffffffffffffffdffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffdffffbded4000004edfeffeffffffffffffffdffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ff -fffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffdffffbded4000004edfeffeffffffffffffffdffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffdffffbded4000004edfef -feffffffffffffffbffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffbfffffffdffffbded4000004edfeffeffffffffffffffbffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffff -fffffffffffffffffffffffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffffbffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffffbfff -fffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffff -fffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffff7fffffffffffffffffffffff -fffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff7fffffffdffffbded4000004edfeffeffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff -fff7fffffffdffff7ded4000004edfeffefffffffffffffefffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff7fffffffdffff7ded4000004edfeffefffffffffffffeffffffffffffffffffffffffffffffffffffffffffff -f3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffdffff7ded4000004edfeffefffffffffffffefffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffdffff7ded -4000004edfeffefffffffffffffefffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffdffff7ded4000004edfeffefffffffffffffefffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffff -fffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffdffff7ded4000004edfeffefffffffffffffdfffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffdffff7ded4000004edfeffeffffff -fffffffdfffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffeffff7ded4000004edfeffefffffffffffffdfffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffff -ffffffffffffffffffffffffffffffffffeffffffffeffff7ded4000004edfeffefffffffffffffdfffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffeffffffffeffff7ded4000004edfeffefffffffffffffdffffffffffff -fffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffdffffffffeffff7ded4000004edfeffefffffffffffffdfffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffff -ffffffffffffffdffffffffeffff7ded4000004edfefff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffdffffffffeffff7ded4000004edfefff7ffffffffffffbffffffffffffffffffffffffffffffff -fffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffdffffffffeffff7ded4000004eefefff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffeffc7f3ffffffffffffffffffffffffffffffffffffffffffffffffdfffff -fffeffff7ded4000004eefefff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffd7fbbf3ffffffffffffffffffffffffffffffffffffffffffffffffdffffffffeffff7ded4000004eefefff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff3ffffaa -51fffffffffbbfbbf3ffffffffffffffffffffffffffffffffffffffffffffffffdffffffffeffff7ded4000004eefefff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffbbffbf07fffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004e -efefff7ffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff83ffffaa51fffffffffbbff7f07fffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7ffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff83ffff54a9fffffffffbbfeff3ff -ffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfdff3ffffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7ffffffffffff7 -fffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffd7bbff3ffffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffef183f3ffffffffffffffffffffff -ffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffbfff3ffffffffffffffffffffffffffffffffffffffffffffffffbffffffffeffff7ded4000004eefefff7fffffffffffefffffffffffffffffffff -fffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffeffff7ded4000004eefefff7fffffffffffeffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff -ffffff7ffffffffeffff7ded4000004eefefff7fffffffffffeffffffffffffffffffffffffffffffffffffffffffffff3ffffa951fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffeffff7ded4000004eefefff7fffffffffffefffffffffffffffffffffffffffffffffffffffff -fffff3ffff55a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffeffff7ded4000004eefefff7fffffffffffeffffffffffffffffffffffffffffffffffffffffffffff3ffffa951fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffeffff -7ded4000004eefefff7fffffffffffeffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffeffff7ded4000004eefefff7fffffffffffdffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffff -fffffffff3fffffffffffffffffffffffffffffffffffffffffffffffefffffffffeffff7ded4000004eefefff7fffffffffffdffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffefffffffffeffff7ded4000004eefefff7f -ffffffffffdffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffefffffffffeffff7ded4000004eefefff7fffffffffffdffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffff -fffffffffffffffffffffffffffffffffffffefffffffffeffff7ded4000004eefefffbfffffffffffdffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffefffffffffeffff7ded4000004eefefffbfffffffffffdfffffffff -fffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffefffffffffeffff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffff -fffffffffffffffffefffffffffeffff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdfffffffffeffff7ded40000056efefffbfffffffffffbfffffffffffffffffffffffffffff -fffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdfffffffffeffff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdff -ffffffff7fff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdffffffffff7fff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ff -ff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdffffffffff7fff7ded40000056efefffbfffffffffffbffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdffffffffff7fff7ded4000 -0056efefffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffdffffffffff7fff7ded40000056efefffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffffffffffff -f3fffffffffffffffffffffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbfffffffff -ff7ffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffff -fffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff3ffffab51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbffffffffffeffffffffffffffffff -fffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffbffffffffff7fff7ded40000056efefffbffffffffffefffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffffffffffeff3ffffffffffffffffffffffffffffffffffffff -fffffffff7ffffffffff7fff7ded40000056efefffbffffffffffefffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffffffd7f3fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff7ffefded40000056efefffbffffffffffeffffffffffffffffffffffffffffffffffffff -fffffffff3ffffa851ffffffffffffbbf3fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff7ffefded40000056efefffbffffffffffefffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffffffbbf07ffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff -7ffefded40000056efefffbffffffffffeffffffffffffffffffffffffffffffffffffffffffffff83ffffa851ffffffffffffbbf077efdfbf7efdfbf7efdfbf7efdfbf7efdfbf7efdfbf7efd7bf7efdfbf76fdebd6c40000046cfaf7ebdfbf7efdfbd7efdfbf7efdfbf7efdfbf7efdfbf7efdfbf7efdfbf7efd83ffff54a9ff -ffffffffffbbf3fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff7ffefded40000056efefffdffffffffffdfffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffffffffffbbf3fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff7ffefded40000056efef -ffdffffffffffdfffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffffffd7f3ffffffffffffffffffffffffffffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffdfffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51ffffffffffffeff3ffffff -ffffffffffffffffffffffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffdfffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffdffffff -fffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffff -ffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffefffffffffff7ffefded40000056efefffdffffffffffbffffffffffffffffffffffffff -fffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffdfffffffffff7ffefded40000056efefffdffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff -dfffffffffff7ffefded40000056efefffdffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffdfffffffffff7ffefded40000056efefffdffffffffffbffffffffffffffffffffffffffffffffffffffffffffff -f3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffdfffffffffff7ffefded40000056efefffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffdfffffffffff7ffefded -40000056efefffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff7ffefeed40000056efefffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9ffffffffff -fffff3ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff7ffefeed40000056efefffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff7ffefeed40000055efefffdfffff -fffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff7ffefeed40000055efefffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffff -ffffffffffffffffffffffffffffffffbfffffffffff7ffefeed40000055efefffdfffffffffeffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffffbffefeed40000055efefffdfffffffffefffffffffffffff -fffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffbffefeed40000055efefffdfffffffffeffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffff -ffffffffffff7fffffffffffbffefeed40000055efefffdfffffffffeffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffbffefeed40000055efefffefffffffffefffffffffffffffffffffffffffffffffff -fffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffbffefeed40000055efefffefffffffffeffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff7fffffff -ffffbffefeed40000055efefffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055efdfffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffffa8 -51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055efdfffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055 -efdfffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055efdfffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ff -fffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055efdfffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffbffefeed40000055efdfffefffffffffbfff -fffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffdffffffffffffbffefeed40000055efdfffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffff -fffffffffffffffffffffffdffffffffffffbffefeed40000055efdfffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffeffc7f3fffffffffffffffffffffffffffffffffffffffffffffdffffffffffffbffefeed40000055efdfffefffffffffbfffffffffffffffffffffff -fffffffffffffffffffffffff3ffffa851fffffffffd7fbbf3fffffffffffffffffffffffffffffffffffffffffffffdffffffffffffbffefeed40000055efdfffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfbbf3ffffffffffffffffffffffffffffffffffffffffff -fffdffffffffffffbffefeed40000055efdfffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbffbf07ffffffffffffffffffffffffffffffffffffffffffffdffffffffffffbffefeed40000055efdfffefffffffffbfffffffffffffffffffffffffffffffffffffffffff -ffff83ffff54a9fffffffe0bbff7f07ffffffffffffffffffffffffffffffffffffffffffffbffffffffffffbffefeed40000055efdfffefffffffff7fffffffffffffffffffffffffffffffffffffffffffffff83ffffa851fffffffffbbfeff3fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffbffe -feed40000055efdfffefffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfdff3fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffbffefeed40000055efdfffefffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffff -fffd7bbff3fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffbffefeed40000055efdfffefffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffef183f3fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffbffefeed40000055efdfffef -ffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffbfff3fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffdffefeed40000055efdffff7ffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffff -fffffffffffffffffffffffffffffffffff7ffffffffffffdffefeed40000055efdffff7fffffffefffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffdffefeed40000055f7dffff7fffffffeffffffffffff -fffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffdffefeed40000035f7dffff7fffffffefffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffff -fffffffffffffff7ffffffffffffdffdfeed40000035f7dffff7fffffffefffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffdffdfeed40000035f7dffff7fffffffeffffffffffffffffffffffffffffffff -fffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffdffdfeed40000035f7dffff7fffffffefffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffefffff -ffffffffdffdfeed40000035f7dffff7fffffffefffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffefffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ff -ff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffefffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffefffffffffffffdffdfeed4000 -0035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffffffffffff -f3ffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffdffdfeed40000035f7dffff7fffffffd -fffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffff -ffffffffffffffffffffffffffbfffffffffffffdffdfeed40000035f7dffff7fffffffdfffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffdffdfeed40000035f7dffff7fffffffbffffffffffffffffffff -fffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffdffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffff -ffffffbfffffffffffffdffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffdffdfeed40000035f7dffff7fffffffbffffffffffffffffffffffffffffffffffffffff -fffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffdffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff -dffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffdffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9ff -fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffeffdfeed40000035f7dffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffeffdfeed40000035f7df -fff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffeffdfeed40000035f7dffff7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffff -fffffffffffffffffffffffffffffffffffffeffffffffffffffeffdfeed40000035f7dffff7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffff3ffff55a9fffffffffefff7f3fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffeffdfeed40000035f7dffff7fffffff7ffffffff -fffffffffffffffffffffffffffffffffffffffff3ffffa951fffffffffd7ff7f3fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffeffdfeed40000035f7dffff7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffff3ffff55a9fffffffffbbfe7f3ffffffffffffffffffffffffff -fffffffffffffffffeffffffffffffffeffdfeed40000035f7dffff7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfd7f07ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffeffdfeed40000035f7dffff7fffffff7ffffffffffffffffffffffffffff -ffffffffffffffffffff83ffff54a9fffffffe0bbfd7f07ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffeffdfeed40000035f7dffff7fffffff7ffffffffffffffffffffffffffffffffffffffffffffffff83ffffa851fffffffffbbfb7f3fffffffffffffffffffffffffffffffffffffffffffdff -ffffffffffffeffdfeed40000035f7bffff7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffbbf83f3fffffffffffffffffffffffffffffffffffffffffffdffffffffffffffeffdfeed40000035f7bffff7fffffff7ffffffffffffffffffffffffffffffffffffffffffffffff -f3ffffaa51fffffffffd7bf7f3fffffffffffffffffffffffffffffffffffffffffffdffffffffffffffeffdfeed40000035f7bffff7ffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffef1f7f3fffffffffffffffffffffffffffffffffffffffffffbffffffffffffffeffdfeed -40000035f7bffff7ffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffbfff3fffffffffffffffffffffffffffffffffffffffffffbffffffffffffffeffdfeed40000035f7bffff7ffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ffffffffff -fffff3fffffffffffffffffffffffffffffffffffffffffffbffffffffffffffeffdfeed40000035f7bffffbffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffbffffffffffffffeffdfeed40000035f7bffffbffff -ffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffeffdfeed40000035f7bffffbffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffff -fffffffffffffffffffffffffffff7ffffffffffffffeffdfeed40000035f7bffffbffffffeffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffeffdfeed40000035f7bffffbffffffefffffffffffffffff -fffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffeffdfeed40000035f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffff -ffffffffefffffffffffffffeffdfedd40000035f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffefffffffffffffffeffdfedd40000035f7bffffbffffffdfffffffffffffffffffffffffffffffffffff -fffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffefffffffffffffffeffdfedd40000035f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffefffffffffff -ffffeffdfedd40000135f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffff7fbfedd40000135f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa8 -51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffff7fbfedd40000135f7bffffbffffffdffffffffffffffffffffffffffffffffffffffffffffffffff3ffff57a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffff7fbfedd40000135 -f7bffffbffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffdffffffffffffffff7fbfedd40000135f7bffffbffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ff -ffffffffffffffffffffffffffffffffffffffffbffffffffffffffff7fbfedd40000135f7bffffbffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffbffffffffffffffff7fbfedd40000135f7bffffbffffffbfffff -fffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffbffffffffffffffff7fbfedd40000135f7bffffdffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffff -ffffffffffffffffffff7ffffffffffffffff7fbfedd40000135f7bffffdffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffff7fbfedd40000135f7bffffdffffffbfffffffffffffffffffffffff -fffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffff7fbfedd40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff -7ffffffffffffffff7fbfedd40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffefffffffffffffffff7fbfedd40000135f7bffffdffffff7fffffffffffffffffffffffffffffffffffffffffffff -fffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffefffffffffffffffff7fbfedd40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffefffffffffffffffff7fb -fedd40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffffefffffffffffffffff7fbfedd40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51ffffff -fffffffff3fffffffffffffffffffffffffffffffffffffffffdfffffffffffffffff7fbff5d40000135f7bffffdffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffeffc7f3fffffffffffffffffffffffffffffffffffffffffdfffffffffffffffff7fbff5d40000135f7bffffd -fffffefffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffd7fbbf3fffffffffffffffffffffffffffffffffffffffffdfffffffffffffffff7fbff5d40000135f7bffffdfffffefffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffbbfbff3ffffffffff -fffffffffffffffffffffffffffffffbfffffffffffffffff7fbff5d40000135f7bffffdfffffefffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffbbfbff07ffffffffffffffffffffffffffffffffffffffffbfffffffffffffffff7fbff5d40000135f7bffffdfffffeffffffffffffff -ffffffffffffffffffffffffffffffffffff83ffff56a9fffffffe0bbf87f07ffffffffffffffffffffffffffffffffffffffffbfffffffffffffffff7fbff5d40000135f7bffffefffffeffffffffffffffffffffffffffffffffffffffffffffffffff83ffffaa51fffffffffbbfbbf3ffffffffffffffffffffffffffffff -fffffffffff7fffffffffffffffff7fbff5d40000135f7bffffefffffefffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffbbfbbf3fffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffbfbff5d40000135f7bffffefffffeffffffffffffffffffffffffffffffffff -fffffffffffffffff3ffffaa51fffffffffd7bbbf3fffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffbfbff5d40000135f7bffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffef1c7f3ffffffffffffffffffffffffffffffffffffffffefffffffff -fffffffffbfbff5d40000135f7bffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffbfff3ffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbfbff5d40000135fbbffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ff -ff56a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbfbff5d40000135fbbffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbfbff5d4000 -0135fbbffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffbf7ff5d40000135fbbffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851ffffffffffffff -f3ffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffbf7ff5d40000135fbbffffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffbf7ff5d40000135fb7ffffefffffbff -fffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffbf7ff5d40000135fb7ffffefffffbfffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffff -ffffffffffffffffffffffbffffffffffffffffffbf7ff5d40000135fb7ffffefffffbfffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffbf7ff5e40000135fb7fffff7ffffbffffffffffffffffffffff -fffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffbf7ff5e40000135fb7fffff7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffff -ff7ffffffffffffffffffbf7ff5e40000135fb7fffff7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffbf7ff5e40000135fb7fffff7ffff7ffffffffffffffffffffffffffffffffffffffffff -fffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffefffffffffffffffffffbf7ff5e40000135fb7fffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffeffffffffffffffffff -fbf7ff5e40000135fb7fffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffefffffffffffffffffffbf7ff5e40000135fb7fffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9ff -fffffffffffff3fffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffbf7ff5e40000135fb7fffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffbf7ff5e40000135fb7f -ffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffbf7ff5e40000135fb7fffff7ffff7fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffff -fffffffffffffffffffffffffffffffffbfffffffffffffffffffdf7ff5e40400135fb7fffff7fffeffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffdf7ff5e40400135fb7fffff7fffefffffffffff -fffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffdf7ff5e40400135fb7fffff7fffeffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffff -ffffffffffffeffffffffffffffffffffdf7ff5e40400935fb7fffff7fffeffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffdf7ff5e40400935fb7fffff7fffefffffffffffffffffffffffffffffff -fffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffdf7ff5e40400935fb7fffffbfffeffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffdfffffff -fffffffffffffdf7ff5e40400935fb7fffffbfffeffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffdf7ff5e40400935fb7fffffbfffdfffffffffffffffffffffffffffffffffffffffffffffffffff -f3ffffa851fffffffffffffff3ffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffdf7ff5e40400935fb7fffffbfffdffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffeffc7f3ffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffdf7ff5e -40400935fb7fffffbfffdffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffd7fbbf3ffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffdf7ff5e40400935fb7fffffbfffdffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffb -bfbbf3fffffffffffffffffffffffffffffffffffffefffffffffffffffffffffdf7ff5e40400939fb7fffffbfffdffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffbbfbbf07ffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffdf7ff5e40400939fb7fffffbfff -dfffffffffffffffffffffffffffffffffffffffffffffffffff83ffff54a9fffffffe0bbfc7f07ffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffdf7ff5e50400939fb7fffffbfffbfffffffffffffffffffffffffffffffffffffffffffffffffff83ffffa851fffffffffbbfbbf3ffffffffffffff -fffffffffffffffffffffffbfffffffffffffffffffffdf7ff5e50400939fb7fffffdfffbffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffbbfbbf3fffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffdf7ff5e50400939fb7fffffdfffbfffffffffffffffffff -fffffffffffffffffffffffffffffffff3ffffa851fffffffffd7bbbf3fffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffdf7ff5e50400939fb7fffffdfffbffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffef1c7f3ffffffffffffffffffffffffffffffffff -fff7fffffffffffffffffffffdf7ff5e50400939fb7fffffdfffbffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffbfff3ffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffdf7ff5e50400939fb7fffffdfffbfffffffffffffffffffffffffffffffffffffff -fffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffdf7ff5e50400939fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff1ffffffffffffffffffffffffffffffffffffdfffffffffffffffff -fffffdf7ff5e50400939fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff23fffffffffffffffffffffffffffffffffffbffffffffffffffffffffffdf7ff5e50400939fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa8 -51fffffffffffffff3cfffffffffffffffffffffffffffffffffffbffffffffffffffffffffffef7ff5e50400939fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3f1ffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffeefff5e50400939 -fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fe3ffffffffffffffffffffffffffffffffefffffffffffffffffffffffeefff5e50400939fb7fffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ff -c7fffffffffffffffffffffffffffffffefffffffffffffffffffffffeefff5e50400939fb7fffffdffefffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fff8fffffffffffffffffffffffffffffffdfffffffffffffffffffffffeefff5e50400939fb7fffffdffeffffffff -fffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffff3ffffffffffffffffffffffffffffffbfffffffffffffffffffffffeefff5e50400939fb7fffffeffefffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffc7ffffffffffffffff -fffffffffffffbfffffffffffffffffffffffeefff5e5040093bfaffffffeffefffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3fffff8fffffffffffffffffffffffffffff7fffffffffffffffffffffffeefff5e5040093bfaffffffeffeffffffffffffffffffffffffffff -fffffffffffffffffffffffff3ffffaa51fffffffffffffff3ffffff1fffffffffffffffffffffffffffeffffffffffffffffffffffffeefff5e5040093bfaffffffeffdfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffe3ffffffffffffffffffffffffffdfffffff -fffffffffffffffffeefff5e5040093bfaffffffeffdfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffc7fffffffffffffffffffffffffdffffffffffffffffffffffffeefff5e5040093bfaffffffeffdffffffffffffffffffffffffffffffffffffffffffffffff -fffff3ffff54a9fffffffffffffff3ffffffff8fffffffffffffffffffffffffbffffffffffffffffffffffffeefff5ed040093bfafffffff7fdfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa951fffffffffffffff3fffffffff1fffffffffffffffffffffffe7ffffffffffffffffffffffffeef -ff5ed040893bfafffffff7fdfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff55a9fffffffffffffff3fffffffffe3ffffffffffffffffffffffdfffffffffffffffffffffffffeefff5ed040893bfafffffff7fbfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa951ffffff -fffffffff3ffffffffffc7fffffffffffffffffffffbfffffffffffffffffffffffffeefff5ed040893bfafffffff7fbfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3fffffffffff8ffffffffffffffffffffe7fffffffffffffffffffffffffeefff5ed041893bfaffffff -f7fbfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3ffffffffffff1fffffffffffffffffffdfffffffffffffffffffffffffff6fff5ed041893bfcfffffff7fbfffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffff -ffe3ffffffffffffffffffbfffffffffffffffffffffffffff6fff9ed441893bfcfffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffaa51fffffffffffffff3fffffffffffffc3ffffffffffffffffe7fffffffffffffffffffffffffff6fffbed441893bfcfffffff7f7ffffffffffffffff -fffffffffffffffffffffffffffffffffffff3ffff56a9fffffffffffffff3ffffffffffffffc7fffffffffffffffdffffffffffffffffffffffffffff6fffbed44189bbfcfffffffbf7fffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffa851fffffffffffffff3fffffffffffffff87fffffffffffff -fbffffffffffffffffffffffffffff5fffbed44189bbfcfffffffbeffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff54a9fffffffffffffff3ffffffffffffffff8fffffffffffffe7ffffffffffffffffffffffffffff5fffbed44589bbfcfffffffbefffffffffffffffffffffffffffffffffffff -fffffffffffffffff3ffffa851fffffffffffffff3fffffffffffff3fff0fffffffff3ff9ffffffffff3fffffffffffff3ffff5fffbed44189bbfcfffffff3effffffffffff3fffffffffffff3fffffffffffff3fffffffffffff3ffff54a9ffffffffffffeff3fffffffffffff3ffff1ffffffff3f87ffffffffff3ffffffff -fffff3ffff5fffbed44189bbfcfffffff1effffffffffff3fffffffffffff3fffffffffffff3fffffffffffff3ffffa851ffffffffffffcff3fffffffffffff3ffffe1fffffff3c7fffffffffff3fffffffffffff3ffff5fffbed44189bbfcfffffff1effffffffffff3fffffffffffff3fffffffffffff3fffffffffffff3ff -ff54a9ffffffffffffaff3fffffffffffff3fffffe0003fff03ffffffffffff3fffffffffffff3ffff9fffbed441a9bbfcfffffff0cffffffffffff3fffffffffffff3fffffffffffff3fffffffffffff3ffffa851ffffffffffffeff00000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000003ffff54a9ffffffffffe0eff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffa851ffffffffffffef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffbefff5efbffdffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffff83ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab51ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9fffffffffffffffeffffffffffffbff1ffffffffffbff1ffffffffffbffdffffffffffbff1fffffffffff7fffffffffffdff8ffffffffffdffeffffffffffdff8ffffffffffdff8ffffffffffff7ffffa851fffffffffffffffcffffff -ffffff5feeffffffffff5feeffffffffff5ffdffffffffff5feeffffffffffebfffffffffffaff77fffffffffaffeffffffffffaff77fffffffffaff77ffffffffffe7ffff54a9fffffffffffffffafffffffffffeefeefffffffffeefeffffffffffeeff9fffffffffeefeeffffffffffddfffffffffff77f77fffffffff77f -cffffffffff77f7ffffffffff77f77ffffffffffd7ffffaa51fffffffffffffffefffffffffffeefeefffffffffeefeffffffffffeeff5fffffffffeeffeffffffffffddfffffffffff77ff7fffffffff77faffffffffff77f7ffffffffff77f77fffffffffff7ffff56a9fffffffffffffe0effffffffff82eff1ffffffff82 -efe1ffffffff82eff5ffffffff82effdffffffffffddfffffffffff77feffffffffff77faffffffffff77f0ffffffffff77f8ffffffffffff7ffffaa51fffffffffffffffefffffffffffeefeefffffffffeefeefffffffffeefedfffffffffeeffbffffffffffddfffffffffff77fdffffffffff77f6ffffffffff77f77ffff -fffff77f77fffffffffff7ffff56a9fffffffffffffffefffffffffffeefeefffffffffeefeefffffffffeefe0fffffffffeeff7ffffffffffddfffffffffff77fbffffffffff77f07fffffffff77f77fffffffff77f77fffffffffff7ffffaa51fffffffffffffffeffffffffffff5eeeffffffffff5eeeffffffffff5efdff -ffffffff5eefffffffffffebfffffffffffaf77ffffffffffaf7effffffffffaf777fffffffffaf777fffffffffff7ffff54a9fffffffffffffff83fffffffffffbc71ffffffffffbc71ffffffffffbc7dffffffffffbc60fffffffffff7fffffffffffde307fffffffffde3effffffffffde38ffffffffffde38fffffffffff -c1ffffaa51fffffffffffffffffffffffffffffefffffffffffffefffffffffffffefffffffffffffefffffffffffffffffffffffffff7fffffffffffff7fffffffffffff7fffffffffffff7ffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8 -51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffa801ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff54a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff54abffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8555554d555555555 -5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa8555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaaa555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaaa -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r37/packages/plot/gnuplotex2.ps Index: r37/packages/plot/gnuplotex2.ps ================================================================== --- r37/packages/plot/gnuplotex2.ps +++ /dev/null @@ -1,361 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps1 -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:84 93 528 698 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -128 93 translate -%% 90 rotate -%%605 444 scale -302 222 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 158 116 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 82 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 656 def -/nscans 482 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa54000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000015a9ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6a555555555555555555555555555555555555555555555555555555555555 -55555555555555fffffffffffd555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae0fffffe7fceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -a6aaa9bffa6a55555555555555555555555555555555555555555555555555555555555555555555555555ce7ffffe7fcd555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9fc999 -266186aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a555ffd555555555555555555555555555555555555555555555555555555555555555555559fc499124ccd555555555555555555555555555555555555555555555555555555555555555555555f55555555a9baa26a -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa984c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a555555555555555555555555555555555555555555555555555555555555555555555555559e4c99324ccd55555555555555 -5555555555555555555555555555555555555555555555555555555c55555555a9b0026aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9e4c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6a8a9baa26a5555555555555555555555555555 -5555555555555555555555555555555555555555555555ce4c91124cc9555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae14cc92661e6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a55555555555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd555555555555555555555555555555555555555555555555555555555555555555555555500555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaffffff3ffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6a55555555555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd555555555555555555555555555555555555555555555555555555 -555555555555555555555555a900004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000100006a00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffe7efffffefffffffffcffffefffeffe7fffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefedffffefffffffffeffdfedffefbeffffffffffff -ffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfddffffdfffffffffeffdfedffeeadffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffd86587dc71a71fe1ef1870871ee0fffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdeabbbbae9aefeeeeedeedfeef1fffc00007ffffffd5a8ffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7deabb7beebb3feeeeedeedf0ee0fffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffff7deabb7beebbdfeeeeedeedeeeeafffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefdaa86fbaebaeee1eeedaedaeffbfffffffffffffffea54ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe6ebefc71bb1c6fc71e70e70efffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff -ffffeeffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffeffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -fffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffbffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06181fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffede7ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0c301ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffccfff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff39fffbfcffdfffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffff7ff3ff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffcffffffffff3ce0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3f9fffbffffc3fe3ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8ff7ffe7ffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffff9fc1860fffff3dffd3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9fffb3ffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafe7fffff7fffffbff37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5e7f -fffff8ff3ffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcb9f7ffeffffefffe7ff6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ff7ffefffc5fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee7fefffdffff9ffffeffcdfff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99ffdfffbffffe7ffff7fc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff63ffffffffffffbffff9dba1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff7fffffe3fde7fffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffbfffa77ff7ffeffffeff3fffd7fef3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffaffffffffffffffffffffffffff -fffffffffffffffffffff5fff5effefffdffffdffdfff3bfffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffefe1ffffffffffffffffffffffffffffffffffffffffffff6ffebfffefffdffffdffeffffdfffe7ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffea54fffffffffffffffefc1fffffffffffffffffffffffffffffffffffffffffffef7fdffff030c1fffffffffffffffdf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffefcffffffffffffffffffffffffffffffffffffffffffff -ffff1f7fcffffe7fffffffcf3ffffefdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffefcffffffffffffffffffffffffffffffffffffffffffffffee7f7cfbfff7e7fefffff2fffbff3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffd5a8fffffffffffffffefcffffffffffffffffffffffffffffffffffffffffffffbff5fef3f7ffeff9fefffffdfffdfffe3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffff83cffffffffffffffffffffffffffffffffffffffffffffbffbfd3ff7ffefff8dff -fffefffeffff5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff7ff3f8ffefffdffff3ffffff7fff7ff78fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffff -fffffffcffffffffffffffffffffffffffffffffffffffffffff7fe7e3fffffffffffcfffff7bffffffbf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffff7dbfffffffffff77fffeffffffffdfbffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffff6ff7ffdfffbfffefffffdfffffeffefbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffff -fffffffffffffffffffffffffffffffdfefcf7ffbfff7fffefefffdff7fff7fe7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffbfdf3ffffbfff7fffdff7fffffbfffbf91ebfffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffbfbbfffff7ffefffffff9fffffdfffd9fa75fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffff -fffffffffff7ff3fdffffffffffffffffefffefffe7fde0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffebde7fdfffffffffffbfffbefffffff97fefcfffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffcbcffbffefffdffff7fffddfffffff7bfffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff7bff7ffd -fffbffff7fffe3ffffdfffdffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffbcf3fffffdfffbfffefffffbffffefbffffbff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffbde7fffff067f3fffffffff5fffff67ffffdffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffff7bdffeff8bf984fffffffff6fffff9 -fff7fefddfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffef3fffdf9f7ffefdffdffffef7ffffdfffbff7eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffc -fffffffffffffffffffffffffffffffffffffffffffedffde7f7ffefe3fbffffeffffffefffdffff77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffddffa7ffffffffffbffffffeffff77ffeffffbbffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffb93bfe1ffffffffff17fffffff7fff7bfffffeffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffff -fffffffffffffffffffff75fbf9bffdfffbfffe7ffffbffbffeffffffff7fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffffffff6bfffffffdfffbffff1ffffbffdffdfffffbff7f73fffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffec3ff9ffffbfffbfffeeffff7fffffffefffdffbfb9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffffffff -d6fef7efffbfff7fffffdffefffffffff7ffeffffbdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffeff83cffffffffffffffffffffffffffffffffffffffffb9fdefefffffffffffffefffffff9efffbfff7fffdcfffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffd7fbfcffffffffffffffffffffffffffffffffffffffffabfd7fdfffffffffffdff3ffffffeefffdfffffc1ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffbbfbfcffffffffffffffffffffffffffffffffffffffff57f8ffdffefffeffffbf -fffdfffff5ffffffffdbadfbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffbbfa7c1fffffffffffffffffffffffffffffffffffffffaffbfffffefffdffffbfff3bfffffbfffffffc3fbe19ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -ffffffbbf9bc1fffffffffffffffffffffffffffffffffffffff77f7fffffdfffdffff7fffcbfffff3ffff7ffaffdfc4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffbbffbcfffffffffffffffffffffffffffffffffffffff8efcfff7ffdfffdfffffffff7fffff5ffffbff77f -ffea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffbbffbcfffffffffffffffffffffffffffffffffffffff95fb7ff7ffffffffffffffff3ffffeeffffdfffbfffef3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffd7bbbcffffffff -fffffffffffffffffffffffffffffff0dfeffefffffffffffeffffedffffef7fffefbfbff7ff1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffef1c7cffffffffffffffffffffffffffffffffffffffe3fdeffefff7fff7fffefffffeffffffffffff7ffffbffcfffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffbffcffffffffffffffffffffffffffffffffffffffcff3dffffff7fff7fffdfffffffffffffffffefffffdfde7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffff -ffffffffff9f6fffffffefffeffffdffffdfffffbfdffff9fff7fdfef1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffffff1efffffbff818607ffffffffbfdfffbfeffffdfff7fffef8ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffffe3e7fbffbf36ffff9ffffffffbfe7ff7ff7fff6fffbffff7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffffc7cff7ff6cf -dfffdf9ff7ffff7ffbfefffbffef7ffdffbfffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffff8fbff7ff1ffdfffdfe7f7ffffffffffffffffdf7fffffbffedfffffffffffffffffffffffffffffffffffffffffffffffffffff -ffea54fffffffffffffffffcfffffffffffffffffffffffffffffffffffff1fbfeffe7ffbfffbffe2fffffffffffffffffbfffffffdfdf6fffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffffebf7ffff17ffffffbfffcffffeffff7d -ffff7fffffff7fefefa7ffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffff93c7ffffeffffffffffff3fffeffffbbffff7fffefffbffff7d5ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffff -fffcffffffffffffffffffffffffffffffffffffa7effde3efff7fffffffddfffdffffdbffffbeffefffdffffbf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffff77fffbdfffff7fff7fffdfbffdffffe7ffffddfff7ffdffbfffc -7fffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffffc6efff8fffffefffeffffbfdfffffffebfffffdfffbfffffdfff73fffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffff -fffffffffffffffffffcf9dff3ffbffefffeffffbfe7fffffffdfffff3fffffffffdfefbbfffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffff1f7bfc7ffbffffffefffffffff7fffffeffffebfffffffbf80c3d8fffffffffffffffffff -ffffffffffffffffffffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffffe3bfbf2fffbffffffffffffffe77ffffbfffffedfffefffb9f7f1ec7ffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffffffc7 -7f7fefff7ffdffffffff7fff8fffffbffffffeffff7ffc7fbfa7e7fffffffffffffffffffffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffffffffff0f3ffbfffffffbfffdfffeffffefffff7fbffffeffffbffaffbfdefbfffffffffffffffffffffffffffffffff87fff -ffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffe1cfff7fffffffbfffbfffeffffe7ffff7fdfffbfffffbff77fffef0dfffffffffffffffffffffffffffffffff67fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffffffffffff979fecfbffefff7fffbfffe -ffffdbffffffefffbfffffffff7fffffd2ffffffffffffffffffffffffffffffffbc7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffffffffcf3fdffbffdfffffff7ffffffffddfffffff7ff7fdfffffbfbff7ffed3ffffffffffffffffffffffffffffffe7e7fffffffffffffffffea54ff -fffffffffffffffcffffffffffffffffffffffffffffffffd8ebfcffbffdffffffffffffffffbffffdfffffeffeffff77ffffbfbf79ffffffffffffffffffffffffffffffdfe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffffffff33dff9ff7ffdffeffffffffdffffffbffdffffffffef -fff6fffffbfdff8fffffffffffffffffffffffffffffeff67fffffffffffffffffea54fffffffffffffffefcfffffffffffffffffffffffffffffffec3ffe3ffffffffefffeffffbffffffdffbfffefffff7fff9ffeffdfeffe7ffffffffffffffffffffffffffff9ff67fffffffffffffffffd5a8fffffffffffffffd7cffff -fffffffffffffffffffffffffff806ef9fffffffffdfffeffffbffff7feffbfffefdfffffff6fff7ffff7de3fffffffffffffffffffffffffffe7fee7fffffffffffffffffea54fffffffffffffffbbcfffffffffffffffffffffffffffffff71ddf6ffefff7ff833fdffff7ffff7ff7ffffff7bffffffeefffbfffffef1ffff -fffffffffffffffffffffff8ffee7fffffffffffffffffd5a8fffffffffffffffbbc1fffffffffffffffffffffffffffffbf7bdfeffdfff7e67fcc0ffffffffeffffffffffbbfffdffdf7ffbffbfff78ffffffffffffffffffffffffffdffffe7fffffffffffffffffea54fffffffffffffffbbc1fffffffffffffffffffffff -fffffe7cb7bbdffdffed9fdffff3fffffffefffeeffffff7fffeffbfffffffbfdfbd3fffffffffffffffffffffffff3ffffe7fffffffffffffffffd5a8fffffffffffffffbbcfffffffffffffffffffffffffffffdf9bff7dffdff83ffdfffbf3fefffffffff6ffffff7ffff7fffffffffdfefff87ffffffffffffffffffffff -fefdffbe7fffffffffffffffffea54fffffffffffffffbbcfffffffffffffffffffffffffffff0633feffffffe5fffbfffbfcfefffffffff9fffffebffffbfffdfff7feff7ffc33fffffffffffffffffffffe7fbff7e7fffffffffffffffffd5a8fffffffffffffffd7cffffffffffffffffffffffffffffeffe7edffffff7bf -ffbfff7ffc5ffffdffffcfffffddfffffeffefff7ffffbf7b3cdfffffffffffffffffffc1ff7ff7e7fffffffffffffffffea54fffffffffffffffefcffffffffffffffffffffffffffff7f9cfdff7ff7cfbfffffff7fff9ffffbffffd7ffffdefffffdfff7ffbffffffbd9fe07ffffffffffffffff9bfff7fcfe7fffffffffff -ffffffd5a8fffffffffffffffffcfffffffffffffffffffffffffffcc239fcff7ff7bf7fffffffffffe7fffbffffbbffffbfffffebfff7ffdffbfffbecf3fb3ffffffffffffff67ffffff1fe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffffe0fd67f9feffe9ffffff7fffffffbbfff7ffff -fdfffffffffff7fffffffffdfefdf70fffcd07fffffffff80ffeffffeffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffffffdff4dff3feffc7fffffefffeffffbf7fffffffffffffffbffffbfffffffffc0c1fffd3fffe3e1ffffffe1ffffdffde7ffe7fffffffffffffffffea54ffffffffff -fffffffcfffffffffffffffffffffffffefe01f7cfffff2ffefffefffdffff7f9fffffff7fffff7fdffffdfffefff7faffa7ffc31ff7fff8061807fefffbffb9f7fe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffffff9870eefaffffedffefffdfffdffff7fefeffffeffbffeffefffddfffeff -fbdf7fde0ee8edcffffe7fff7ffefffbffbff7fe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffffc1fe7ddfdffbe7fffdfffffffdfffffffdeffffeffdffefff7ffbfffff7ffb3fbfefd3700c3ffffffffefffdffffff1feffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffff -ffffffffffffbff06bddfffb9ffffdfffffffffffffffe5ffffdffeffdffffff7fffffbffcffdfffef3c1fcffff7fffdfffbfffffc7fdffe7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffffffdff88d7fbfff7ffbffffffbfffffffeffff9ffffffff7ffffffff7fbffffff2fffffff78f59fc3fcf -ffffffffffdff1fffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffff3fc13bff7bff1ff7ffffff7fffbfffdffffc7fffffffffffffdffffdfffffef7ffffbffc37a7ff3bfffefffffffde6dfffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffffef08263eef -7fe7ff7ffbfff7fff7fffdffffbbfffbfffffbfffeffffdfffefff7ff7fdffec8c67fc0fffdfffdfff99fbff7ffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffff83f78e7eff7f9ffefff7fff7fff7fffdffffbffffbfffef7ffff7bffeffff77ffffbfefef7c718cffc3fbfffdff03ff7fefffe -7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffff7fc73dfd7efe7ffffff7ffffffefffffffff7f7ff7ffff77ffffbbfffffff4fffffdff7f7be1f83ffff00cffbc3dffeffefffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffbff1c7bf8ffffdfffffefffffffffff -ffffffffbff7ffffaffffff7fffffffbffeffeffffbff3f39ffff9ff300ffbfffff9fffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffe7f871e7f3ffe7bffdffffffdffffffffbffffffdfffffffcfffffeffffdfff5fff7ffffffbf78bcf9fffffffcfff7ffffc7fffe7fffffffffffffffffd5 -a8fffffffffffffffffcffffffffffffffffffff9e1fbfcfcffddfbffdffffffdfffdffff7fffeffeffffffff7ffffeffffdffeefff7ffffdfffbccffe7f9ffffbffffffbff7fffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffff07f66edfbffbbf7ffbffdfffbfffdffff7fffeffffdffffffbff -ffd7fffeffdf7ffbffbfefffdfe0cfe67ffff7ffffff78f7fffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffcffcdd9ffeff9fffffbffdff8067fbfffeffffdfffddfffffbdffffdbffff7fffffffffdff7f7effc33f83fffffffbfff77effffe7fffffffffffffffffea54fffffffffffffffffc -ffffffffffffffffffffff8fb7f9dfe3ffffffffbe1fbf981ffffffffdfffe3fffff7ffffffdfffffeffffffffeffbfbffdf701fd9ffbfff7ffc3fdffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffcff03f3f67bfeffeffffff07ff7fffa7ffffffffffffbfffff7ffffffffffffdffdfff7ff7 -fffdffe7ff3ffe6e7ffeffc0fffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffff3c3cfc7effbf9ffdffeffcdfff7fff7e7fdfffffffff9ffffeffbfff7fffffdbffefff7ffffffefcfbe7f7fff033fdf0fbfffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffe0f -fbf1fd7fff5ffdffef0fbffeffff7f9fdffffbffff67ffffffdffeff7fffe7fff7ffbffffeffff7ff9f9fff7fcc03ff7fefffffe7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffff9ffffcbf8fffbbffbffd3fffffffffefff8bffff7ffffffffffffeffeffbffff7fffbffdffdf80c07bffffeff3ffff3 -ffeffefffffe7fffffffffffffffffd5a8ffffffffffffeff83cffffffffffffffffffffdcf7f3fde7ffffff0fffffffffffffff1ffff7fffffffffdffeffdffdffffbfffffffffc1fbfde073fbfccffffeffffffdfffffe7fffffffffffffffffea54ffffffffffffd7fbfeffffffffffffffff9fff33ff87fddffffffcbfff -7ffdffffffffa7ffeffffefefffbffffffffefffddfffffffff37fdfefe9dfcfe0ffffffff7ffbfffffe7fffffffffffffffffd5a8ffffffffffffbbfbfc3ffffffffffffffe7ffc3fffeffaff7ff7cffffefffdfffdffff7efffffffdff7ffbffffffffffffdefffefff7ffbfeff7f380c07f67ff7ffeffe3fffffe7fffffff -ffffffffffea54ffffffffffffbbfa7c1ffffffffffffffc1860ffb1dff1feffef3ffffefffbfffdffff7f3ffffffdff9ff7fffdf7ffffffbfffff7ffb3fdffffffff9fcfff99cfffdf997fffffe7fffffffffffffffffd5a8ffffffffffe0bbf9bc1ffffffffffffff3fff3ff6fbfc7feffe3fefffdfffbfffbffffffdfdfff -fbfffffffffeeffffdff7fffffbffcfffffffefffeffffffe067fb67effffffe7fffffffffffffffffea54ffffffffffffbbffbcfbfffffffffffffffffffe7fff3ffdffcffefffffffffffbfffffff9dfffffffffffffff6ffffeffffbfffdff2fffffdff7f3fffcfffeff980ffdffffffe7fffffffffffffffffd5a8ffffff -ffffffbbffbcf8ffffffffffff3fffbfe1fffbffffffbffdfffffffffffffffdfffe3ffffffffbefffff9ffffeffffdfffffef7ffbfeffbfdfdff3ff7fffe7fffffffffe7fffffffffffffffffea54ffffffffffffd7bbbcfd3ffffffffff83ffe7997fee7dffffc3ffdfffbfff7fffffffdffff3ffff7fffcdfffffdfffff7b -ffefffff7fbffdff3fdfefe7ff7cffffdffefffffffe7fffffffffffffffffd5a8ffffffffffffef1c7cfe8fffffffffe7f0fd67effddfbffbcf7ffffff7ffeffff7fffdfffecffff7ffff5fffffaffffffbfff7fff4fffffefffffffffbff81fffffffdfffffffe7fffffffffffffffffea54ffffffffffffffbffcff43ffff -fffe7fffc0fffff8ff7ff73f7ffffff7ffefffeffffbfffef7ffefffffbfffffb7fffff7fffffffbfffffefffffffdfffdaecffefffbfffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffff9ffffe7ffffe3ff7ff3fefffbffefffdfffefffffffffffffefffffdfffff7bffffeffffffff3ffeffffff7f9 -feff23fff379fff7fffffffe7fffffffffffffffffea54fffffffffffffffffcffff1fffffe0ffffffff7f8fffff8ffffff7ffffffffffdffffffffffe7fffffffefffffffffffd7fffeffedfff7fffffbfeff3f87ffff80c30ffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffe5c1fffedf67ff7ffef35ffffc -3ffffff7fffffffffffffff7fffbff9fffffff77fffffffffffbffff7fdefffbffdffdff7f01f9ffffcfffcffffffffe7fffffffffffffffffea54fffffffffffffffffcfffaf78181fff9bcfffccfbffbffbffdfff7ffdfffbfffffffeffffbffffbffffefffffdff7ffffdffff7fff7ffdffeffefc03e7ff9fffbfff3fffff -fffe7fffffffffffffffffd5a8fffffffffffffffffcfffd3fe7f9ffffc0c301ff7ffb8ffffbffffffbfffbfffbfffeffffbfffbbffffefefffdffbfff7fffffbefffffffff7fe0fcffbffe7fdfffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffe7efbffbfffcfffeffffff77ffffbffffffbfff7fffbf -ffeffff7fffc7ffffdff7ffbffdfff7ffffffdfffffffffbf97ff7ff7ffe73fffbfffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffff3f7f7fc7ffffff9fffffc3fefff7ffdffc0c300cff7fffffffffffff7fffffffbffbffeffeff7ffffbffefffbfff9f9fffff9fff81ffe7fffffffffe7fffffffffffffff -ffea54fffffffffffffffffcffff97bf9ffffefffffffdff0ffeffffffdf9bffff7f303fffffffffffff1fffffffdffffffffdffbffff7fff7ffbffc7feffeffefff3f87dffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffe9dfeffe39fffffffbe6bffdffffffb67fffffffff4fffbfffefffffeffffbff -ffffffffffffdfffe7fffbffdff37fffff3ffdfffffe1ffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffcfffdff81fff9fff59f7ffbffeffe0ffefffffffefc3fbfffdffffffffff7ffffeffffdffffefffdbfffbffefffbffdffdffe73ffff3ffffffffffe7fffffffffffffffffd5a8ffffffffffffff -fffcfffffd1bfe79ff87f7e603feffffffdf997ffdfffdfffffff37fffdffffdfdfff7fff9dffffef7ffffffbdffffffff3fdffeffffff8ffffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffe84ffa7fffe019fdffdffffffd67f7ffdfffdfffffffc3fffdffffdfeffeffffedfffff6fffffff7eff -fffff8ffffff3ffbfe73fffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffff2e030fffff9fffbffffff7fe0ffefffbfffbfffdffff4ffffffffbff3fffffff3fffffaffffdffffffff7fe5fffbfffffce7ff0ff3fffffffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffe7f3ffff -7fff7fffffef997ffffffffffbfffbfffffdfffffffbffffffffffbfffffdffffdffffffffbffe7ffdfff7ff1ffffceffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffdffff3ffbfffffff7ffe67ffffffffffffffffbfffffe3f7ffffffff7dfffff5fffffaffffefdffdfffdf7ffffefffbfce7ff -ff1ffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffff27e7fcfe7fffbffeffe0ffffffbfff7fffffff7fffdffff7ffffffffbbfffff6ffffff7ffff7bffefffecffffff7ffccffefffe7ffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffcbf9ffc5ffff7ffdf99fffdfffbff -efffeffffffffdfff0ffffeffffcbffffef7fffffbfffff7fff7fff3ffeffffffe3fff3ffffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffffe3fffff033fefffb67efffdfff7ffefffeffffffffbfffe7fffefffff7ffffffffffeffffffeffffbffebfff7ffeff9cfffdff7fffffffffffffe7fff -ffffffffffffffd5a8fffffffffffffffffcffffffffb1f9f6ffcc030c0ffefffbfff7ffdfffdfffeffffbffff3fffdffffe9ffffffefffeffffffb7ffffffddfff9fff79ffffff9cffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffffff4060fffff3fff7ffdfff7ffffffffffdfffefffffffffdf -ffdffffeeffffbff7ffdff7fff7bfffffffe7ffffffa7ffcfffe3ffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffbcfe7fffefffefffbffffffffffffffffffdffffffffdfbfffffffdfffffbffbffbffbfff7dffff7efffffffff87fff3ffdfffffffffffffffe7fffffffffffffffffea54ff -fffffffffffffefcfffffffffcfffe7ffffffdffffffffffdfffbfffffffdfffeffffdfcfffffffdfdfff7ffdfffffdffeffffffbdffffffbff79fffffeffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffcfcfffffffffffcff9ff7ffffffffffdfffbfff7fff7fffffffeffffbff7f7ffffffefff7ffffff -ffefffffffffdbffefffcf3ffffff39ffffffffffffffffe7fffffffffffffffffea54fffffffffffffffafcffffffffffcf3ff9cfffefffdfffbfffbfff7fff7fffffffdffffbffef7fffffff3ffffffbefffffffffbfffe7fff3fff4fff9fffc7ffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffefc1fff -fffffff3fffe07ffdfffdfffbfff7f301860ffff7fffdffffffff2fffff7fffffffffddffffff7ffcfffdbfffdfff9fffe7ffbfffffffffffffffffe7fffffffffffffffffea54fffffffffffffe0efc1ffffffffffc33edfe1fbfffbf307f300cfdfffe1fff7ffffffffffffcfffff7fff7dffffedffffdf7fff7ffbcffffff -e67fffffdffffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffefcffffffffffff301ffff80c300cff0cfffffdfffdf87effffffffeffffd3fffeffffbbfffff3ffffeefffffffffffffffffbfffe73ffffffffffffffffffe7fffffffffffffffffea54fffffffffffffffefcffffffffffffff9ffffcfffe -fffefffffffffffdffe03fff7fffdffffddfffdffffcbffffebfffff5fffffffffffff9f7ff7fff8fffffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffefcfffffffffffff3f9fffffffdfffdfffdfffffffffffdd9ff7fffdffffbfbffffffff7fffffcfffff9ffffefdffdfffecfff9fff3ffffffffffff -fffffffe7fffffffffffffffffea54fffffffffffffff83cfffffffffffffcfe7feffffbfffbfffbfff7fffffffdfe66ffffbffffbfcfffffffe7ffffff7ffff67ffff7bffe7fff3fffeffeffffffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffdfe79ffffffffffff7ffeffff7ffff -fff87fffffffffff7fbffffe9ffffbfffffefbffffb7fffbffccffffdf7ffffffffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffe7f03fffdfffffffefffefffeffffffffd9fffffffffffef7fffffeffffbfefffeffffffcfffffffff7fffe4fffffffffffffffffffffe7fffffffffff -ffffffd5a8fffffffffffffffffcfffffffffffffff83fd9ffbfffdfffffffdfffeffff7fffdf9ff7fffeffff37ffffffffff7ff7ffdff7fffb3ffffffffeffff81ffffffffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffff3ffe677fffbfffffffffffdfffeffffffe7effffeffffcff -fffbfdffefffbfffffbfff7dffff3cfff3ffe0007ffffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffff3fff81fff7fffbfffffffffffefffffffe6ffffdffffd3ffff7fe7fffffdfffffdfffffffffdbfffdffdfe001fffffffffffffffffe7fffffffffffffffffea54ffffffffff -fffffffcfffffffffffffffffcfff3f87effff7fff7fffffffdfffeffff8ffffbffffddffff7ffbfffffffefffefffffbfffe3ffffbeffff800ffffffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffc73fffe019fefffeffff7fffffffeffffb3fffffffffffffefffffbffffbefffff -fbffcfff9cffffc9fffffc003ffffffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffff8fffff9fe6033fefffeffffffffdffffff7fffffffff9fffffff77ffffcdffffdf7fff7ff7ffffff7fffffff000fffffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffff -ffffffff3ffff7fffbfcc03ffeffff7fffbffffff8ff7ffff7fe7ffffff97fffff3ffffe6fffffffffcfffcfffffffffc007fffffffffffe7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffff0ffbfffe7fffbf0fc7ffeffffffffeffffeffffefffffbffffefffffecfffff9ffffefbfff3ffbfffff -ffffff001ffffffffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffffce7ffffffff7ffc3b3feffffffffefffc6ffffefffef7fffff3ffffdf7ffff67ffff27fffffdfffffffffffff8007ffffffffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffffff307fffffff -effff7fccdfffeffffdffff8ffffdffff37ffffbdffffbfffffefbffffcfffff33ffffffffffffffe003fffffffe7fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffffffc1fb3fe7fffffffeffff07ffdffffbfffff3ffffffffcfffffbfbfff7fefffdffffff33ffffcfffffffffffffffff800ffffffe -7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffffff07ffccdffffffffdffffbb3fdfffffffffff7ffffffff3ffff7fdffffff3fffff3ffeff7fff9ffffffffffffffffffc003ffffe7fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffffe1fffff0ffff7ffffffff7fcdbffffff -fff7f8ff7ffffbdfffeffe7fffffdfefffcfffff8fff7ffffffffffffffffffff000fffe7fffffffffffffffffea54fffffffffffffffffcffffffffffffffffffff87ffffff67feffffffffefffe1fffeffffeffffefffff7fbffffffffdf9fffdffffff7fffffbffffffffffffffffffffffc007fe7fffffffffffffffffd5 -a8fffffffffffffffffcfffffffffffffffffffe1ffffffff99dffff7fffdffff67ffdffffdfffc6ffffeffcffffffe7be67fbbffffdcffffc67fffffffffffffffffffffffe001e7fffffffffffffffffea54fffffffffffffffffcfffffffffffffffffff87fffffffffe07ffeffffffffefe1fdffffdffff8ffffdfff7f7f -fff979fbfc7ffffe3fffff9ffffffffffffffffffffffffff8007fffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffffe1ffffffffffffe1fdffffffffdfff9bfffffffffb3fffffffef7ffffe67fcff3fffff8ffffe7fffffffffffffffffffffffffffe0ffffffffffffffffffea54fffffffffffffffffc -ffffffffffffffffff87ffffffffffffff80ffff7fffbfffe1fffffffff7fffffffff2ffffff9fff7dcffffe767ffffffffffffffffffffffffffffffff07fffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffffe1fffffffffffffffff67fefffffffff67ffeffffeff3ff7ffffcfffffa7fff93fcfffdff99 -e7ffffffffffffffffffffffffffffc1ffffffffffffffffffea54fffffffffffffffffcfffffffffffffffff87ffffffffffffffffff9bdffffffffefe1feffffdffcfefffffb3ffff1ffffc7ff3feffffe1fffffffffffffffffffffffffffff87ffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffffe1ff -ffffffffffffffffffc0fffeffffdfff9dfffffffffdfffff7f7ffe7ffff39fff39ffffcfffffffffffffffffffffffffffffe1fffffffffffffffffffea54fffffffffffffffffcffffffffffffffff87ffffffffffffffffffffff67fdffffffffe1ffffffffc9ffffeff8ff9ffffcfe7ffc0fffffffffffffffffffffffff -fffffffff87fffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffffe0ffffffffffffffffffffffff99bfffffffff67fff7ffff27fffffffde67ffe3ff9ffbfc3fcfffffffffffffffffffffffffffffe1ffffffffffffffffffffea54fffffffffffffffffcfffffffffffffff83fffffffffffffffffffffff -ffe1fffeffffcfe7feffffefe7ff7fffe1f9ff9fffe1e7fff03fffffffffffffffffffffffffffff87ffffffffffffffffffffd5a8fffffffffffffffffcffffffffffffffe0fffffffffffffffffffffffffffecffdfffffff9fdfffffff9feffffcffe7e7fff1e1fffdbfffffffffffffffffffffffffffffe1fffffffffff -ffffffffffea54fffffffffffffffffcffffffffffffff83fffffffffffffffffffffffffffff33bffffffff99ffffffff8dfffe3fff99fffcffe0003ffffffffffffffffffffffffffffff87fffffffffffffffffffffd5a8fffffffffffffffffcfffffffffffffe0fffffffffffffffffffffffffffffffc1fffcffffe67f -ff7ffff3fff9ffffc7ffe3fc1fffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffea54fffffffffffffffffcfffffffffffff83ffffffffffffffffffffffffffffffffecffbffffdfe1fefffff07f87fffe33ff1f83ffffffffffffffffffffffffffffffffff87ffffffffffffffffffffffd5a8ffffff -fffffffffffcfffffffffffff0fffffffffffffffffffffffffffffffffff331ffffffff9dffffefe079fff1fc3cc07ffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffea54fffffffffffffffffcffffffffffffc3ffffffffffffffffffffffffffffffffffffcecffeffffe07fff7f87fe7f8fff80 -3ffffffffffffffffffffffffffffffffffff83fffffffffffffffffffffffd5a8fffffffffffffffffcffffffffffff0ffffffffffffffffffffffffffffffffffffffff339ffff8fe1fcf87fff9c7f801fffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffea54fffffffffffffffffcffffffff -fffc3fffffffffffffffffffffffffffffffffffffffffc0fff9ffff8a00fff000007f9fffffffffffffffffffffffffffffffffffff83ffffffffffffffffffffffffd5a8fffffffffffffffffcfffffffffff0ffffffffffffffffffffffffffffffffffffffffffffc3e1861e0000000fffffff9fffffffffffffffffffff -fffffffffffffffe0fffffffffffffffffffffffffea54fffffffffffffffffcffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffff0fffe0ffffffffffffff9ffffffffffffffffffffffffffffffffffff83fffffffffffffffffffffffffd5a8fffffffffffffffffcffffffffff0fffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffea54fffffffffffffffffcfffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffffc3ffff -ffffffffffffffffffffffd5a8fffffffffffffffffcfffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffea54fffffffffffffffffcffffffffc3ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffd5a8fffffffffffffffffcffffffff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffff -ffea54fffffffffffffffffcfffffffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff9fffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffea54fffffffffffffffffcffffffc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffd5a8ffffffffffffff -fffcffffff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffea54fffffffffffffffffcfffffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffff -ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffea54fffffffffffffffffcffffe1ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffc1fffffffffffffffffffffffffffffffd5a8fffffffffffffffffcffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff -f07fffffffffffffffffffffffffffffffea54fffffffffffffffffcfffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcfff87fffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff07ffffffffffffffffffffffffffffffffea54fffffffffffffffffcffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffc1fffffffffffffffffff -ffffffffffffffd5a8fffffffffffffffffcff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffff07fffffffffffffffffffffffffffffffffea54fffffffffffffffffcfe1fffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff9fffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffcf87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffea54ff -fffffffffffffffce1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffc83ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff9ffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffea54fffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffe07ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffea54fffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffff -fffffffe1fffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffe001ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffff87ffffffffffff -ffffffffffffffffffffffffffea54fffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffe0fffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff9ffffffffffffffffffffff83fffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffe0ffffffffffffffffffffffffffffffffff -ffffffd5a8ffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff9ffffffffffffffffffffe0fffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffffffea54ffffffffff -ffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffff001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffff -ffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffff -ffffffe001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffff0ffffff -ffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffff8007fffff -ffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffc3fffffffffffffffffffffffffff -ffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffff -ffffffffffffffffffffffffff9fffffffffffffffc1ffffffffffffffffffffffffbbffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffff07ffffffffffffffffffffffffd7ffffffffffffffffffffd5 -a8ffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffc1fffffffffffffffffffffffffefffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffff -ffffff9ffffffffffffff07fffffffffffffffffffffffffefffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffffffffffffffffffffffffffff9fffffffffffffc1ffffffffffffffffffffffffffd7ffffffffffffffffffffea54ffffffffffffffffff -ffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffff9fffffffffffff07ffffffffffffffffffffffffffbbffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffff9ffffffffffffe -1fffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffff9ffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff8007fffffffffffffffffffffffffffffffffff9fffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffff9fffffffffff87ffffffffffffffffffff -ffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800fffffffffffffffffffffffffffffffff9ffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffc003fffffffffffffffffffffffffffffff9ffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffff9fffffffffe1ffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffff9fffffffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000fffffffff -ffffffffffffffffff9ffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffff9ffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffffffffffff9fffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffff9f -ffffff83ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffff9ffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffffffff9ffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffff9fffffe0ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffff9fffff83ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffe003fffffffffffffff9fffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff9ffffc3fffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffff9ffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000fffffffffff9fffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffff9fff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffff9ffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -c007ffffff9ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffff77ffffffffffffffffffffffffffffffffffffffffe001fffff9fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffff -fffffffffffffffffffffffffffffff77ffffffffffffffffffffffffffffffffffffffffff8007fff9f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffff77fffffffffffffffffffffffffffffffffffffffffffe001ff9c3fffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffff67fffffffffffffffffffffffffffffffffffffffffffff8007907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffff -fffffffffff97ffffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffff77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffffffffffffffffffffffffffffffffffff8ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5aaaaaa6aaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r37/packages/plot/gnuplotex3.ps Index: r37/packages/plot/gnuplotex3.ps ================================================================== --- r37/packages/plot/gnuplotex3.ps +++ /dev/null @@ -1,359 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps3 -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:85 95 527 696 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -128 93 translate -%% 90 rotate -%%605 444 scale -302 222 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 157 115 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 82 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 652 def -/nscans 479 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa0555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -555555555555555555555555555555555555555555555555555555555555555555555550aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa6555554d5555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555550aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa0555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555551a800008000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000a153ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff51aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6aaa9a1535554d55555555555555555555555555555555555555555555555555555 -55555555555557fffffffffff5555555555555555555555555555555555555555555555555555555555555555555555555555551aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -9aaaa6aaa9a1535554d555555555555555555555555555555555555555555555555555555555555555555783fffff9ff355555555555555555555555555555555555555555555555555555555555555555555555557ff551aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab39ffff -f9ff3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a1535554d55555555555555555555555555555555555555555555555555555555555555555567f2664998615555555555555555555555555555555555555555555555555555555555555555555555555555551aabffaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa7f126449333aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9abea6ea89a1537544d5555555555555555555555555555555555555555555555555555555555555555556613264c9333555555555555555 -5555555555555555555555555555555555555555555555555555557155555551aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa793264c9333aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a1536004d555555555555555555555 -5555555555555555555555555555555555555555555556793264c93335555555555555555555555555555555555555555555555555555555555555555555556155555551aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab39324449332aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6ea89a0535554d5555555555555555555555555555555555555555555555555555555555555555557853324998795555555555555555555555555555555555555555555555555555555555555555555555555555550aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaabfffffcfffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6c009a0535554d5555555555555555555555555555555555555555555555555555555555555555557fffffcfffff5555555555555555555555555555555555555555555555555555555 -555555555555555555555550aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffcfffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaa6aaa9a052000080000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000001000040001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0100fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50 -a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff9fbfffffbfffffffff3ffffbfffbff9ffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfb7ffffbfffffffffbff7fb7ffbefbffffffffffff -ffa051fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f77ffff7fffffffffbff7fb7ffbab7ffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff61961f71c69c7f87bc61c21c7b83fffffffffffffffa651ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef7aaeeeeba6bbfbbbbb7bb7fbbc7fff00001fffffff56a9ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7aaedefbaecffbbbbb7bb7c3b83fffffffffffffffac51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffdf7aaedefbaef7fbbbbb7bb7bbbabfffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6aa1beebaebbb87bbb6bb6bbfeffffffffffffffffa651ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9bafbf1c6ec71bf1c79c39c3bfffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff -ffffbbffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffbffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffa151fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffdbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefbfffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f7f -dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffbfffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3effbfefffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffff8ffffbfefffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3ffffbfefffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff7fffefffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff7bff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff7fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50 -a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff7fdfefffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffc7fdffffdfefffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffff7fdffffdff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffff -ffffffffffffffffffffffbe1ffffffffffffffffffffffffffffffffffffffffffffffffef7fdff7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffffffffffffffff9fffdffbfffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffb67fffffffffffffffffffffffffffffffffffffffffffe7ffffffbfdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffff -ffbfffbf9bffffffffffffffffffffffffffffffffffffffffff8ffbffffbfdff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffbffffffc0fffffffffffffffffffffffffffffffffffffffffeffbfeffffeff7ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffbfffffff7c3ffffffffffffffffffffffffffffffffffffffdeffbfeffffeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffbfffbfff7ff03fffff -fffffffffffffffffffffffffffffff3fffbfeffbffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffbfffffff4fffffffffffffffffffffffffffffffffff8ffffffeffbfffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffa851ffffffffffffffffffffffffffffffffffffffffffff7fffffff7c3fffffffffffffffffffffffffffffffff5ff7ffffffbfefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffff7fff7fff7ffffff3ffffffffffffffffffffff -fffffffffbdff7fdffffbfeffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffff7fffffff7ffffffc0fffffffffffffffffffffffffffffe7dff7fdfeffffeffbffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffff -ffffffffffffffffffffffffffffffffff7fffffff7fff7ffffc3fffffffffffffffffffffffffff9ffff7fdff7fffeffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffe0ffffffffffffffffffffff7fff7ffeffff7ffffff03ffffffffffffffffffffffffe3ffffffdff7f -dffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9fffffffffffffffffdffffffffffffffffffffffffff7fffffff7fff7ffed9ffffffffffffffffffffffffbfefffffff7fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffbffffffff -ffffffffffffffffff7ffffffeffff7ffffe667ffffffffffffffffffff7bfeffbffffffdff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff7ffffffffffffffffffffff7fff7ffeffffffff7ffffff89fffffffffffffffffffcfffeffbfdffffdff7fdffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffefffffffffffffffffffffff7ffffffeffffffff7ffefffef87fffffffffffffffff3fffeffbfdff7ffff7fdffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffe0ffffffffffffffffffffff7fffff -fefffefffffffeffffffe7fffffffffffffffc7fdffffbfeff7ffff7fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffff7fff7ffefffefffffffefffffff81fffffffffffffff7fdffffffeff7feffffdffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffff7ffffffefffefffdfffefffef87fffffffffffef7fdfefffffffbfefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffff7ffffffefffefffffffeff -feffe01fffffffff9fffdff7fbffffffeffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffefffefffefffffffefffffffefffefffef87ffffffc7ffffff7fbfeffffeffbfdffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffa051fffffffffffffffffffffffffffffffffffffffefffffffefffffffefffdfffdfffffffeffe03ffff2ffbffff7fdfeffbffffbfdffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9fffffffffffffffffffffffffffffffffffffffefffffffefffefffffffdfffffffffffefffff0ff3f7fbf -effffdfeffbffffbfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851fffffffffffffffffffffffffffffffffffffffefffefffefffefffffffdfffffffdfffdffffffc0ff7fbfeffffffeffbfeffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffff -fffffffffffffffffffffffffffffefffffffefffefffdfffdfffdfffffffdfff33fffbfeff7ffffffbfefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffefffffffefffefffffffdfffdfffffffbffeff0ffffeff7fdffffffeffbffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffefffefffdfffffffefffffffdfffdfffdfffbffffff8ffffff7fdff7ffff7fbfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffff -fffffefffffffdfffffffefffdfffdfffffffdfffbff7ffff01ffffbfdff7fdffffdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffefffffffdfffdfffffffdfffffffffffdfffffcfffffdd0f7fffdff7fdffffdfeffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffefffefffdfffdfffffffdfffffffdfffdfffff3fffffdffc3ffffff7fdff7fffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffefffffffdff -fefffdfffdfffdfffffffbcbfffffbfff87bffffffdff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffefffffffdfffdfffffffdfffdfffffff7fdfffffbfffbe1fefffffff7fdffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffefffefffdfffffffdfffffffdfffdfffbfff4fdfffffffffbff80ffbffff7fdff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffefffffffdfffffffdfffbfffdfffffffbff -f3fffffffffffbfffb67bfeffffdff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffdfffffffdfffdfffffffbfffffffffffbffc7fffffffbfffbfffbf99feffffdff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ff -fffffffffffffffffffffffffffffffffffffdfffdfffdfffdfffffffbfffffffbfffbffb7fefffff7ffffffffffa0effbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffdfffffffdfffdfffbfffbfffbfffffffbfefffff7ffffffffff -fb67fbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffdfffffffdfffdfffffffbfffbfffffdffff7ffff7fff7fffbfffbf9bbfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffff -fffffffffffffffffdfffdfffdfffffffdfffffffbfffbfff7f3ffff7ffffffff7fffbfffbffc07effbfffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffdff07ffffffffffffffffffffffdfffffffbfffffffdfffbfffbfffffff7cffbfffffffffff7fff7ffffffffe0ffbfffffffff -ffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffaff7fffffffffffffffffffffffdfffffffbfffdfffffffbfffffffffff72ffbffffffeffff7fff7ffffffffff81bfffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffff77f7fffffffffffffffffffffffdff -fdfffbfffbfffffffbfffffffbfff7effbffbfffeffffffffffffbfffbfff68fffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffff77f4fc3ffffffffffffffffffffffffdfffffffbfffdfffbfffbfffbfff3effdffdfffeffffffffffff7fffbfff7f33fffffffffffffffffffffffffff -ffffffffffffffffffffffffffa051ffffffffffff77f3783ffffffffffffffffffffffffdfffffffbfffdfffffffbfffbffcfffffffdfffeffff7fff7fff7fffbffffffc1ffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffff77ff79fffffffffffffffffffffdfffdfffbfffffffdffffff -fbfffbff1fffffffdffffffff7fff7fff7fffbfffffff6cfffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffff77ff79fffffffffffffffffffffdfffffffbfffffffbfffbfffbfffffedff7fdfffffffffff7fff7fffffffffff7fff7f33fffffffffffffffffffffffffffffffffffffffffff -ffffff50a9ffffffffffffaf7779fffffffffffffffffffffdfffffffbfffbfffffff7fffffffff7dff7fdffffffdfffeffff7fffffffffff7ffffffc1ffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffde38f9fffffffffffffffffffffdfffbfffbfffbfffffff7fffffff7cffff7fdffefff -dffffffffffff7fff7fff7fffffff6cfffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffff7ff9fffffffffffffffffffffffffbfffffffbfffbfff7fffbfff7bffff7fefff7ffdffffffffffff7fff7ffeffff7fffff33fffffffffffffffffffffffffffffffffffffffffffffa051ffffffffff -fffffff9fffffffffffffffffffffffffbfffffffbfffbfffffffbfff63feffffffff7ffdfffeffff7fff7fff7fffffff7ffffffc3ffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff9fffffffffffffffffffffbfffbfffbfffffffbfffffff7fff5bfeffffffff7ffffffeffff7fff7fff7ff -fffff7fff7ffed9fffffffffffffffffffffffffffffffffffffffffffa051fffffffffff7ffb079fffffffffffffffffffffbfffffffbfffffffbfff7fff7ffefbfeffbfeffffffffffeffff7ffffffffffefffeffff7ffffe67fffffffffffffffffffffffffffffffffffffffff50a9ffffffffffebffb7f9ffffffffffff -fffffffffbfffffffbfffbfffffff7ffffff9fffeffbfeffffffbfffefffefffffffffffeffffffff7ffffff8fffffffffffffffffffffffffffffffffffffffffa051ffffffffffddff37f9fffffffffffffffffffffbfffbfff7fffbfffffff7fffffe7ffffffbfefffdffbffffffffffff7fff7ffeffffffff7ffefffefff -ffffffffffffffffffffffffffffffffffffff50a9ffffffffffddfeb4f83ffffffffffffffffffffffffbfffffffbfffbfff7fff7f97fdffffbff7ffdffbffffffffffff7fff7ffefffefffffffefffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffddfeb3783ffffffffffffffffffffffffbffffff -f7fffbfffffff7ff7fdfeffffffffdffbfffefffeffff7fff7ffffffefffffffeffff7ffffffffffffffffffffffffffffffffffffffff56a9ffffffffffddfdbf79fffffffffffffffffffffbfffbfff7fffffffbfffffff79f7fdff7fffffffeffffffefffefffeffff7ffffffefffefffefffe7ffffffffffffffffffffff -ffffffffffffffffffa651ffffffffffddfc1f79fffffffffffffffffffffbfffffff7fffffffbfff7fff47fffdff7fdff7fffffffffdfffefffffffffffefffefffefffffffe7ffffffffffffffffffffffffffffffffffffffff5ca9ffffffffffebdfb779fffffffffffffffffffffbfffffff7fff7fffffff7fff2ffffff -f7fdff7fffff7fffdfffefffffffffffefffffffefffffffe7ffffffffffffffffffffffffffffffffffffffffa651fffffffffff78fb8f9fffffffffffffffffffffbfff7fff7fff7fffffff7fffeffbffffffdff7fff7f7fffffffffffeffff7ffefffffffefffdfffe7ffffffffffffffffffffffffffffffffffffffff56 -a9ffffffffffffdffff9fffffffffffffffffffffffff7fffffff7fff7ffefff3effbfdffffdffbfff7f7fffffffffffefffefffefffefffffffdffff7ffffffffffffffffffffffffffffffffffffffffa651fffffffffffffffff9fffffffffffffffffffffffff7fffffff7fff7fffff8ffffbfeff7ffffffff7effffdfff -efffefffefffffffefffffffdffff7ffffffffffffffffffffffffffffffffffffffff5aa9fffffffffffffffff9fffffffffffffffffffff7fff7fff7fffffff7ffffe3ffffbfeff7ffffffffbfffffdfffefffefffefffffffefffefffdfffd7ffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffff9 -fffffffffffffffffffff7fffffff7fffffff7ffeffbff7fffeff7fdffbfffffffffdfffefffffffffffdfffefffefffffffdbffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffdffef9fffffffffffffffffffff7fffffff7fff7ffffffef7bff7ffffffbfeffbffffeffffdfffefffffffffffdfffffff -efffffffdbffffffffffffffffffffffffffffffffffffffffa651ffffffffffffaffef9fffffffffffffffffffff7fff7fff7fff7ffffffecffff7fbffffffeffdfffdeffffffffffffefffefffdfffffffefffdfffdbffffffffffffffffffffffffffffffffffffffff50a9ffffffffffff77fcf9ffffffffffffffffffff -fffff7fffffff7fff7ffe3ffff7fdfeffffeffdfffddffffffffffffefffefffdfffdfffffffdffffbffffffffffffffffffffffffffffffffffffffffa051ffffffffffff77faf83ffffffffffffffffffffffff7fffffff7fff7ffc7fdffffdfeffbffffffffedffffbfffdfffefffefffffffdfffffffdffffbffffffffff -ffffffffffffffffffffffffffffff51a9ffffffffffff77faf83ffffffffffffffffffff7fff7ffeffffffff7ffb7fdffffdfeffbffffffffefffffbfffdfffefffefffffffdfffdfffdfffdbffffffffffffffffffffffffffffffffffffffffa151ffffffffffff77f6f9fffffffffffffffffffff7ffffffeffffffff7fd -f7fdff7ffff7fbfeffdfffffffffbfffdfffffffffffdfffdfffdfffffffdbffffffffffffffffffffffffffffffffffffffff51a9ffffffffffff77f079fffffffffffffffffffff7ffffffefffeffffff3fffdffbffffffbfeffdffffdffffbfffdfffffffffffdfffffffdfffffffdbffffffffffffffffffffffffffffff -ffffffffffa151ffffffffffffaf7ef9fffffffffffffffffffff7ffefffefffefffffefffffffbfdfffffff7feffff3ffffffffffffdfffefffdfffffffdfffbfffdbffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffde3ef9ffffffffffffffffffffffffefffffffeffff7effbffffbfdff7ffff7fef -fff3ffffffffffffdfffefffdfffdfffffffbffffbffffffffffffffffffffffffffffffffffffffffa151ffffffffffffff7ff9ffffffffffffffffffffffffefffffffefffefeffbfeffffdff7fdfffffffffbffffbfffdfffdfffefffffffdfffffffbffffbffffffffffffffffffffffffffffffffffffffff51a9ffffff -fffffffffff9fffffffffffffffffffff7ffefffefffffffefeffbfeffffeff7fdfffffffffbffffbfffdfffdfffdfffffffdfffdfffbfffbbffffffffffffffffffffffffffffffffffffffffa151fffffffffffffffff9fffffffffffffffffffff7ffffffefffffffefeffbfeffbffff7fdff7feffffbffffbfffdfffffff -ffffdfffdfffdfffffffbbffffffffffffffffffffffffffffffffffffffff51a9fffffffffff7fc1079ffffffffffffffffffffefffffffefffefffffeffffeffbffffffdff7feffffbffffbfffdfffffffffffbfffffffdfffffffbbffffffffffffffffffffffffffffffffffffffffa151ffffffffffebffd7f9ffffffff -ffffffffffffefffefffefffefffffd7ffffffbfefffffff7ff7fff5ffffffffffffdfffdfffbfffffffdfffbfffbdffffffffffffffffffffffffffffffffffffffff51a9ffffffffffddffb7f9ffffffffffffffffffffffffefffffffefffefd7fdffffdfeffbffffbff7fffdffffffffffffdfffdfffbfffdfffffffbfff -fdffffffffffffffffffffffffffffffffffffffffa151ffffffffffddff74f83fffffffffffffffffffffffefffffffefffefd7fdfeffffeffbfdffffffffffffff7fffbfffdfffdfffffffbfffffffbffffdffffffffffffffffffffffffffffffffffffffff51a9ffffffffffddfe33783fffffffffffffffffffefffefff -efffffffefd7fdfeffffeffbfefffffffff7ffff7fffbfffdfffdfffffffbfffdfffbfffbdffffffffffffffffffffffffffffffffffffffffa051ffffffffffddffdf79ffffffffffffffffffffefffffffefffffffefdffdff7fdffffbfeffbff7fff6ffff7fffbfffffffffffbfffbfffdfffffffbdffffffffffffffffff -ffffffffffffffffffffff50a9ffffffffffddffdf79ffffffffffffffffffffefffffffdfffefffffdfffff7fdffffffeffbff7fff6ffff7fffbfffffffffffbfffffffbfffffffbdffffffffffffffffffffffffffffffffffffffffa051ffffffffffebddd779ffffffffffffffffffffefffefffdfffefffffdbffffffdf -f7ffffffbffbffeeffffffffffffbfffdfffbfffffffbfffbfffbdffffffffffffffffffffffffffffffffffffffff50a9fffffffffff78e38f9ffffffffffffffffffffffffdfffffffdfffefdbfdffffdff7fbffffbffbffff7fffffffffffbfffdfffbfffbfffffffbffffdffffffffffffffffffffffffffffffffffffff -ffa051ffffffffffffdffff9ffffffffffffffffffffffffdfffffffdfffefbbfdff7ffff7fbfeffffffffffffff7fffbfffbfffdfffffffbfffffff7ffffdffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffffefffdfffdfffffffefbbfeff7ffff7fdfeffffffffefffff -7fffbfffbfffdfffffffbfffbfff7fffbdffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffffefffffffdfffffffdfbffeff7feffffdfeffdffbffefbfff7fffbfffffffffffbfffbfffbfffffffbdffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffff -fff9ffffffffffffffffffffefffffffdfffdfffffbfffff7fefffffff7fdffbffefbffeffffbfffffffffffbfffffffbfffffff7dffffffffffffffffffffffffffffffffffffffffa051ffffffffffffdff079ffffffffffffffffffffefffdfffdfffdfffffbbffffffeff7ffffffdffdffdfbfffffffffffbfffbfffbfff -ffffbfff7fff7dffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffafff79ffffffffffffffffffffffffdfffffffdfffdfbbfeffffeff7fdffffdffdffffdfffffffffffbfffbfff7fffbfffffff7ffffdffffffffffffffffffffffffffffffffffffffffa051ffffffffffff77fef9ffffffffffffffff -ffffffffdfffffffdfffdfbdfeffbffffbfdff7ffffffffffffeffff7fffbfffbfffffffbfffffff7ffffeffffffffffffffffffffffffffffffffffffffff50a9ffffffffffff77fdf83fffffffffffffffffffdfffdfffdfffffffdf7dfeffbffffbfdff7fffffffdffffeffff7fffbfffbfffffffbfffbfff7fff7effffff -ffffffffffffffffffffffffffffffffffa051ffffffffffff77f8f83fffffffffffffffffffdfffffffdfffffffdf7ffeffbfeffffdff7feffdffdfeffeffff7fffffffffff7fff7fffbfffffff7effffffffffffffffffffffffffffffffffffffff50a9ffffffffffff77ff79ffffffffffffffffffffdfffffffdfffdfff -ff7fffffbfefffffff7feffdffbfeffeffff7fffffffffff7fffffffbfffffff7effffffffffffffffffffffffffffffffffffffffa051ffffffffffff77ff79ffffffffffffffffffffdfffdfffdfffdfffff7dfffffff7fbffffffeffeffbfefffffffffffbfffbfff7fffffffbfff7fff7effffffffffffffffffffffffff -ffffffffffffff58a9ffffffffffffaf7779ffffffffffffffffffffffffdfffffffdfffdf7dff7ffff7fbfeffffeffeffffefffffffffffbfffbfff7fff7fffffff7ffffeffffffffffffffffffffffffffffffffffffffffa051ffffffffffffde38f9ffffffffffffffffffffffffbfffffffdfffdf7dff7fdffffbfeffbf -fffffffffffeffff7fff7fffbfffffff7fffffff7ffffeffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffff7ff9ffffffffffffffffffffdfffbfffbfffffffdf7dff7fdffffbfeffbfffffffbffffdffff7fff7fffbfffffff7fff7fff7fff7effffffffffffffffffffffffffffffffffffffffa051ff -fffffffffffffff9ffffffffffffffffffffdfffffffbfffffffdeffff7fdff7fffeffbfeffeffbff7fdffff7fffffffffff7fff7fff7fffffff7effffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffffdfffffffbfffbffffeffffffdff7ffffffbff7ff7f7ffbfdffff7fff -ffffffff7fffffff7fffffff7effffffffffffffffffffffffffffffffffffffffa051fffffffffff7fe3079ffffffffffffffffffffdfffbfffbfffbffffefefffffff7fdfffffff7ff7f7ffbffffffffff7fffbfff7fffffff7ffeffff7effffffffffffffffffffffffffffffffffffffff58a9ffffffffffebfdd7f9ffff -ffffffffffffffffffffbfffffffbfffbefeffbffff7fdff7ffff7ff7ffffbffffffffff7fff7fff7fff7ffffffefffffeffffffffffffffffffffffffffffffffffffffffa051ffffffffffddfdd7f9ffffffffffffffffffffffffbfffffffbfffbefeffbfdffffdff7fbffffffffffffdfffeffff7fff7fffffff7ffffffe -fffffeffffffffffffffffffffffffffffffffffffffff58a9ffffffffffddffd4f83fffffffffffffffffffbfffbfffbfffffffbefeffbfdffffdff7fdfffffff7ffffdfffeffff7fff7fffffff7fff7ffefffefeffffffffffffffffffffffffffffffffffffffffa851ffffffffffddffb3783fffffffffffffffffffbfff -ffffbfffffffbeffffbfeffbffff7fdff7ff7f7ffdfdfffefffffffffffeffff7fff7ffffffefeffffffffffffffffffffffffffffffffffffffff50a9ffffffffffddff7f79ffffffffffffffffffffbfffffffbfffbffffefeffffeffbffffffdff7ffbefffdfdfffefffffffffffeffffffff7ffffffeff7fffffffffffff -ffffffffffffffffffffffffffa851ffffffffffddfeff79ffffffffffffffffffffbfffbfffbfffbffffdfe7ffffffbfefffffffbffbefffeffffffffff7fff7ffeffffffff7ffefffeff7fffffffffffffffffffffffffffffffffffffff50a9ffffffffffebddf779ffffffffffffffffffffffffbfffffffbfffbdfe7fbf -fffbfeff7ffffbffbffffeffffffffff7fff7ffefffefffffffeffffff7fffffffffffffffffffffffffffffffffffffffa851fffffffffff78c18f9ffffffffffffffffffffffff7fffffffbfffbdfe7fbfeffffeff7fdffffffffffffbfffeffff7fff7ffffffefffffffeffffff7fffffffffffffffffffffffffffffffff -ffffff50a9ffffffffffffdffff9ffffffffffffffffffffbfff7fff7fffffffbdfe7fdfeffffeffbfdffffffefffffbfffeffff7fff7ffffffefffefffefffeff7fffffffffffffffffffffffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffffbfffffff7fffffffbdfdffdfeffbffffbfdffbffbdff -ff7bfffefffffffffffefffefffefffffffeff7fffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffffbfffffff7fff7ffffdfdffffeffdffffffeffbffddffff7bfffefffffffffffefffffffefffffffeff7fffffffffffffffffffffffffffffffffffffffa051ffffffffff -ffdff8f9ffffffffffffffffffffbfff7fff7fff7ffffdfd7ffffffdfefffffffbffddffffbffffffffeffff7ffefffffffefffdfffeff0fffffffffffffffffffffffffffffffffffffff50a9ffffffffffffaff779ffffffffffffffffffffffff7fffffff7fffbbfd7fdffffdfeffbffffdffdfffffbffffffffeffff7ffe -fffefffffffdffffff7c3fffffffffffffffffffffffffffffffffffffa851ffffffffffff77f779ffffffffffffffffffffffff7fffffff7fff7bfdbfdff7ffff7fbfeffffffffffffbfffefffeffff7ffffffefffffffdffffff7fd9ffffffffffffffffffffffffffffffffffff50a9ffffffffffff77ff783fffffffffff -ffffffffbfff7fff7fffffff7bfdbfdff7ffff7fbfeffffffdfffffbfffdfffefffefffffffefffefffdfffdff77fe67ffffffffffffffffffffffffffffffffffa051ffffffffffff77fef83fffffffffffffffffffbfffffff7fffffff7bfdffdff7fdffffbfeffdffdbffffdbfffdfffffffffffefffefffefffffffdff4f -fff83fffffffffffffffffffffffffffffffff50a9ffffffffffff77fdf9ffffffffffffffffffff7fffffff7fff7ffffbfdfffff7fdffffffeffdffebffffdbfffdfffffffffffefffffffefffffffdff3ffffbd9ffffffffffffffffffffffffffffffffa851ffffffffffff77fbf9ffffffffffffffffffff7fff7fff7fff -7ffffbfbbffffffdff7ffffffdffebffffdffffffffefffefffdfffffffefffdfffdff0fffdffe67ffffffffffffffffffffffffffffff58a9ffffffffffffaf77f9ffffffffffffffffffffffff7fffffff7fff7bfbbfeffffeff7fdffffdffefffffeffffffffefffefffdfffefffffffdffffffb6ff3ffff81fffffffffff -ffffffffffffffffffa051ffffffffffffde3079ffffffffffffffffffffffff7fffffff7fff77fbbfeffbffff7fdff7fffffffffff7fffdfffefffefffffffefffffffdffffffbf1efffff3f87fffffffffffffffffffffffffff50a9ffffffffffffff7ff9ffffffffffffffffffff7ffeffff7fffffff77fbbfeffbffff7f -dff7fffffbfffff7fffdfffefffefffffffdfffefffdfffdffbff83fffffffe03fffffffffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffff7fffffff7fffffff77fbffeffbfeffffdff7feffe7fffff7fffdfffffffffffdfffdfffefffffffdffbfe7f0ff3ffff9d9ffffffffffffffffffffffff58 -a9fffffffffffffffff9ffffffffffffffffffff7ffffffeffff7ffff7fbfffffbfefffffff7fefff7fffff7fffdfffffffffffdfffffffdfffffffdffbfffffc07ffff7fe6fffffffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffff1ffefffeffff7ffff7fbdffffffeffbffffffefff7fffff3ffff -fffdfffefffdfffffffdfffdfffdffbe7ffff3b3ffbffff07fffffffffffffffffffff50a9fffffffffff7ff7079fffffffffffffffffffcecfefffffffeffff77fbdff7fffeffbfdffffefff7fffff3fffffffdfffefffdfffdfffffffdffffff80ffffeffcde7ffff7b3ffffffffffffffffffffa051ffffffffffebfe77f9 -fffffffffffffffffffbff32fffffffeffff77f7dff7fbffffbfeff7fffff7ffffedfffdfffdfffefffffffdfffffffbffffff8f67ff7fffe0ffffbffccfffffffffffffffffff50a9ffffffffffddfd77f9ffffffffffffffffffdffffc3ffeffffffff77f7dff7fdffffbfeffbfffff7ffffeffffdfffdfffefffffffdfffd -fffbfffdffbff9bcffffef67fe7ffff1ffffffffffffffffffa051ffffffffffddff74f83fffffffffffffffff3ffffbd9fefffffffeeff7fff7fdff7fffeffbff7ffbfffffffffbfffffffffffdfffdfffdfffffffdffbfffc0ffff7ff9bdffffe1ffffffffffffffffff50a9ffffffffffddff73783ffffffffffffffffc1f -ffdffe66fffeffffeff7fffffdff7ffffffbff7febffffff7ffbfffffffffffdfffffffdfffffffbffbfffcf67fcffffc07ffff9ffffffffffffffffffa051ffffffffffddff7f79fffffffffffffffff3f87f3ffff81ffeffffeff7efffffff7fbfffffff7fdfffffdfbffffffdfffdfffdfffffffdfffbfffbffbffffff9bb -ffffefe1fe79ffffffffffffffffff50a9ffffffffffddff7f79ffffffffffffffffffffe07ffff7f87efffeeff7eff7ffff7fdfefffff7fdfffffdfdffffffdfffdfffdfffdfffffffbffffff87fcffffc0ffff7fff81f9ffffffffffffffffffa051ffffffffffebdf7779ffffffffffffffff3ffff3b3ffbfffe01ffeeff7 -effbfdffffdfeffbffffbeffffdfdffbfffdfffdfffffffdfffffffbffffffbb73ffffdfc3fcffffe7f9ffffffffffffffffff50a9fffffffffff78c18f9fffffffffffffff8fffffffcce7ffff9f87eeff7effbfdffffdfeffbfffffeffffdffffbfffdfffdfffffffdfffdfffbfffbffbf80fffeffff01ffffdff9ffffffff -ffffffffffa051ffffffffffffdffff9ffffffffffffffe767ffbffff07ffff7ffe06feffffbfdff7ffff7fbffbfff7ffffffffbfffffffffffbfffdfffdfffffffbffdf9fc3f9ffffcecffefff9ffffffffffffffffff50a9fffffffffffffffff9fffffffffffffffff99e7ffff3b3ffbffff39feffffffeff7ffffffdffbf -7f7ffffff7fbfffffffffffbfffffffdfffffffbffdfffff03fffffff339fff9ffffffffffffffffffa051fffffffffffffffff9ffffffffffffff7fffe0ffffeffcde7fffffdfefefffffffbfdfffffffbf7fffffbffbfffffdfffdfffbfffffffdfffbfffbffd9ffff9d9ffeffffc7fff9ffffffffffffffffff50a9ffffff -ffffffdffdf9fffffffffffffcffffe767ff7fffe07fffbfdfeff7fbffffbfdff7ffffbf7fffff7ffdfffffbfffdfffbfffbfffffffbffffffc3ffffffe679ffffcffff9ffffffffffffffffffa051ffffffffffffaff9f9fffffffffffff1fffffff9bcffffe7b3fe7fdfeff7fbfeffffdff7fdfffeffdfff7ffdfbfffbfffd -fffffffbfffffffbffffffdd9ffdffff83ffffbffff9ffffffffffffffffff50a9ffffffffffff77f5f9ffffffffffffcecfff7fffc0fffffffcddffdfefe7fbfeffffeff7fdffffffdfff7ffffbfffbfffdfffffffbfffbfffbfffbffdfe6f3ffff3d9ffdfffff9ffffffffffffffffffa051ffffffffffff77fdf83fffffff -fffffff37cffffcf67fe7fffe07fdfefeffdfeffbffff7fdffbfffeffffffffbfffffffffffbfffbfffbfffffffbffdfff07ffffffe673fffff9ffffffffffffffffff50a9ffffffffffff77fdf83ffffffffffeffff81fffffff9b9ffffe7b1dfefeffffeffbffffffdffddffefffffffb7fffffffffffbfffffffbfffffffb -ffdfff7b3ff3ffff8ffffff9ffffffffffffffffffa051ffffffffffff77fdf9fffffffffff9ffffdecffcffffc07ffffffedfdfe7ffffffbfefffffffddfffffeffffbffffbfffdfffbfffffffbfff7fffbffdffbffcdcfffff3ffffff9ffffffffffffffffff50a9ffffffffffff77fdf9ffffffffffc1fffefff333ffffcf -e1fe7fffbfdfe7fdffffbfeffbffffddfffffeffffdffffbfffbfffbfffbfffffff7ffffffdfe7fffe03fffffffffff9ffffffffffffffffffa051ffffffffffffaf7df9ffffffffffbf87f9ffffc0ffffffff81ffff9fdfd7fdff7fffeffbfefffbfffbfeffffe7fffbfffbfffffffbfffffff7ffffffc3dffffe7f0ff3ffff -fff9ffffffffffffffffff50a9ffffffffffffde3079fffffffffdfffe03ffff9fc3fcffffcecfff3fdfdbfdff7fffeffbfefffffffbfdfffff7fffbfffbfffffffbfffbfff7fff7ffdd87fffffffc0ffffffff9ffffffffffffffffffa051ffffffffffffff7ff9fffffffff3ffff9d9fffffff01fffffff37cbfdfdffdff7f -dffffbfeffdffffdfffffff7fffffffffff7fffbfffbfffffff7ffddfe1fe7ffff3ffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffc7ffffffe679ffffcecffeffff81bfdfdfffff7fdffffffeffd7fffdfffffff7fffffffffff7fffffffbfffffff7ffd3fff80ffffefffffffff9ffffffffffffffff -ffa051fffffffffffffffff9ffffffff3b3ffdffff83ffffbff379ffff9ebfdfdbffffffdff7ffffffe7fffffbffffe9fffbfffbfff7fffffffbfff7fff7ffeffffe767ff7fffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffccf3ffff3d9ffdffff81ffffffbfdfdbfeffffdff7fbffffeffffffbff -ffeefffbfffbfff7fff7fffffff7ffffffeffffdff99cffffffffff9ffffffffffffffffffa051fffffffffff7ff7079fffffffbffff07ffffffe6f3ffffbf87f9ff7fbfdbfeff7ffff7fbfeffefffff7bffffdffffbfffbfffffff7fffffff7ffffffe3ffeffffe3ffffffffff9ffffffffffffffffff50a9ffffffffffebfe -b7f9ffffffe7fffe7b3ff3ffff03fffdfffe07ff7fbfdbfeffbffff7fdff7fefffff7bffffdfcff7fffbfffffff7fff7fff7fff7ffed8f9ffffe7ffffffffff9ffffffffffffffffffa651ffffffffffddfdd7f9ffffff0fffffffcdcfffff7f0ff3ffffc1ff7fbfbffeffbfeffffdff7ff7ffffbffffffff7fffffffff7fff7 -fff7fffffff7ffeff61ffffdfffffffffff9ffffffffffffffffff56a9ffffffffffddfdd4f83ffffef67fe7fffe03fffbfffc2fffff3f877fbfbfffffbfefffffff7ffbffffbffffffffbfffffffff7fffffff7fffffff7ffeff9ecffeffffffffffff9ffffffffffffffffffac51ffffffffffddfdd3783ffff7ff999ffffe -7f0fe7ffff83fffffffe7fbfbdffffffeff7ffffffbdfffff7ffff7ffff7fffbfff7fffffff7ffeffff7ffefffff339ffffffffffff9ffffffffffffffffff56a9ffffffffffddfddf79ffffcffffe07fffffffc1fffff7f0ff3ffff7fbfbdfeffffeff7fdffff7ffffff7ffff7fff37fffbfff7fff7ffffffefffffffef9fff -fc7ffffffffffff9ffffffffffffffffffa651ffffffffffddfddf79ffffbffffcfe1fe7ffff07fffbfffc07ffff7fbfbdff7fbffffbfdff7effffffeffffeffffc7fffbfffffff7ffffffefffffffe67ffff9fffffffffffff9ffffffffffffffffff56a9ffffffffffebdeb779fffe0ffffffff81ffffefe1fe7ffff3b3ffa -ffbfbdff7fbffffbfdff7effbfffe3fffdfffff3fff7fffffff7fff7ffefffe7ffe81ffffffffffffffffff9ffffffffffffffffffaa51fffffffffff78f78f9fff9fc3fcfffff07fff7fff80ffffeffcde6ff7fbfff7fbfeffffdff7fffcfffecffffffffecfffffff7fff7fff7ffffffe7ffe3f87f9ffffffffffffff9ffff -ffffffffffffff50a9ffffffffffffdffff9fffffff01ffffcfe1fcffffe767ff7fffe06ff7fbfffffdfefffffffbffff7ff9fdfffffffdfdffffff7fffffff7ffffffe7ffefffe07ffffffffffffff9ffffffffffffffffffa051fffffffffffffffff9ff9ffffcecfffffff81fffffff99cffffe7aff7fbdffffffeffbffff -f7ffffff7fe7fbffffbfe3f7ffeffffffff7ffefffe7ffeffff9fffffffffffffff9ffffffffffffffffff56a9fffffffffffffffff9fe3ffffbff37cffffcecfff7fffe0ffffffeff7f7eff7ffff7fbfefff7fffffffffbf7fffffffff7ffeffff7ffffffeffff7ffeffff7fffffffffffffff9ffffffffffffffffffa051ff -fffffffffffffdf9f9d9ffdffff81fffffff33cffffcf67fe7feff7f7eff7fdffffbfeffaffffeffffff37ffffffff17fffffff7ffffffeffffbfff1ffbffffffffffffffff9ffffffffffffffffff50a9fffffffffffffffaf9f7fe6f3ffff9ecffeffffc1fffffff9b9ffeff7f7eff7fdffffbfeff8fffff73ffffc3fffdff -ffe3ffffffeffff7ffefffebfff6de7ffffffffffffffff9ffffffffffffffffffa151fffffffffffffff779bffff03fffffff379ffffdecffcffffc07feff7f7fffbfdff7fffeff73ffffafffff3d9ffbffff9cffefffeffff7ffffffebfff7e1fffffffffffffffff9ffffffffffffffffff51a9fffffffffffffff7787fff -f9d9ff9ffff83fffefff333ffffcfe1dff7f7fffffdff7fffffeffffffc3ffffffe6f7ffff7fc3efffffffefffffffebfff7e7fffffffffffffffff9ffffffffffffffffffa151fffffffffffffff7787ffff7fe6e7ffffbd9ff9ffffc0ffffffff8feff7efffffff7fdffffff3fff3d9ffbffff03ffffffff2fffffffefffef -ffe0fff7fffffffffffffffffff9ffffffffffffffffff51a9fffffffffffffff779b3ffbffff03fffdffe677ffff9fc3fcffffdfeff7effbffff7fdff77ffcfffffe6e7ffff9d9ffbffffc3ffefffffffefffff07f77ffffffffffffffffff9ffffffffffffffffffa151fffffffffffffff779fcce7ffff3d9ff3ffff81fff -fffff01ffffdfeff7effbfeffffdff6ffffffbffff07ffff7fe6e7ffff9d9fefffffffdffffff834fffffffffffffffffff9ffffffffffffffffff51a9fffffffffffffffaf9fff07fffeffe6efffff3f87f9ffffcecffedfefeff7fbfeffffdff5ffffce7ffff3b3ffbffff07ffffffe66fffefffdfffefffc3ffffffffffff -fffffff9ffffffffffffffffffa151fffffffffffffffdf9ffffb3ff7ffff03fffffffe03ffffbff379dfefeffffbfeffbffff3fffff0ffffeffcde7ffff7b3ffdffff83ffefffffffeffffffffffffffffffffffff9ffffffffffffffffff51a9fffffffffffffffff9fffffcdcffffe7f0ff3ffff9d9ffdffff81dfefeff7f -ffeffbffff1ffffe767ff7fffe07fffbffccf3ffff7d9fefffffffdffffffffffffffffffffffff9ffffffffffffffffffa151fffffffffffffffff9ffffffe07fffffffc07ffff7fe6f3ffffbf9fefeff7ffffffbfefce7ffffff9bcffffe7b3fe7ffff03fffbffe663ffdfffc07ffffffffffffffffffffff9ffffffffffff -ffffff51a9fffffffffffffffff9ffffffffe1fe7ffff3b3ffbffff07fffdffbfefeff7fdffffbfefffe1ff7fffc0fffffffcddfffff7f0fe7ffff8d9fdfffe001fffffffffffffffffffff9ffffffffffffffffffa151fffffffffffffffff9ffffffffff80ffffeffcde7ffff7b3ff3ffbfdfefe7fdfeffffeeffff9cffffc -f67fe7fffe07fffbfffc1fffff3fe6dfffff8007fffffffffffffffffff9ffffffffffffffffff51a9fffffffffffffffff9ffffffffffff67ff7fffe07fffbffcdefffbfdfefe7fdff7fffe9ffffe1fffffff9b9ffffefe1fe7ffff83ffffffff07ffdffe001ffffffffffffffffff9ffffffffffffffffffa151ffffffffff -fffffff9fffffffffffff99cfffff3b3fe7fffe03ffbfdfefeffdff7fbfe3ffffdecffcffffc07fff7fff85ffffe7f0ff3ffff3b3fdffff8007ffffffffffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffe07fffeffcddfffff7f0fbfdfdf9fffff7fdf9cfffefff373ffffcfe1fcfffff07ffff -fffc07ffffffccdfffffe001fffffffffffffff9ffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffe1ff7fffe07fffbfffc3fdfde7bffffffdfffc7f9ffff80ffffffff83ffffefe1fe7ffff3b3ffbffff1fffffff800ffffffffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffff -ffffff84ffffcfe1fe7ffff3fdfd9fbfdffffddfffb77ffff9fc3fcffffe0ffff7fff80ffffeffcde7ffff3ffffffffc003ffffffffffff9ffffffffffffffffffa051fffffffffffffffff9fffffffffffffffffff87fffffff80ffffe7fdfc7fbfeff7ff3ffff81ffffffff03ffffdfc3fcffffe767ff7fffe0fffffffffff -fffff000fffffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffffe07cffffe767ff77fdfdffbfeff7fc3ffff3f87f9ffff9d9ffeffff01ffffdff9bcffffef67ffbffffffffffffc003fffffffff9ffffffffffffffffffa051fffffffffffffffff9fffffffffffffffffffff801ffffdff9 -9cf7fbf3ffffeff7f3d9ffffffe03ffffffe6f9ffffcecffeffffc0ffff7ff99e7ffffffffffffff000ffffffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffffe0fecffeffffe077fbcffffffffbfffe6f3ffff9d9ffdffff03ffffbff379ffffcf67fcffffe1ffffffffffffffffc007ffffff9 -ffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffffc3fff339ffffe7e7fb3fffbfffffbffff07ffff7fe6f3ffff3d9ffdffff81fffffff9bbffffcffffffffffffffffffe001fffff9ffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffffff0fffffc1ffffdff7f8ffffdfeffe7fff -f3b3ffbffff07ffffffe673ffff9ecffcffffc0fffffffffffffffffffffffff8007fff9ffffffffffffffffffa051fffffffffffffffff9fffffffffffffffffffc3ffffffecffefff7f3ffffdfeff87fffeffcde7ffff7b3ff3ffff83fffffff373ffffdfc3fcffffffffffffffffffffffe001ff9ffffffffffffffffff50 -a9fffffffffffffffff9fffffffffffffffffff0fffffffff339ffefcfffffdfefe7b7ff7fffe07fffbffcccfffff3d9ff9ffff81fffeffff03ffffffffffffffffffffffff80079ffffffffffffffffffa051fffffffffffffffff9ffffffffffffffffffc3ffffffffffc0ffee3ffffffff7dff8fcffffe7b3fe7ffff07fff -fffe6e7ffffbf87f9ffffcffffffffffffffffffffffffffe001ffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffffff0fffffffffffffc3e9fffffffffeffffc0fffffffcddffffe7b3ff3ffff01fffdfffe03ffffbffffffffffffffffffffffffffff83ffffffffffffffffffa051fffffffffffffffff9 -fffffffffffffffffc3fffffffffffffff07ffffffdff9ffffcf67fe7fffe0fffffffcdcfffff3f87f3ffff9d9ffdfffffffffffffffffffffffffffffc1ffffffffffffffffff50a9fffffffffffffffff9fffffffffffffffff0ffffffffffffffffffffffffdff0fffffff9b9ffffef67fe7fffe03fffffffe07ffffffe67 -3fffffffffffffffffffffffffffff07ffffffffffffffffffa851fffffffffffffffff9ffffffffffffffffc3ffffffffffffffffffffffffdfcf6ffcffffc0ffff7ff9b9ffffe7f0ff3ffff3b3ffdffff8fffffffffffffffffffffffffffffc1fffffffffffffffffff50a9fffffffffffffffff9ffffffffffffffff0fff -ffffffffffffffffffffffefbff1f3ffffcf67fcffffc07fffffffc07ffffffccf3ffff9fffffffffffffffffffffffffffff07fffffffffffffffffffa851fffffffffffffffff9fffffffffffffffc1ffffffffffffffffffffffffffdffff81fffffff9b1ffffcfe1fe7ffff3b3ffbffff07ffff7ffffffffffffffffffff -ffffffffe1ffffffffffffffffffff50a9fffffffffffffffff9fffffffffffffff07ffffffffffffffffffffffffff3ffff9ecffcffffc6cfffffff80ffffeffcde7ffff7b3ffbfffffffffffffffffffffffffffff87ffffffffffffffffffffa051fffffffffffffffff9ffffffffffffffc1ffffffffffffffffffffffff -ffe1fffffff361fffffff37cffffe767ff7fffe0ffffbffcce7ffffffffffffffffffffffffffffe1fffffffffffffffffffff50a9fffffffffffffffff9ffffffffffffff07fffffffffffffffffffffffffffecff9ffff8edffeffff81ffffdff9bcffffef67fe7ffff1fffffffffffffffffffffffffffff87fffffffffff -ffffffffffa851fffffffffffffffff9fffffffffffffc1ffffffffffffffffffffffffffffff363ffff7fe3f9ffffdecffeffffc0ffff7ff9bdffffe7ffffffffffffffffffffffffffffe1ffffffffffffffffffffff50a9fffffffffffffffff9fffffffffffff07fffffffffffffffffffffffffffffff8d9ffbffff03ff -fefff379ffffdfc3fcffffc07fffffffffffffffffffffffffffffffff87ffffffffffffffffffffffa851fffffffffffffffff9ffffffffffffe1ffffffffffffffffffffffffffffffffffe6e7ffff9d9ff9ffff80fffeffff0bffffcfe1fe7ffffffffffffffffffffffffffffe1fffffffffffffffffffffff58a9ffffff -fffffffffff9ffffffffffff87ffffffffffffffffffffffffffffffffffff07ffff7fe677ffff9fc3f9ffffe0ffffffff81fffffffffffffffffffffffffffff87fffffffffffffffffffffffa051fffffffffffffffff9fffffffffffe1ffffffffffffffffffffffffffffffffffffffb3ffbffff81ffffffff07ffffdfc3 -fcffffe7ffffffffffffffffffffffffffffe1ffffffffffffffffffffffff58a9fffffffffffffffff9fffffffffff87fffffffffffffffffffffffffffffffffffffffcce7ffff9f87f9ffffc1fffeffff01ffffdfffffffffffffffffffffffffffff87ffffffffffffffffffffffffa051fffffffffffffffff9ffffffff -ffe1ffffffffffffffffffffffffffffffffffffffffff03ffff7ffe07ffffbf87f9ffffcecffefffffffffffffffffffffffffffffe1fffffffffffffffffffffffff58a9fffffffffffffffff9ffffffffff87ffffffffffffffffffffffffffffffffffffffffffff0ffbffffc1fffdfffe03ffffbff339ffffffffffffff -fffffffffffffff87fffffffffffffffffffffffffa051fffffffffffffffff9fffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffc27ffff3f87f3ffff9d9ffdffffc7ffffffffffffffffffffffffffffe1ffffffffffffffffffffffffff50a9fffffffffffffffff9fffffffff87fffffffffffffffff -ffffffffffffffffffffffffffffffc3fffefffe07ffff7fe6f3ffffcfffffffffffffffffffffffffffff87ffffffffffffffffffffffffffa051fffffffffffffffff9ffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffff0fe7ffff3b3ffbffff03ffffbffffffffffffffffffffffffffffe0fffff -ffffffffffffffffffffff50a9fffffffffffffffff9ffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffeffcde7ffff3d9ffdfffffffffffffffffffffffffffff83fffffffffffffffffffffffffffa051fffffffffffffffff9fffffffe0fffffffffffffffffffffffffffffffffffffff -fffffffffffffff67ff7fffe07ffffffe673ffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffff58a9fffffffffffffffff9fffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffff99cffffe7b3ff3ffff8fffffffffffffffffffffffffffff83ffffffffffffffffffffffffff -ffa051fffffffffffffffff9ffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffcdcfffff3ffffffffffffffffffffffffffffe0fffffffffffffffffffffffffffff50a9fffffffffffffffff9ffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe -1fe7fffe03fffffffffffffffffffffffffffffffff83fffffffffffffffffffffffffffffa051fffffffffffffffff9fffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80ffffe7f0ff3ffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffff58a9ffffffffffffff -fff9fffff83ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffc0fffffffffffffffffffffffffffff83ffffffffffffffffffffffffffffffa851fffffffffffffffff9fffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99e7fffe7fffffff -fffffffffffffffffffffe0fffffffffffffffffffffffffffffff50a9fffffffffffffffff9ffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffdfffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffa051fffffffffffffffff9ffff0fffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67feffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffff50a9fffffffffffffffff9fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b9fffffffffffffffffffffffffffff -c3ffffffffffffffffffffffffffffffffa851fffffffffffffffff9fff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffff50a9fffffffffffffffff9ffc3ffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffa051fffffffffffffffff9ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffff0ffffffffffffffffffff -ffffffffffffff50a9fffffffffffffffff9fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffa051fffffffffffffffff9f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffe7fffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffff50a9fffffffffffffffff9c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffa051ff -fffffffffffffff907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffff50a9fffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fe7fffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffa051fffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffc003f -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffa051fffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffff -fffffff0ffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffff000fffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffff07ffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffc1fffffffffffff -ffffffffffffffffffffffffffa051ffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffff07fffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffe7fffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffff07ffffffffffffffffffffffffffffffffff -ffffff50a9fffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffc1fffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffe7ffffffffffffffffffff07fffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffa051ffffffffff -fffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffff07ffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffff -fffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffff -ffffffff000ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffff87ffffff -ffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffff8007ffff -fffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffe1ffffffffffffffffffffffffffff -ffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffff87fffffffffffffffffffffffeefffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffff -fffffffffffffffffffffffffe7ffffffffffffffe1fffffffffffffffffffffffff5fffffffffffffffffffffa651ffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffff87fffffffffffffffffffffffffbfffffffffffffffffffff5c -a9fffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffe1ffffffffffffffffffffffffffbfffffffffffffffffffffa651fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffffffffff -fffffe7fffffffffffff87ffffffffffffffffffffffffff5fffffffffffffffffffff56a9ffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffe7ffffffffffffe1ffffffffffffffffffffffffffeefffffffffffffffffffffa651ffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffe7ffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffff5aa9fffffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffe7fffffffffffe0 -ffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffe7fffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff8007fffffffffffffffffffffffffffffffffe7ffffffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffa651fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffe7ffffffffff83fffffffffffffffffffff -ffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffe7fffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffe003fffffffffffffffffffffffffffffe7fffffffff83ffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffe7ffffffffe0fffffffffffffffffffffffffffffffffffffffffff -ffffffffffa151fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffe7ffffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffff51a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffff -fffffffffffffffffe7fffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffe7fffffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffe7fffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffa151fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffffffffffe7f -fffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffe7ffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffffffe7fffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffe7fffff0fffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa151fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffe7ffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff51a9ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffe003fffffffffffffe7ffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa151ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffe7fffc3ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff51a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffe7fff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffff000fffffffffe7ffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffe7ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffe7fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffff -fc007ffffe7f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffe001fffe7c1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffff -ffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffff8007fe707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffe001e41ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9fffffffffffffffffffffffffffffffffffffffffffff2fffffffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffff -fffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffe01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffa051fffffffffffffffffffffffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffa851ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50 -a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff58a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff00fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffa051ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff50abffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555550aaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa0555554d55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555550aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaaaa6 -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r37/packages/plot/gnuplotex4.ps Index: r37/packages/plot/gnuplotex4.ps ================================================================== --- r37/packages/plot/gnuplotex4.ps +++ /dev/null @@ -1,359 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps4 -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:85 93 527 698 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -127 93 translate -%%90 rotate -%%605 442 scale -302 221 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 158 115 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 82 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 656 def -/nscans 479 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555553555555aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555553555555aaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa555554d555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -5555555555555555555555555555555555555555555553555555a800008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200002a53ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa535554d5555555555555555555555555555555555555555555555555555555555555555555fffffffffffd5555555555555555555555555555555555555555555555555555555555555555554d55535554d5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabfffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa535554d5555555555555555555555555555555555555555555555555555555555555555555c1fffffcff9d555555555555555555555555555555555555555555555555555555555555555555 -4d55537ff4d5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab9cfffffcff9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa535554d55555555555555555555555555555555555555555555555555555555555555555553f9332 -4cc30d5555555555555555555555555555555555555555555555555555555555555555554d55537544d5aabffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab3f893224999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaa537544d5 -55555555555555555555555555555555555555555555555555555555555555555530993264999d5555555555555555555555555555555555555555555555555555555555555555554d55537544d5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab3c993264999aaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab8aaaaaaaa536004d55555555555555555555555555555555555555555555555555555555555555555553c993264999d5555555555555555555555555555555555555555555555555555555555555555554d51537544d5aaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab9c9922249992aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa535554d5555555555555555555555555555555555555555555555555555555555555555555c299924cc3cd5555555555555555555555555555555555 -555555555555555555555555555555554d55537544d5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffe7ffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00aaa535554d55555555555555555555555555555555555555555 -55555555555555555555555555fffffe7ffffd5555555555555555555555555555555555555555555555555555555555555555554d55535554d5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffe7ffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaa520000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800020000d500000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffa9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa -51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcfdfffffdfffffffff9ffffdffffe3cffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdbffffdfffffffffdffbfdbffddddffffffffffff -ffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbbffffbfffffffffdffbfdbff55dbffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffb0cb0fb8e34e3fc3de30e10e307dfffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bd577775d35dfdddddbddbfd8fbfff80000fffffffaa51ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefbd576f7dd767fdddddbddbe1077fffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffefbd576f7dd77bfdddddbddbdd56ffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfb550df75d75ddc3dddb5db5dddffffffffffffffffd5a9ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcdd7df8e37638df8e3ce1ce1fc1fffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff -ffffddffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffdffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa -51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffdffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffff -fffffff0e39d30e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffff75ddcdbddfffffffffffffffffffffffffffffffffffff80000001fffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffff75ddddbe7ffffffffffffffffffffffffffffffffffff05ecc900c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffff75ddddbfbffff -fffffffffffffffffffffffffffffe00bbdb200430ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffff0dddddb5dffffffffffffffffffffffffffffffffe1bdbba40000007fffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffff7e38ddce3ffffffffffffffffffffffffffffffff97bd77500000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffff7ffffffffffffffffffffffffffffffff -fffffff87bbb6c000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffff7ffffffffffffffffffffffffffffffffffffff877bbad8000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffff877bddab000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffe67bddd9a01fffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffff9fbdedd94fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffe67ceeed03fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffff8f9f736d3ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffe73e7bdb07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff -ffffffffffffffffffffffffffffffffff8fc79ced7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffe70f9e774ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffc7f1e3993ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffff -fffffffffffff383e1c66fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffe1fc3e399fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffff9e07c1c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffff07f81e0c -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffef803e071ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffc07fc0187ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffbf8001e0fffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffff00fffe01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -fffffffffffffffffffffffffffffffffffffffffff7f0003fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffe0003fc03fffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffefffc0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff -ffffffffffffffffffffffc00000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffe3dffffffffffffffffffffffffffffdfffff807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffddaffffffffffffffffffffffffffffbf80007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffdd77fffffffffffffffffffffffff -ff807fff807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffd77c3fffffffffffffffffffffffffbf8000607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd5a9ffffffffffffffb7783fffffffffffffffffffffffff807f801c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff7779ffffffffffffffffffffffffffbe007c023fffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffef779ffffffffffffffffffffffffffc1fe03c1bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffaa51fffffffffffffdfaf9ffffffffffffffffffffffffffde01f83f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffc1df9ffffffffffffffffffffffffffe1ff87e0cfffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffffffeff07e1c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -fffffff9fffffffffffffffffffffffffff60fc1c023ffffffe00003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffffff1f83c2388ffff001b9c9c03ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffffffb87c21c667fe0def772791c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffff -fffffffffffffffc7c31e399981bdeeee9c0c307ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffffffec38f9e66077bbdd986063031ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffffffff387c7181c87bbb36192000087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffffffffc7e3 -ce13251b76c8400000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffffffff31f304ce52175b0000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffffffffcfc073dd3220b40000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffffffffff308ebab324400000000000 -7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffffffffffc271d772a54080000001fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa -51fffffffffffffffff9ffffffffffffffffffffffffffffff9861ceaca0352000040001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffffffffc7e0eb1cca5da4c10000303ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffffffff38f9339dc0eddb322180c0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9 -ffffffffffffffffffffffffffff8ff3e406aceeeeccc4e1c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffffffe70fc79c323eef777391e1fffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffffffcff0f8e78006f77b9ce01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffff -fffffff30ff1f39cff80000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffffffeff0fe1c63ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffffffc3ff0fe19fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffffff3c0ff0fe7fffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffffe1ff01f0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffd5a9ffffffffffffff7079fffffffffffffffffffffffffde03fe071ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffe77f9fffffffffffffffffffffffffbffc0ff87ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffd77f9fffffffffffffffffffffffff01fff01efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffff -ffffffff74f83fffffffffffffffffffffffefe0007e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffff73783fffffffffffffffffffffffc03fff807fffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff7f79ffffffffffffffffffffffffbfc000ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffff7f79ffffffff -ffffffffffffffffbfffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff7779ffffffffffffffffffffffff00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffc18f9ffffffffffffffffffffffff7ffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffe0000 -0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffefffffc03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffdfc0003fbffffffffff800000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffc03ffff03ffffff800077f7f7 -01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffdfffc00fbffff007bfbf7efcf9e003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffd5a9fffffffffffffffff9fffffffffffffffffffffffdf003ff03ffc0f7fbf7efdfbe7f33c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffc0ffc00e3fc3bfbfbf7efbf7dfccf8cffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffdf003f81a03fbfbfbf7df7cf3f33c7f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff -fff9fffffffffffffffffffffffc0ffe0701f7fdfbf7efbefbcfcce3f0e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffcff81f00cfbfdfdf7efbdf7bf239f8f0c7fffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffffee07f03c2fdfefdf7ef7bce7c9c7870c3bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffff -ffffffff1fc0cc3c3efefdf7ef77b9f26387083f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffff7027c3e09eff7df7d80003c91c7007c0efffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffff8e1c3d1c6f7f7ec007fffc00c300f03f87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffffffc1c3f063a3bf -b03ffffffffe300c0f8003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffff0c380f1f08dc0fffffffffff8103c000fbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffff8e3f838ece703fffffffffffff8c003fc03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffe7f887c7e3905ffffffffffffffc0c0003 -f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffff1ffe1e311c49e7fffffffffffffc03f80007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -fffffffffffffff9fffffffffffffffffffffce1ff21f8702798fffffffffffff80000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffff3fe1fcce7879f7301ffffffffffe0000fffdfffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffff87ffe3f31c3f7cef763fffffffff807fe0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffff -fffffffffffffffe787ffc3ce0fcf3deef407fffff80018001fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffff9ff83ffc313f3ef3eeeee8000003800000601ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff7df9ffffffffffffffffffe1fffc1ffc4fcf9efddeef6ee4e443c007f807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffe7af9ffffffffffffffffff9e07ff -e1e3f33f7dfbdeef777b388c1e180f9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffd7779fffffffffffffffffe7ff81ffe1ffc1cf3f7beef77bdcf31e1e0f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd5a9ffffffffffffff77783ffffffffffffffff9ffffe07cffffe0efefbdef7bce73ce7e1f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff77783ffffffffffffffff07fffff83ffffff0fef7df7bdf7 -bcf18fe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffff7779ffffffffffffffffcf803fffcffffffff0df7df7befbdf3e71cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffaa51ffffffffffffff7779ffffffffffffffff3fffc00fbfffffffff06fbf7befde7cf003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffff7af9fffffffffffffffe0ffffff07ffffffffff80077df7efbc0ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffc1df9fffffffffffffffdf007fffcffffffffffffff800000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -fffffff9fffffffffffffff3fff801f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffeffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffc0007fff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffff -ffbfff8000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffff7ffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffefffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffc00000007ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffbffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd5a9fffffffffffffffff9fffffffffffff7ffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffefffc0003fffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffc0003fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa -51fffffffffffffffff9ffffffffffffdfffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffbfffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffbf0000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9 -ffffffffffff00fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffff7ffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff0000ffffffffffffffffffd5a9fffffffffffffffff9ffffffffffff7ffffe01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000ffe3ffffffffffffffffffaa51fffffffffffffffff9fffffffffffefe0001fd -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ffffff1fffffffffffffffffffd5a9fffffffffffffffff9fffffffffffe01fffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff8ffffff8ffffffffffffffffffffaa51fffffffffffffffff9fffffffffffeffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffc7ffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffeffffc03bffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fffffc3fffffffffffffffffffffaa51fffffffffffffffff9fffffffffffeffe03ffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffe3ffffffffffff -ffffffffffd5a9fffffffffffffffff9fffffffffffee01fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ffffff1fffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffe1ffff03bffffffffffffffffffffffffc03fffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff8ffffff8ffffffffffffffffffffffffd5a9fffffffffffffff079fffffffffffefffc0ffbffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffc7ffffffffffffffffffffffffaa51ffffff -fffffffff7f9fffffffffffeff03fffdfffffffffffffffffffffffc1fc003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3ff80003fffffffffffffffffffffffffd5a9fffffffffffffff7f9fffffffffffec0fffff1fffffffffffffffffffffff87fff000fffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff00007ff1ffffffffffffffffffffffffffaa51fffffffffffffff4f83ffffffffffe3ffffc0dffffffffffffffffffffffe1fffffc003ffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffff0fffffffffffffffffffffffffffd5a9fffffffffffffff3783fffffff -fffeffff03feffffffffffffffffffffff87fffffff000ffffffffffffffffffffffffffffffffffffffffffffffffffff8ffffff8ffffffffffffffffffffffffffffaa51ffffffffffffffff79ffffffffffff7fc0fff8fffffffffffffffffffffe1fffffffffc007ffffffffffffffffffffffffffffffffffffffffffff -fffff87fffffc7ffffffffffffffffffffffffffffd5a9ffffffffffffffff79ffffffffffff703fff877ffffffffffffffffffff87ffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffc7fffffe3fffffffffffffffffffffffffffffaa51fffffffffffffff779ffffffffffff8ffff07fbfffffff -ffffffffffffe1fffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffc3ffffff1ffffffffffffffffffffffffffffffd5a9fffffffffffffff8f9ffffffffffffdfff0fff9fffffffffffffffffff87ffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffe3ffffff0fffffffff -ffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffdfe0fff86ffffffffffffffffffe1fffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffe1ffffff8ffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffee1fff87effffffffffffffffff87fffffff -fffffffffffe001fffffffffffffffffffffffffffffffffffffe000000007ffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffff1fff87ff7ffffffffffffffffe1fffffffffffffffffffff800fffffffffffffffffffffffffffffffffffe1ffffffe3fffffffffffffffffffffffffffffff -ffd5a9fffffffffffffffff9fffffffffffffbffc7fff3ffffffffffffffff83ffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffe1ffffffe1ffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffdfc3fff8cfffffffffffffffe0fffffffffffffffffffffffff000f -fffffffffffffffffffffffffffffc1fffffff1fffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffec3fff87f7ffffffffffffff83ffffffffffffffffffffffffffc003fffffffffffffffffffffffffffc3fffffff8ffffffffffffffffffffffffffffffffffffaa51ffffffffffffff -fff9ffffffffffffff3fffc7ff1fffffffffffffe0fffffffffffffffffffffffffffff000fffffffffffffffffffffffffc3fffffffc7ffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffff9ffe3ffce7ffffffffffff83ffffffffffffffffffffffffffffffc003ffffffffffffffff -ffffffc01ffffffc3fffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffefe1ffe3f9fffffffffffe0fffffffffffffffffffffffffffffffff001ffffffffffffffffffffc3fe0003fe3ffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffff3 -1fff1ffc7ffffffffffc3ffffffffffffffffffffffffffffffffff8007fffffffffffffffffc3ffffffc01fffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffcfffcfff39ffffffffff0ffffffffffffffffffffffffffffffffffffe001fffffffffffffffc3fffffffe1ffffff -ffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffe7fe3ffcfe7ffffffffc3ffffffffffffffffffffffffffffffffffffff8007ffffffffffffc3fffffffe1fffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffbf1fff3ff9ffffffff0f -fffffffffffffffffffffffffffffffffffffffe001ffffffffffc3fffffffc1ffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffccfffcffe67ffffffc3ffffffffffffffffffffffffffffffffffffffffff8007fffffff801ffffffc3fffffffffffffffffffffffffffff -ffffffffffffffaa51fffffffffffffffff9fffffffffffffffff3fff3ff9f9ffffff0ffffffffffffffffffffffffffffffffffffffffffffe003ffffe07fe0007fc3ffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffcffcffe7fe1ffffc3ffffffffffffffffffffff -ffffffffffffffffffffffff000ff81fffffff803fffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffff3f3ff9ffce1fff0ffffffffffffffffffffffffffffffffffffffffffffffffc0007ffffffff87ffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -fffffffffffffff9ffffffffffffffffffccffe7ffbfe3fc3fffffffffffffffffffffffffffffffffffffffffffffffffc000fffffff87fffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffff3ff9ffe7fec70ffffffffffffffffffffffffffffffffffffffffffff -fffff03f0003ffff87ffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffc7e7ff9ffdf81fffffffffffffffffffffffffffffffffffffffffffffffe0ffffc000ff87fffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffff -ffffffffffffffff99fff7ffbf00ffffffffffffffffffffffffffffffffffffffffffffff81fffffff80007ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffe3ffcfff7c1703ffffffffffffffffffffffffffffffffffffffffff803fffffffffe001ffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffffc3fbffcf06ffc1ffffffffffffffffffffffffffffffffffffffe007fc0fffffffc0f8007ffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffc6 -7ffbc1effee07ffffffffffffffffffffffffffffffffff801ffffff03ffff03fffe001fffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffdf9fffffffffffffffffffffff8fff707dffeff803fffffffffffffffffffffffffffffe007e1fffffffc0fc0fffffff8007fffffffffffffffffff -ffffffffffffffffffffffffffd5a9fffffffffffffffaf9ffffffffffffffffffffffff0fee1fbffdffefc01fffffffffffffffffffffffffc01ffffe1ffffffff03fffffffffe001ffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffff779fffffffffffffffffffffffff0d87f7ffdffdffee07f -ffffffffffffffffffff003f1fffffe1fffffe07ffffffffffff800fffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffff7783fffffffffffffffffffffffff01fefffbffdffeff800fffffffffffffffe000ffffe3fffffe1fff81fffffffffffffffc003fffffffffffffffffffffffffffffffffff -ffffffaa51fffffffffffffff7783fffffffffffffffffffffffff80fefff7ffdffefff7f0000000000000001ff9fffffc7fffffe1e07ffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffff779fffffffffffffffffffffffffe1f0dfff7ffdffefffbffefffdfffcfffe7fffe -3fffff9ffffff81fffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffaa51fffffffffffffff779fffffffffffffffffffffffff87ff07fefffbffefffbfff7ffeffff7fff9ffffc7ffffe3fffc07ffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffd5a9ffffffffff -fffffaf9ffffffffffffffffffffffffe1ffff81efffbfff7ffdfff7fff7fffbfffe7ffff9fffffc7c03fffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffaa51fffffffffffffffdf9ffffffffffffffffffffffff87fffffe03ffbfff7ffdfffbfff9fffcffff9ffffe3ffff803ffffffffff -fffffffffffffffffffff001ffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffffe1ffffffffc077fff7ffefffdfffeffff7fffe7ffffcfe007ffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffff -fffffffffff87ffffffffff8007f7ffefffeffff7fffbffff9ffff801ffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffffe0ffffffffffffff80007f7ffeffffbfffcffffe7e007fffffffffffffffffffffffffffffffffffff -fffff8007fffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffff83ffffffffffffffffff80007f7fffdffff7ff0001ffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffffffe0fffffffff -ffffffffffffff80000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe003fffffff -ffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffffc3ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffaa -51fffffffffffffffff9fffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffffffffd5a9fffffffffffffffff9 -ffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff83ffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffffc3ff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffd5a9fffffffffffffffff9ffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffff0ffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffffff07fffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffaa51fffffffffffffffff9ffffffffffffffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffff -ffffffffffd5a9fffffffffffffffff9ffffffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffffc1fffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffd5a9fffffffffffffffff9fffffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffaa51ffffff -fffffffffff9ffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffff07fffffffffffffffffffffffaa51fffffffffffffffff9fffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffff -fff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffffffffffaa51fffffffffffffffff9ffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffc1fffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffffffffffffffffaa51fffffffffffffffff9fffffffffe1fffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffffffffffffffffd5a9fffffffffffffffff9fffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ffff -ffffffffffffffffffffffaa51fffffffffffffffff9ffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffffff87ffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffaa51fffffffffffffffff9fffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffff -ffd5a9fffffffffffffffff9fffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ffffffffffffffffffffffffffffaa51fffffffffffffffff9ffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffaa51ffffffffffffff -fff9fffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffff83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff87ffffffffffffffffffffffffffffffaa51fffffffffffffffff9fffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffffc3ffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffffffffffffffffffffffaa51fffffffffffffffff9ffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e0ffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffffffffffffffffffffffffffffffffaa51fffffffffffffffff9fff0ffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0fffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9ffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffffffffff -ffffffffffffffaa51fffffffffffffffff9ff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff9fc3fffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffaa51fffffffffffffffff9f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffd5a9ff -fffffffffffffff9c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffaa51fffffffffffffffff907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffc0fff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffc3fffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffc003ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffff -ffffffffffffffffffffffffffd5a9fffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffff001ffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffff -ffffffaa51fffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffc1fffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -ffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffe003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffff -ffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ffffff -ffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffff000ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffff -ffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff83ffffffffffffffffffffffff77ffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0fffffffffffffffffffffffff77ffffffffffffffffffffaa -51ffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffffffffffffffff77ffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffe0ffffffffffffffffffffffffff67ffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffffffffffffffffffffffffff97ffffffffffffffffffffd5a9ffffffffffffffffff -ffffffffffffffffffffffffffffffffffc003fffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffff7ffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffffffffffffffffc -3fffffffffffffffffffffffffff77ffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffff8fffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff000ffffffffffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffff -ffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fff8007ffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffff -fffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffff -ffffff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffffffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffffffffffffffc1ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffffffffffff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffc007ffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffffffffffff87fffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffe001fffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8007ffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001fffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -800fffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffeefffffffffffffffffffffffffffffffffffffffffc003fffffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffff -fffffffffffffffffffffffffffffff5fffffffffffffffffffffffffffffffffffffffffff000fffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffc003fff87fffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffff000fe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffff -fffffffffff5fffffffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffeefffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa -51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffaa01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffd5a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5abffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa555554d555555555 -5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555553555555aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa555554d5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555553555555 -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r37/packages/plot/gnuplotex5.ps Index: r37/packages/plot/gnuplotex5.ps ================================================================== --- r37/packages/plot/gnuplotex5.ps +++ /dev/null @@ -1,361 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps5 -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:84 93 528 698 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -128 93 translate -%% 90 rotate -%%605 444 scale -302 222 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 158 116 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 82 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 656 def -/nscans 482 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa54000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000015a9ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6a555555555555555555555555555555555555555555555555555555555555 -55555555555555fffffffffffd555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae0fffffe7fceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -a6aaa9bffa6a55555555555555555555555555555555555555555555555555555555555555555555555555ce7ffffe7fcd555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9fc999 -266186aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a555ffd555555555555555555555555555555555555555555555555555555555555555555559fc499124ccd555555555555555555555555555555555555555555555555555555555555555555555f55555555a9baa26a -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa984c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a555555555555555555555555555555555555555555555555555555555555555555555555559e4c99324ccd55555555555555 -5555555555555555555555555555555555555555555555555555555c55555555a9b0026aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9e4c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6a8a9baa26a5555555555555555555555555555 -5555555555555555555555555555555555555555555555ce4c91124cc9555555555555555555555555555555555555555555555555555555555555555555555555555555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae14cc92661e6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a55555555555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd555555555555555555555555555555555555555555555555555555555555555555555555500555a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaffffff3ffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6a55555555555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd555555555555555555555555555555555555555555555555555555 -555555555555555555555555a900004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000100006a00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffc6ffeffffbffffffff87fcffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbaffeffffbfffffdffbbfefffffffbffbfffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbeffeffffbfffffdffbbfeffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea5477ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffbe9c61bb1a71bbf87fbb1eeea71973c7bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a877ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe6baebae9aebbfdff86eeee9aeabbfbbbbfffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffea5477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbee82ebb3ba0bbfdffbeeeeebaeabbc3bcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a867ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffbeebeeb3dbafd7fdffbeeeecbaeabbbbbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffea5497ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbaebaecaebaed7fdbfbeeef2baeabbbbbbbfffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6ec61fb1bb1effe7fbf1c7ebb1bb1c31c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffea5477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -bbffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a88fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffea54ffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffd7ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffff7fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -01ffffd5a8fffffffffffff7f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffea54fffffffffffff7f9ffffffffffff81fffffffffffff9fffff83e1ffff9fffffffffffff9ffffffffff -ff810ffffffffffff9ffffff803ffffcfffffffffffffcfffffffffffffcfffffffffffff8ffffd5a8fffffffffffff7f8fffffffffffe78fffffffffffff9ffff07ffe1fff9fffffffffffff9fffffffffffc79f0fffffffffff9fffff87fcffffcfffffffffffffcfffffffffffffcfffffffffffff4ffffea54ffffffffff -fff7f8fffffffffffdf93ffffffffffff9fff0fffffe3ff9fffffffffffff9ffffffffffc3f9ff0ffffffffff9ffffe7fff3fffcfffffffffffffcfffffffffffffcffffffffffffecffffd5a8ffffffffffffc1f97ffffffffffbf9dffffffffffff9ffcfffffffcff9fffffffffffff9ffffffffff3ff9fff3fffffffff9ff -ffdffffcfffcfffffffffffffcfffffffffffffcffffffffffff9cffffea54fffffffffffffff97ffffffffffbffefffffffffffffff3ffffffff3fffffffffffffffffffffffffcfffffffcffffffffffffffbfffff3fffffffffffffffffffffffffffffffffffffffffff78ffffd5a8fffffffffffffff9bffffffffff7ff -f7fffffffffffffcfffffffffcfffffffffffffffffffffffffbffffffff3fffffffffffff7fffffdffffffffffffffffffffffffffffffffffffffffffcf8ffffea54fffffffffffffff8bfffffffffeffffbfffffffffffff3ffffffffff3fffffffffffffffffffffffe7ffffffffdffffffffffffcffffffefffffffffff -fffffffffffffffffffffffffffffff3f4ffffd5a8fffffffffffffff8bfffffffffdffffdffffffffffffefffffffffffcfffffffffffffffffffffffdfffffffffe7fffffffffffbfffffff7ffffffffffffffffffffffffffffffffffffffffcff4ffffea54fffffffffffffff8bfffffffffdffffeffffffffffff9fffff -fffffff3ffffffffffffffffffffff3ffffffffffbfffffffffff7fffffffbffffffffffffffffffffffffffffffffffffffffbfecffffd5a8fffffffffffffff8dfffffffffbffffeffffffffffff7ffffffffffffdfffffffffffffffffffffefffffffffffdffffffffffeffffffffdffffffffffffffffffffffffffffff -fffffffffe7fe8ffffea54fffffffffffffff8dfffffffffbfffff7ffffffffffefffffffffffffefffffffffffffffffffffdfffffdfffffeffffffffffdffffffffefffffffffffffffffffffffffffffffffffffff9ffe8ffffd5a8fffffffffffffff8efffffffff7fffff7ffffffffffdffffffffffffff3fffffffffff -fffffffffbffffffffffff7fffffffffbfffffffff7fffffffffffffffffffffffffffffffffffffe7ffd8ffffea54fffffffffffffff8efffffffff7fffff7ffffffffffbffffffffffffffdffffffffffffffffffff7ffffffffffffbfffffffff7fffffffffbfffffffffffffffffffffffffffffffffffffdfffd8ffffd5 -a8fffffffffffffff8f7fffffffeffffffbffffffffff7ffffffffffffffefffffffffffffffffffefffffffffffffdfffffffff7fffffffffdfffffffffffffffffffffffffffffffffffff3fffb8ffffea54fffffffffffffff977fffffffeffffffbfffffffffeffffffffffffffff7ffffffffffffffffffdfffffffffff -ffeffffffffeffffffffffeffffffffffffffffffffffffffffffffffffeffffb4ffffd5a8fffffffffffffff97bfffffffeffffffdfffffffffdffffffffffffffffbffffffffffffffffffbffffffffffffff7fffffffeffffffffffeffffffffffffffffffffffffffffffffffffdffff70ffffea54fffffffffffffff97b -fffffffdffffffefffffffffbffffffffffffffffdffffffffffffffffff7ffffffffffffffbfffffffdfffffffffff7fffffffffffffffffffffffffffffffffffbffff70ffffd5a8fffffffffffffff97dfffffffdffffffefffffffff7ffffffffffffffffe7ffffffffffffffffefffffffdfffffffdfffffffbffffffff -fffbffffffffffffffffffffffffffffffffffe7fffef0ffffea54fffffffffffffff97dfffffffdfffffff7fffffffeffffffffffffffffffbffffffffffffffffdfffffffffffffffdfffffff7fffffffffffbffffffffffffffffffffffffffffffffff9ffffef0ffffd5a8fffffffffffffff97dfffffffbfffffff7ffff -fffdffffffffffffffffffdffffffffffffffffbfffffffffffffffefffffff7fffffffffffdffffffffffffffffffffffffffffffffff7ffffee8ffffea54fffffffffffffff97dfffffffbfffffff7fffffffbffffffffffffffffffeffffffffffffffff7ffffffffffffffff7fffffeffffffffffffdffffffffffffffff -fffffffffffffffffcfffffee8ffffd5a8fffffffffffffff97dfffffff7fffffffbfffffff7fffffffffffffffffff7ffffffffffffffefffffffffffffffffbfffffeffffffffffffefffffffffffffffffffffffffffffffffbfffffee8ffffea54fffffffffffffff97efffffff7fffffffbffffffefffffffffffffffff -fffbffffffffffffffdfffffffffffffffffbfffffdfffffffffffff7fffffffffffffffffffffffffffffffe7fffffde8ffffd5a8fffffffffffffff9befffffff7fffffffdffffffdffffffffffffffffffffdffffffffffffffdfffffffffffffffffdfffffbfffffffffffff7fffffffffffffffffffffffffffffffdfff -fffdd8ffffea54fffffffffffffff9bf7fffffeffffffffdffffffbffffffffffffffffffffeffffffffffffffbffffffffdffffffffefffff7fffffffffffffbfffffffffffffffffffffffffffffffbffffffbd0ffffd5a8fffffffffffffff9bf7fffffeffffffffeffffffbfffffffffffffffffffff7fffffffffffffbf -fffffffffffffffff7ffff7fffffffffffffdffffffffffffffffffffffffffffffe7ffffffbd0ffffea54fffffffffffffff9bfbfffffeffffffffeffffff7fffffffffffffffffffffbfffffffffffff7ffffffffffffffffffbfffeffffffffffffffdffffffffffffffffffffffffffffff9fffffffbd0ffffd5a8ffffff -fffffffff9bfbfffffdfffffffff7fffff7fffffffffffffffffffffdffffffffffffefffffffffffffffffffdfffdffffffffffffffefffffffffffffffffffffffffffffe7fffffff7d0ffffea54fffffffffffffff9bfdfffffdfffffffff7ffffeffffffffffffffffffffffeffffffffffffdfffffffffffffffffffeff -fdffffffffffffffefffffffffffffffffffffffffffff9ffffffff7d0ffffd5a8fffffffffffffff9bfdfffffdfffffffff7ffffdfffffffffffffffffffffff7fffffffffffbfffffffffffffffffffefffbfffffffffffffff7fffffffffffffffffffffffffffe7fffffffefd0ffffea54fffffffffffffff9bfefffffbf -ffffffffbffffdfffffffffffffffffffffffbfffffffffffbffffffffffffffffffff7ffbfffffffffffffff7fffffffffffffffffffffffffffdffffffffefd0ffffd5a8ffffffffff7fe3f9bfefffffbfffffffffbffffbfffffffffffffffffffffffdfffffffffff7fffffffffdffffffffff7ff7fffffffffffffff7ff -fffffffffffffffffffffffffbffffffffdfb0ffffea54fffffffffebfddf9bfefffffbfffffffffdffff7fffffffffffffffffffffffdfffffffffff7ffffffffffffffffffffbff7fffffffffffffffbfffffffffffffffffffffffffff7ffffffffdfb0ffffd5a8fffffffffddfddf9bfefffffbfffffffffdffff7ffffff -fffffffffffffffffeffffffffffefffffffffffffffffffffdff7fffffffffffffffbffffffffffffffffffffffffffcfffffffffbfa8ffffea54fffffffffddfddf83ff7ffffbfffffffffdfffefffffffffffffffffffffffff7fffffffffefffffffffffffffffffffefeffffffffffffffffdffffffffffffffffffffff -ffff3fffffffffbfa0ffffd5a8fffffffffddfe3f81ff7ffffbfffffffffefffdfffffffffffffffffffffffffbfffffffffdfffffffffffffffffffffefeffffffffffffffffefffffffffffffffffffffffffeffffffffff7f60ffffea54fffffffffddfddf9dffbffffbfffffffffefffbfffffffffffffffffffffffffbf -ffffffffbffffffffffffffffffffff7dffffffffffffffffefffffffffffffffffffffffff9ffffffffff7f68ffffd5a8fffffffffddfddf9dffbffff7fffffffffefff7fffffffffffffffffffffffffdfffffffff7ffffffffffffffffffffff7bfffffffffffffffff7ffffffffffffffffffffffff7ffffffffff7f64ff -ffea54fffffffffebdddf9dffdffff7ffffffffff7ff7fffffffffffffffffffffffffefffffffff7ffffffffffdfffffffffffbbfffffffffffffffff7fffffffffffffffffffffffcffffffffffeff64ffffd5a8ffffffffff78e3f9dffdffff7ffffffffff7fefffffffffffffffffffffffffff7fffffffeffffffffffff -fffffffffffb7fffffffffffffffffbfffffffffffffffffffffffbffffffffffeff64ffffea54fffffffffffdfff9dffefffefffffffffff7fdfffffffffffffffffffffffffffbfffffffdfffffffffffffffffffffffd7fffffffffffffffffbffffffffffffffffffffffe7ffffffffffdfee4ffffd5a8ffffffffffffff -f9dffefffefffffffffffbfdfffffffffffffffffffffffffffbfffffffdfffffffffffffffffffffffeffffffffffffffffffbffffffffffffffffffffff9fffffffffffdfed4ffffea54fffffffffffffff9dfff7ffefffffffffffbfbfffffffffffffffffffffffffffdfffffffbfffffffffffffffffffffffe7fffffff -ffffffffffdffffffffffffffffffffff7fffffffffffdfed4ffffd5a8fffffffffffffff9efff7ffefffffffffffdfbfffffffffffffffffffffffffffefffffffbfffffffffffffffffffffffd7fffffffffffffffffdfffffffffffffffffffffcffffffffffffdfed4ffffea54fffffffffffffff9efff7ffdffffffffff -fdf7ffffffffffffffffffffffffffff7ffffff7fffffffffffffffffffffffdbfffffffffffffffffefffffffffffffffffffffbffffffffffffbfed4ffffd5a8fffffffffffffff9efff7ffdfffffffffffdf7ffffffffffffffffffffffffffffbffffff7fffffffffffdfffffffffffdbfffffffffffffffffefffffffff -ffffffffffff7ffffffffffffbfed4ffffea54fffffffffffffff9efffbffdfffffffffffeefffffffffffffffffffffffffffffdfffffeffffffffffffffffffffffffbdfffffffffffffffffeffffffffffffffffffffcfffffffffffff7fed4ffffd5a8fffffffffffffff9efffbffdfffffffffffeefffffffffffffffff -ffffffffffffdfffffeffffffffffffffffffffffffbdffffffffffffffffff7fffffffffffffffffff3fffffffffffff7fdd4ffffea54fffffffffffffff9efffdffbfffffffffffedfffffffffffffffffffffffffffffefffffdffffffffffffffffffffffffbeffffffffffffffffff7ffffffffffffffffffcfffffffff -fffff7fdd4ffffd5a8fffffffffffffff9efffdffbffffffffffff5fffffffffffffffffffffffffffffefffffdffffffffffffffffffffffff7f7fffffffffffffffff7ffffffffffffffffffbfffffffffffffeffdd4ffffea54fffffffffffffff9efffeffbffffffffffff3ffffffffffffffffffffffffffffff7ffffbf -fffffffffffffffffffffff7f7fffffffffffffffffbfffffffffffffffffe7fffffffffffffeffdd4ffffd5a8fffffffffffffff9efffeffbffffffffffff3ffffffffffffffffffffffffffffffbffffbfffffffffffffffffffffffeffbfffffffffffffffffbfffffffffffffffffdffffffffffffffdffdd4ffffea54ff -fffffffffffff9effff7f7ffffffffffff3ffffffffffffffffffffffffffffffdffff7ffffffffffffdffffffffffeffbfffffffffffffffffdfffffffffffffffff3ffffffffffffffdffbd4ffffd5a8fffffffffffffff9effff7f7ffffffffffff3ffffffffffffffffffffffffffffffefffeffffffffffffffffffffff -ffdffdfffffffffffffffffdffffffffffffffffcfffffffffffffffbffbacffffea54fffffffffffffff9effff7f7fffffffffffebffffffffffffffffffffffffffffffefffeffffffffffffffffffffffffdffdfffffffffffffffffeffffffffffffffffbfffffffffffffffbffbacffffd5a8fffffffffffffff9f7fffb -f7fffffffffffebfffffffffffffffffffffffffffffff7ffdffffffffffffffffffffffffbffefffffffffffffffffefffffffffffffffe7fffffffffffffff7ffbacffffea54fffffffffffffff9f7fffbf7fffffffffffdbfffffffffffffffffffffffffffffff7ffdffffffffffffffffffffffffbffeffffffffffffff -ffff7ffffffffffffffdffffffffffffffff7ff7acffffd5a8fffffffffffffff9f7fffbf7fffffffffffdbfffffffffffffffffffffffffffffffbffbffffffffffffffffffffffff7fff7fffffffffffffffff7ffffffffffffffbfffffffffffffffefff7acffffea54fffffffffffffff9f7fffdf7fffffffffffbdfffff -ffffffffffffffffffffffffffdffbffffffffffffffffffffffff7fff7fffffffffffffffff7ffffffffffffff7fffffffffffffffefff7acffffd5a8fffffffffffffff9f7fffdf7fffffffffffbdfffffffffffffffffffffffffffffffeff7fffffffffffffdfffffffffeffffbfffffffffffffffff7fffffffffffffcf -fffffffffffffffdfff7acffffea54fffffffffffffff9f7fffeeffffffffffffbdfffffffffffffffffffffffffffffffeff7fffffffffffffffffffffffeffffbfffffffffffffffffbfffffffffffff3ffffffffffffffffdfff7acffffd5a8fffffffffffffff9f7fffeeffffffffffff7dfffffffffffffffffffffffff -fffffff7effffffffffffffffffffffffeffffdfffffffffffffffffbffffffffffffefffffffffffffffffdfff76cffffea54fffffffffffffff9f7ffff6ffffffffffff7effffffffffffffffffffffffffffffffbeffffffffffffffffffffffffdffffefffffffffffffffffbffffffffffff9fffffffffffffffffbfff7 -6cffffd5a8fffffffffffffff9fbffff6fffffffffffefeffffffffffffffffffffffffffffffffddffffffffffffffffffffffffdffffefffffffffffffffffbfffffffffffe7fffffffffffffffffbfff76cffffea54fffffffffffffff9fbffff9fffffffffffdfeffffffffffffffffffffffffffffffffddfffffffffff -fffffffffffffdfffff7ffffffffffffffffdfffffffffff9ffffffffffffffffff7ffef6cffffd5a8fffffffffffffff9fbffff9fffffffffffdff7fffffffffffffffffffffffffffffffebffffffffffffffffffffffffbfffff7ffffffffffffffffdfffffffffff7ffffffffffffffffff7ffef6cffffea54ffffffffff -fffff9fbffffdfffffffffffbff7fffffffffffffffffffffffffffffffe7ffffffffffffffdfffffffffbfffff7ffffffffffffffffeffffffffffcfffffffffffffffffff7ffef5cffffd5a8ffffffffff7fe3f9fbffffdfffffffffffbffbffffffffffffffffffffffffffffffff7ffffffffffffffffffffffff7fffffb -ffffffffffffffffeffffffffffbfffffffffffffffffff7ffef5cffffea54fffffffffebfddf9fbffffcfffffffffffbffbfffffffffffffffffffffffffffffffe7ffffffffffffffffffffffff7fffffbfffffffffffffffff7ffffffffe7ffffffffffffffffffefffef5cffffd5a8fffffffffddfdff9fbffffafffffff -ffff7ffbfffffffffffffffffffffffffffffffebffffffffffffffffffffffff7fffffbfffffffffffffffff7ffffffffdfffffffffffffffffffefffdedcffffea54fffffffffddfdff83bffffb7ffffffffff7ffdfffffffffffffffffffffffffffffffedfffffffffffffffffffffffeffffffdfffffffffffffffffbff -ffffff3fffffffffffffffffffdfffdec0ffffd5a8fffffffffddfc3f83dffffb7ffffffffff7ffdfffffffffffffffffffffffffffffffdefffffffffffffffffffffffeffffffdfffffffffffffffffbfffffffeffffffffffffffffffffdfffdec0ffffea54fffffffffddfddf9fdffffb7fffffffffefffdffffffffffff -fffffffffffffffffffdefffffffffffffffffffffffdffffffefffffffffffffffffbfffffffdffffffffffffffffffffbfffdedcffffd5a8fffffffffddfddf9fdffffb7fffffffffefffefffffffffffffffffffffffffffffffdf7fffffffffffffdffffffffdfffffff7ffffffffffffffffbfffffff3ffffffffffffff -ffffffbfffbedcffffea54fffffffffebdddf9fdffff7bfffffffffdfffefffffffffffffffffffffffffffffffbf7ffffffffffffffffffffffbfffffff7ffffffffffffffffbffffffcfffffffffffffffffffff7fffbedcffffd5a8ffffffffff78e3f9fdffff7bfffffffffdfffefffffffffffffffffffffffffffffffb -fbffffffffffffffffffffffbfffffffbffffffffffffffffdffffff3fffffffffffffffffffff7fffbedcffffea54fffffffffffdfff9fdffff7dfffffffffbfffefffffffffffffffffffffffffffffff7fbffffffffffffffffffffffbfffffffbffffffffffffffffdfffffefffffffffffffffffffffeffffbedcffffd5 -a8fffffffffffffff9fdffff7dfffffffffbfffeffffffffffffffffffffffffffffffeffdffffffffffffffffffffff7fffffffdffffffffffffffffdfffffdfffffffffffffffffffffeffffbedcffffea54fffffffffffffff9fdffff7efffffffff7fffeffffffffffffffffffffffffffffffeffeffffffffffffffffff -ffff7fffffffdffffffffffffffffefffffbfffffffffffffffffffffdffff7ebcffffd5a8fffffffffffffff9fdffff7efffffffff7ffff7fffffffffffffffffffffffffffffdffefffffffffffffffffffffeffffffffeffffffffffffffffeffffe7fffffffffffffffffffffdffff7ebcffffea54fffffffffffffff9fd -ffff7f7fffffffefffff7fffffffffffffffffffffffffffffdfff7ffffffffffffdfffffffeffffffffefffffffffffffffff7fff9ffffffffffffffffffffffdffff7dbcffffd5a8fffffffffffffff9fdffff7f7fffffffefffff7fffffffffffffffffffffffffffffdfffbffffffffffffffffffffefffffffff7ffffff -ffffffffff7ffe7ffffffffffffffffffffffbffff7dbcffffea54fffffffffffffff9fefffeffbfffffffdfffffbfffffffffffffffffffffffffffffbfffbffffffffffffffffffffefffffffff7ffffffffffffffff7ff9fffffffffffffffffffffffbfffefdbcffffd5a8fffffffffffffff9fefffeffbfffffffdfffff -bfffffffffffffffffffffffffffffbfffdffffffffffffffffffffefffffffffbffffffffffffffffbff7fffffffffffffffffffffff7fffefdbcffffea54fffffffffffffff9fefffeffdfffffffdfffffbfffffffffffffffffffffffffffffbfffeffffffffffffffffffffdfffffffffbffffffffffffffffbfcfffffff -fffffffffffffffff7fffefdbcffffd5a8fffffffffffffff9fefffeffdfffffffbfffffdfffffffffffffffffffffffffffff7fffeffffffffffffffffffffdfffffffffdffffffffffffffffdfbfffffffffffffffffffffffeffffefdbcffffea54fffffffffffffff9fefffeffefffffffbfffffdfffffffffffffffffff -ffffffffff7ffff7fffffffffffffffffffbfffffffffdffffffffffffffffde7fffffffffffffffffffffffeffffdfdbcffffd5a8fffffffffffffff9fefffeffefffffffbfffffdffffffffffffffffffffffffffffefffff7fffffffffffdfffffffbfffffffffeffffffffffffffffddffffffffffffffffffffffffdfff -fdfdbcffffea54fffffffffffffff9fefffdfff7ffffff7fffffeffffffffffffffffffffffffffffefffffbfffffffffffffffffff7fffffffffeffffffffffffffffdbffffffffffffffffffffffffdffffdfbbcffffd5a8fffffffffffffff9ff7ffdfff7ffffff7fffffeffffffffffffffffffffffffffffdfffffbffff -fffffffffffffff7fffffffffeffffffffffffffffc7ffffffffffffffffffffffffbffffdfbbcffffea54fffffffffffffff9ff7ffdfff7fffffeffffffeffffffffffffffffffffffffffffdfffffdfffffffffffffffffff7ffffffffff7fffffffffffffff9fffffffffffffffffffffffffbffffdfbbcffffd5a8ffffff -fffffffff9ff7ffdfffbfffffeffffffeffffffffffffffffffffffffffffbfffffdffffffffffffffffffefffffffffff7ffffffffffffffe6fffffffffffffffffffffffffbffffbfbbcffffea54fffffffffffffff9ff7ffdfffbfffffeffffffeffffffffffffffffffffffffffffbfffffeffffffffffffffffffefffff -ffffff7ffffffffffffffdefffffffffffffffffffffffff7ffffbfbbcffffd5a8fffffffffffffff9ff7ffdfffbfffffdffffffeffffffffffffffffffffffffffff7ffffff7fffffffffffffffffdfffffffffff7ffffffffffffffbefffffffffffffffffffffffff7ffffbfb7cffffea54fffffffffffffff9ff7ffbfffd -fffffdfffffff7fffffffffffffffffffffffffff7ffffff7ffffffffffdffffffdfffffffffffbffffffffffffff7f7ffffffffffffffffffffffff7ffffbfb7cffffd5a8fffffffffffffff9ff7ffbfffdfffffbfffffff7ffffffffffffffffffffffffffefffffffbfffffffffffffffffdfffffffffffbfffffffffffff -cff7fffffffffffffffffffffffefffffbf77cffffea54fffffffffffffff9ff7ffbfffefffffbfffffff7ffffffffffffffffffffffffffefffffffdfffffffffffffffffbfffffffffffdfffffffffffff3ff7fffffffffffffffffffffffefffffbf77cffffd5a8fffffffffffffff9ffbffbfffefffffbfffffffbffffff -ffffffffffffffffffffefffffffdfffffffffffffffffbfffffffffffdffffffffffffcfffbfffffffffffffffffffffffdfffffbf77cffffea54fffffffffffffff9ffbffbffff7ffffbfffffffbffffffffffffffffffffffffffdfffffffefffffffffffffffffbfffffffffffeffffffffffff3fffbffffffffffffffff -fffffffbfffffbf77cffffd5a8fffffffffffffff9ffbffbffff7ffffbfffffffbffffffffffffffffffffffffffdfffffffefffffffffffffffff7fffffffffffefffffffffffeffffbfffffffffffffffffffffffbfffff7f77cffffea54fffffffffffffff9ffbffbffffbffff7fffffffdffffffffffffffffffffffffff -dffffffff7ffffffffffffffff7ffffffffffff7ffffffffff9ffffdfffffffffffffffffffffff7fffff7f77cffffd5a8fffffffffffffff9ffbffbffffbffff7fffffffdffffffffffffffffffffffffffbffffffff7fffffffffdfffffefffffffffffff7ffffffffff7ffffdfffffffffffffffffffffff7fffff7f77cff -ffea54fffffffffffffff9ffbffbffffdfffeffffffffdffffffffffffffffffffffffffbffffffffbfffffffffffffffefffffffffffff7fffffffffcfffffdfffffffffffffffffffffff7fffff7f77cffffd5a8ffffffffff7ffbf9ffbffbffffdfffeffffffffeffffffffffffffffffffffffff7ffffffffdffffffffff -fffffefffffffffffffbfffffffffbfffffeffffffffffffffffffffffefffffeff77cffffea54fffffffffebffbf9ffbff7ffffefffdffffffffeffffffffffffffffffffffffff7ffffffffdfffffffffffffffdfffffffffffffbfffffffff7fffffeffffffffffffffffffffffefffffeff77cffffd5a8fffffffffddff3 -f9ffbff7ffffefffdffffffffefffffffffffffffffffffffffefffffffffefffffffffffffffdfffffffffffffdffffffffcffffffeffffffffffffffffffffffefffffeff6fcffffea54fffffffffddfebf83fbff7ffffefffdfffffffff7ffffffffffffffffffffffffeffffffffff7ffffffffffffffdfffffffffffffd -ffffffff3fffffff7fffffffffffffffffffffdfffffefeee0ffffd5a8fffffffffddfebf83fdff7fffff7ffbfffffffff7ffffffffffffffffffffffffdffffffffff7ffffffffffffffbfffffffffffffefffffffcffffffff7fffffffffffffffffffffdfffffdfeee0ffffea54fffffffffddfdbf9ffdff7fffff7ffbfff -ffffff7ffffffffffffffffffffffffdffffffffffbffffffffdfffffbfffffffffffffefffffffbffffffff7fffffffffffffffffffffbfffffdfeefcffffd5a8fffffffffddfc1f9ffdff7fffffbff7fffffffff7ffffffffffffffffffffffffdffffffffffbffffffffffffffbffffffffffffff7fffffe7ffffffffbfff -ffffffffffffffffff7fffffdfeefcffffea54fffffffffebdfbf9ffdfeffffffbff7fffffffff7ffffffffffffffffffffffffbffffffffffdffffffffffffffbffffffffffffff7fffffdfffffffffbfffffffffffffffffffff7fffffdfeefcffffd5a8ffffffffff78fbf9ffdfeffffffdff7fffffffff7fffffffffffff -fffffffffffbffffffffffdffffffffffffffbffffffffffffff7fffff3fffffffffbffffffffffffffffffffeffffffbfeefcffffea54fffffffffffdfff9ffdfeffffffdff7fffffffff7ffffffffffffffffffffffffbffffffffffdffffffffffffff7ffffffffffffffbffffeffffffffffbffffffffffffffffffffeff -ffffbfeefcffffd5a8fffffffffffffff9ffdfeffffffeff7fffffffffbffffffffffffffffffffffff7ffffffffffeffffffffffffff7ffffffffffffffbffff9ffffffffffdffffffffffffffffffffeffffffbfdefcffffea54fffffffffffffff9ffefeffffffefeffffffffffbffffffffffffffffffffffff7ffffffff -ffeffffffffffffff7ffffffffffffffbffff7ffffffffffdffffffffffffffffffffdffffffbfdefcffffd5a8fffffffffffffff9ffefefffffff7effffffffffbfffffffffffffffffffffffeffffffffffff7fffffffdffffefffffffffffffffbfffefffffffffffdffffffffffffffffffffdffffff7fdefcffffea54ff -fffffffffffff9ffefefffffff7dffffffffffdfffffffffffffffffffffffeffffffffffffbffffffffffffefffffffffffffffdfff9fffffffffffeffffffffffffffffffffbffffff7fdefcffffd5a8fffffffffffffff9ffefdfffffffbdffffffffffdfffffffffffffffffffffffeffffffffffffbffffffffffffefff -ffffffffffffdffe7fffffffffffeffffffffffffffffffffbffffff7fdefcffffea54fffffffffffffff9ffefdfffffffbdffffffffffdfffffffffffffffffffffffdffffffffffffdffffffffffffdfffffffffffffffeff9ffffffffffffeffffffffffffffffffff7ffffff7fdefcffffd5a8fffffffffffffff9ffefdf -ffffffdbffffffffffefffffffffffffffffffffffdffffffffffffeffffffffffffdfffffffffffffffeff7fffffffffffff7fffffffffffffffffff7fffffeffddfcffffea54fffffffffffffff9ffefdfffffffdbffffffffffefffffffffffffffffffffffbffffffffffffeffffffffffffdffffffffffffffff7cfffff -fffffffff7ffffffffffffffffffeffffffeffbdfcffffd5a8fffffffffffffff9fff7dfffffffdbffffffffffefffffffffffffffffffffffbfffffffffffff7fffffffffffbffffffffffffffff7bffffffffffffff7ffffffffffffffffffeffffffeffbdfcffffea54fffffffffffffff9fff7dfffffffe7fffffffffff7 -ffffffffffffffffffffff7fffffffffffff7ffffffdffffbffffffffffffffffa7ffffffffffffff7ffffffffffffffffffdffffffeffbdfcffffd5a8fffffffffffffff9fff7dfffffffe7fffffffffff7ffffffffffffffffffffff7fffffffffffffbfffffffffff7ffffffffffffffff9fffffffffffffff7ffffffffff -ffffffffbffffffdffbdfcffffea54fffffffffffffff9fff7dfffffffe7fffffffffff7ffffffffffffffffffffff7fffffffffffffbfffffffffff7ffffffffffffffff3fffffffffffffff7ffffffffffffffffffbffffffdffbdfcffffd5a8fffffffffffffff9fff7dfffffffe7fffffffffff7ffffffffffffffffffff -feffffffffffffffdfffffffffff7fffffffffffffffedfffffffffffffffbffffffffffffffffff7ffffffdffbdfcffffea54fffffffffffffff9fff7dfffffffebfffffffffffbfffffffffffffffffffffeffffffffffffffeffffffffffeffffffffffffffffddfffffffffffffffbffffffffffffffffff7ffffffdffbd -fcffffd5a8fffffffffffffff9fff7dfffffffdbfffffffffffbfffffffffffffffffffffdffffffffffffffeffffffffffeffffffffffffffff3efffffffffffffffbffffffffffffffffff7ffffffdffbdfcffffea54fffffffffffffff9fff7bfffffffddfffffffffffbfffffffffffffffffffffdfffffffffffffff7ff -fffffffefffffffffffffffcfefffffffffffffffbfffffffffffffffffefffffffdffbdfcffffd5a8fffffffffffffff9fff7bfffffffddfffffffffffbfffffffffffffffffffffdfffffffffffffff7fffffdfffdfffffffffffffff3fefffffffffffffffdfffffffffffffffffefffffffdffbdfcffffea54ffffffffff -fffff9fff7bfffffffbefffffffffffbfffffffffffffffffffffbfffffffffffffff7fffffffffdffffffffffffffefff7ffffffffffffffdfffffffffffffffffdfffffffdff7bfcffffd5a8fffffffffffffff9fffbbfffffffbefffffffffffbfffffffffffffffffffffbfffffffffffffffbfffffffffdffffffffffff -ff9fff7ffffffffffffffdfffffffffffffffffdfffffffbff7bfcffffea54fffffffffffffff9fffbbfffffffbf7ffffffffffdfffffffffffffffffffff7fffffffffffffffbfffffffffbffffffffffffff7fff7ffffffffffffffefffffffffffffffffbfffffffbff7bfcffffd5a8fffffffffffffff9fffbbfffffffbf -7ffffffffffdfffffffffffffffffffff7fffffffffffffffdfffffffffbfffffffffffffcffff7ffffffffffffffefffffffffffffffffbfffffffbff7bfcffffea54fffffffffffffff9fffbbfffffffbfbffffffffffdfffffffffffffffffffff7fffffffffffffffdfffffffffbfffffffffffffbffffbfffffffffffff -fefffffffffffffffff7fffffffbff7bfcffffd5a8fffffffffffffff9fffb7fffffff7fbffffffffffeffffffffffffffffffffeffffffffffffffffefffffffff7fffffffffffff7ffffbfffffffffffffff7ffffffffffffffff7fffffff7ff7bfcffffea54fffffffffffffff9fffb7fffffff7fdffffffffffeffffffff -ffffffffffffefffffffffffffffff7ffffdfff7ffffffffffffcfffffdfffffffffffffff7fffffffffffffffeffffffff7ff7bfcffffd5a8fffffffffffffff9fffb7fffffff7fdffffffffffeffffffffffffffffffffdfffffffffffffffff7ffffffff7ffffffffffff3fffffdfffffffffffffff7fffffffffffffffef -fffffff7fefbfcffffea54fffffffffffffff9fffd7ffffffeffdffffffffffeffffffffffffffffffffdfffffffffffffffffbfffffffeffffffffffffcffffffefffffffffffffff7fffffffffffffffdffffffff7fefbfcffffd5a8ffffffffff7fe3f9fffd7ffffffeffefffffffffff7fffffffffffffffffffdfffffff -ffffffffffdfffffffeffffffffffffbffffffefffffffffffffffbfffffffffffffffdfffffffeffefbfcffffea54fffffffffebfddf9fffd7ffffffeffefffffffffff7fffffffffffffffffffdfffffffffffffffffdfffffffdfffffffffffe7fffffff7ffffffffffffffbfffffffffffffffdfffffffeffefbfcffffd5 -a8fffffffffddfddf9fffd7ffffffdfff7ffffffffff7fffffffffffffffffffdfffffffffffffffffefffffffdfffffffffffdffffffff7ffffffffffffffbfffffffffffffffbfffffffeffef7fcffffea54fffffffffddffdf83ffd7ffffffdfff7ffffffffffbfffffffffffffffffffbfffffffffffffffffefffffffdf -ffffffffff3ffffffff7ffffffffffffffdfffffffffffffffbfffffffdffef7e0ffffd5a8fffffffffddffbf83ffcfffffffdfffbffffffffffbfffffffffffffffffffbfffffffffffffffffeffffdffbffffffffffefffffffff7ffffffffffffffdfffffffffffffff7fffffffdffdf7e0ffffea54fffffffffddff7f9ff -fefffffffbfffbffffffffffbfffffffffffffffffff7ffffffffffffffffff7ffffffbffffffffff9fffffffffbffffffffffffffdffffffffffffffeffffffffdffdf7fcffffd5a8fffffffffddfeff9fffefffffffbfffdffffffffffbfffffffffffffffffff7ffffffffffffffffff7ffffffbffffffffff7fffffffffb -ffffffffffffffdffffffffffffffeffffffffdffdf7fcffffea54fffffffffebddff9fffefffffffbfffeffffffffffbfffffffffffffffffff7ffffffffffffffffffbffffff7fffffffffcffffffffffbffffffffffffffeffffffffffffffdffffffffbffdf7fcffffd5a8ffffffffff78c1f9fffefffffff7fffeffffff -ffffbffffffffffffffffffefffffffffffffffffffbffffff7fffffffff3ffffffffffdffffffffffffffeffffffffffffffdffffffffbffdf7fcffffea54fffffffffffdfff9fffefffffff7ffff7fffffffffdffffffffffffffffffefffffffffffffffffffdffffff7ffffffffefffffffffffdffffffffffffffefffff -fffffffffbffffffffbffdf7fcffffd5a8fffffffffffffff9fffefffffff7ffff7fffffffffdffffffffffffffffffefffffffffffffffffffeffffff7ffffffff9fffffffffffefffffffffffffff7fffffffffffffbffffffff7ffdf7fcffffea54fffffffffffffff9fffeffffffefffffbfffffffffdfffffffffffffff -fffdfffffffffffffffffffefffdff7ffffffff7fffffffffffefffffffffffffff7fffffffffffff7ffffffff7ffdf7fcffffd5a8fffffffffffffff9fffcffffffefffffbfffffffffdffffffffffffffffffdffffffffffffffffffff7fffff7fffffffcffffffffffffefffffffffffffff7fffffffffffff7ffffffff7f -fdf7fcffffea54fffffffffffffff9fffcffffffefffffdfffffffffeffffffffffffffffffbffffffffffffffffffff7ffffeffffffffbfffffffffffff7ffffffffffffff7ffffffffffffefffffffff7ffdf7fcffffd5a8fffffffffffffff9fffcffffffefffffdfffffffffeffffffffffffffffffbffffffffffffffff -ffffbffffeffffffff7fffffffffffff7ffffffffffffffbffffffffffffefffffffff7ffbf7fcffffea54fffffffffffffff9fffd7fffffefffffefffffffffeffffffffffffffffffbffffffffffffffffffffbffffefffffffcffffffffffffffbffffffffffffffbffffffffffffdfffffffff7ffbeffcffffd5a8ffffff -fffffffff9fffd7fffffefffffeffffffffff7fffffffffffffffff7ffffffffffffffffffffdffffdfffffff3ffffffffffffffbffffffffffffffbffffffffffffdfffffffff7ffbeffcffffea54fffffffffffffff9fffd7fffffdfffffeffffffffff7fffffffffffffffff7ffffffffffffffffffffdffffdffffffcfff -ffffffffffffbffffffffffffffdffffffffffffbfffffffff7ffbeffcffffd5a8fffffffffffffff9fffd7fffffdffffff7fffffffff7ffffffffffffffffefffffffffffffffffffffeffdfdffffffbfffffffffffffffdffffffffffffffdffffffffffffbffffffffefffbeffcffffea54fffffffffffffff9fffd7fffff -dffffff7fffffffffbffffffffffffffffefffffffffffffffffffffeffffbfffffe7fffffffffffffffdffffffffffffffdffffffffffff7ffffffffefffbeffcffffd5a8fffffffffffffff9fffd7fffffbffffffbfffffffffbffffffffffffffffeffffffffffffffffffffff7fffbfffffdffffffffffffffffdfffffff -fffffffdffffffffffff7ffffffffefff7effcffffea54fffffffffffffff9fffdbfffffbffffffdfffffffffbffffffffffffffffdffffffffffffffffffffff7fffbfffff3ffffffffffffffffdffffffffffffffefffffffffffefffffffffdfff7effcffffd5a8fffffffffffffff9fffdbfffffbffffffdfffffffffbff -ffffffffffffffdffffffffffffffffffffffbfff7ffffefffffffffffffffffeffffffffffffffefffffffffffefffffffffdfff7effcffffea54fffffffffffffff9fffdbfffff7ffffffefffffffffbffffffffffffffffbffffffffffffffffffffffbfff7ffffdfffffffffffffffffeffffffffffffffefffffffffffd -fffffffffdfff7effcffffd5a8fffffffffffffff9fffbbfffff7fffffff7ffffffffbffffffffffffffffbffffffffffffffffffffffdfff7ffff3ffffffffffffffffff7fffffffffffffefffffffffffdfffffffffbfff7effcffffea54fffffffffffffff9fffbbfffff7fffffff7ffffffffbffffffffffffffffbfffff -fffffffffffffffffdfdeffffcfffffffffffffffffff7fffffffffffffefffffffffffbfffffffffbfff7dffcffffd5a8fffffffffffffff9fffbbffffeffffffffbffffffffdffffffffffffffff7ffffffffffffffffffffffeffeffff3fffffffffffffffffff7fffffffffffffefffffffffffbfffffffffbffefdffcff -ffea54fffffffffffffff9fffbdffffeffffffffbffffffffdffffffffffffffff7fffffffffffffffffffffff7fefffeffffffffffffffffffffbfffffffffffffefffffffffff7fffffffffbffefdffcffffd5a8fffffffffffffff9fffbdffffeffffffffdffffffffdfffffffffffffffeffffffffffffffffffffffff7f -dfff9ffffffffffffffffffffbffffffffffffff7fffffffffeffffffffff7ffefdffcffffea54fffffffffffffff9fffbdffffdffffffffdffffffffefffffffffffffffeffffffffffffffffffffffffbfdfff7ffffffffffffffffffffdffffffffffffff7fffffffffeffffffffff7ffefdffcffffd5a8ffffffffffffff -f9fffbdffffdffffffffeffffffffefffffffffffffffeffffffffffffffffffffffffbfdffcfffffffffffffffffffffdffffffffffffff7fffffffffdffffffffff7ffefdffcffffea54fffffffffffffff9fffbdffffdffffffffeffffffffefffffffffffffffdffffffffffffffffffffffffdfbff3ffffffffffffffff -fffffdffffffffffffffbfffffffffdfffffffffefffefdffcffffd5a8fffffffffffffff9fffbdffffdfffffffff7fffffffefffffffffffffffdffffffffffffffffffffffffddbfcffffffffffffffffffffffdffffffffffffffbfffffffffbfffffffffefffdfdffcffffea54fffffffffffffff9fff7dffffbffffffff -f7ffffffff7ffffffffffffffdffffffffffffffffffffffffdfbfbffffffffffffffffffffffeffffffffffffffbfffffffffbfffffffffefffdfdffcffffd5a8fffffffffffffff9fff7dffffbfffffffffbffffffff7ffffffffffffffbffffffffffffffffffffffffef7f7ffffffffffffffffffffffeffffffffffffff -bfffffffff7fffffffffefffdfdffcffffea54fffffffffffffff9fff7dffffbfffffffffbffffffff7ffffffffffffffbffffffffffffffffffffffffef7efffffffffffffffffffffffeffffffffffffffdfffffffff7fffffffffefffdfdffcffffd5a8fffffffffffff7f9fff7effff7fffffffffdffffffffbfffffffff -fffff7fffffffffffffffffffffffff77dffffffffffffffffffffffff7fffffffffffffdffffffffeffffffffffefffdfdffcffffea54ffffffffffffebf9fff7effff7fffffffffdffffffffbffffffffffffff7fffffffffffffffffffffffffaf3ffffffffffffffffffffffff7fffffffffffffdffffffffeffffffffff -efffdfbffcffffd5a8ffffffffffffddf9fff7effff7fffffffffeffffffffbffffffffffffff7fffffffffffffffffffffffffacfffffffffffffffffffffffffbfffffffffffffdffffffffdffffffffffdfffdfbffcffffea54ffffffffffffddf83ff7effff7fffffffffeffffffffbfffffffffffffefffffffffffffff -fffffffffffc3fffffffffffffffffffffffffbfffffffffffffeffffffffdffffffffffdfffdfbfe0ffffd5a8ffffffffffffddf83bf7efdfb77efdfbf7ef5fbf7efddbf7efdfbf7efdebf7efdfbf7efdfbf7efdfbf7efcfbf7efdfbf7efdfbf7efdfbf7ebdfbf7efdfbf7eedfbf7efdbbf7efdfbf7cfdf9f3ee0ffffea54ff -ffffffffffddf9fff7f7fff7ffffffffffbfffffffdfffffffffffffeffffffffffffffffffffffffff8ffffffffffffffffffffffffffdfffffffffffffeffffffff7ffffffffffbfffbfbffcffffd5a8ffffffffffffddf9ffeff7fff7ffffffffffbfffffffdfffffffffffffeffffffffffffffffffffffffff4ffffffff -ffffffffffffffffffdffffffffffffff7fffffff7ffffffffffbfffbfbffcffffea54ffffffffffffebf9ffeff7ffefffffffffffdfffffffefffffffffffffefffffffffffffffffffffffffcb7fffffffffffffffffffffffffeffffffffffffff7ffffffefffffffffffbfffbfbffcffffd5a8fffffffffffff7f9ffeff7 -ffefffffffffffdfffffffefffffffffffffdfffffffffffffffffffffffffbb7fffffffffffffffffffffffffeffffffffffffff7ffffffdfffffffffff7fffbfbffcffffea54fffffffffffffff9ffeff7ffefffffffffffefffffffefffffffffffffdffffffffffffffffffffffffe7bbfffffffffffffffffffffffffef -fffffffffffff7ffffffdfffffffffff7fffbf7ffcffffd5a8fffffffffffffff9ffeff7ffdfffffffffffefffffffefffffffffffffdffffffffffffffffffffffff9f9bffffffffffffffffffffffffff7fffffffffffffbffffffbfffffffffff7fffbf7ffcffffea54fffffffffffffff9ffeffbffdfffffffffffefffff -fff7ffffffffffffbffffffffffffffffffffffff7fbdffffffffffffffffffffffffff7fffffffffffffbffffffbffffffffffeffff7f7ffcffffd5a8fffffffffffffff9ffeffbffdffffffffffff7fffffff7ffffffffffffbfffffffffffffffffffffffcffbdffffffffffffffffffffffffffbfffffffffffffbffffff -bffffffffffeffff7f7ffcffffea54fffffffffffffff9ffeffbffdffffffffffff7fffffff7ffffffffffff7fffffffffffffffffffffffbff7effffffffffffffffffffffffffbfffffffffffffdffffff7ffffffffffeffff7f7ffcffffd5a8fffffffffffffff9ffeffbffbffffffffffffbfffffff7ffffffffffff7fff -fffffffffffffffffffe7ff7f7fffffffffffffffffffffffffbfffffffffffffdffffff7ffffffffffdffff7f7ffcffffea54fffffffffffffff9ffeffbffbffffffffffffdfffffff7ffffffffffff7ffffffffffffffffffffffdffeff7fffffffffffffffffffffffffdfffffffffffffdfffffefffffffffffdffff7f7f -fcffffd5a8fffffffffffffff9ffeffbffbffffffffffffdfffffff7fffffffffffefffffffffffffffffffffff3ffeffbfffffffffffffffffffffffffdfffffffffffffdfffffefffffffffffdffff7f7ffcffffea54fffffffffffffff9ffeffbff7ffffffffffffefffffff7fffffffffffeffffffffffffffffffffffcf -ffedfbfffffffffffffffffffffffffdfffffffffffffefffffdfffffffffffdffff7f7ffcffffd5a8fffffffffffffff9ffeffbff7fffffffffffff7ffffffbfffffffffffdffffffffffffffffffffffbfffdffdfffffffffffffffffffffffffdfffffffffffffefffffbfffffffffffdffff7f7ffcffffea54ffffffffff -fffff9ffdffdff7fffffffffffff7ffffffbfffffffffffdfffffffffffffffffffffe7fffdffdfffffffffffffffffffffffffefffffffffffffefffffbfffffffffffdfffeff7ffcffffd5a8fffffffffffffff9ffdffdff7fffffffffffffbffffffbfffffffffffdfffffffffffffffffffffdffffdffeffffffffffffff -fffffffffffefffffffffffffefffff7fffffffffffdfffeff7ffcffffea54fffffffffffffff9ffdffdfeffffffffffffffdffffffdfffffffffffbfffffffffffffffffffff3ffffbffeffffffffffffffffffffffffff7fffffffffffff7fffeffffffffffffbfffeff7ffcffffd5a8fffffffffffffff9ffdffdfeffffff -ffffffffdffffffdfffffffffffbffffffffffffffffffffefffffbfff7fffffffffffffffffffffffff7fffffffffffff7fffeffffffffffffbfffeff7ffcffffea54fffffffffffffff9ffdffdfeffffffffffffffeffffffdfffffffffffbffffffffffffffffffffdfffffbfff7fffffffffffffffffffffffff7fffffff -ffffff7fffdffffffffffffbfffefefffcffffd5a8fffffffffffffff9ffdffdfdfffffffffffffff7fffffdfffffffffff7ffffffffffffffffffff3fffff7dff7fffffffffffffffffffffffffbfffffffffffff7fffbffffffffffff7fffefefffcffffea54fffffffffffffff9ffdffefdfffffffffffffff7fffffeffff -fffffff7fffffffffffffffffffcffffff7fffbfffffffffffffffffffffffffbfffffffffffff7fffbffffffffffff7fffdfefffcffffd5a8fffffffffffffff9ffdffefdfffffffffffffffbfffffeffffffffffeffffffffffffffffffff3ffffff7fffbfffffffffffffffffffffffffdfffffffffffff7fff7fffffffff -fff7fffdfefffcffffea54fffffffffffffff9ffdffefdfffffffffffffffbfffffeffffffffffefffffffffffffffffffeffffffeffffdfffffffffffffffffffffffffdfffffffffffff7ffeffffffffffffeffffdfefffcffffd5a8fffffffffffffff9ffdffefdfffffffffffffffdffffff7fffffffffefffffffffffff -ffffff9ffffffeffffdfffffffffffffffffffffffffdfffffffffffffbffeffffffffffffeffffdfefffcffffea54fffffffffffffff9ffdffefdfffffffffffffffdffffff7fffffffffdfffffffffffffffffff7ffffffeffffefffffffffffffffffffffffffdfffffffffffffbffdffffffffffffeffffdfefffcffffd5 -a8fffffffffffffff9ffdffefdfffffffffffffffdffffff7fffffffffdffffffffffffffffffcfffffffdfffff7ffffffffffffffffffffffffefffffffffffffbffdffffffffffffdffffbfefffcffffea54fffffffffffffff9ffbffefbfffffffffffffffeffffff7fffffffffbffffffffffffffffff3fffffffdfdfff7 -ffffffffffffffffffffffffefffffffffffffdffbffffffffffffdffffbfdfffcffffd5a8fffffffffffffff9ffbfff7bffffffffffffffff7fffffbfffffffffbfffffffffffffffffcffffffffbfffffbffffffffffffffffffffffffefffffffffffffdffbffffffffffffdffffbfdfffcffffea54fffffffffffffff9ff -bfff7bffffffffffffffffbfffffbfffffffffbfffffffffffffffffbffffffffbfffffbfffffffffffffffffffffffff7ffffffffffffdff7ffffffffffffbffffbfdfffcffffd5a8fffffffffffffff9ffbfff7bffffffffffffffffbfffffbfffffffffbfffffffffffffffff7ffffffffbfffffdffffffffffffffffffff -fffff7ffffffffffffdff7ffffffffffffbffffbfdfffcffffea54fffffffffffffff9ffbfff77ffffffffffffffffdfffffdfffffffffbffffffffffffffffefffffffff7fffffdfffffffffffffffffffffffffbffffffffffffefefffffffffffffbffffbfdfffcffffd5a8fffffffffffffff9ffbfff77ffffffffffffff -ffdfffffdfffffffff7ffffffffffffffffdfffffffff7fffffefffffffffffffffffffffffffbffffffffffffefdfffffffffffff7ffffbfdfffcffffea54ffffffffff7fe3f9ffbfffb7ffffffffffffffffefffffdfffffffff7ffffffffffffffff3fffffffff7fffffefffffffffffffffffffffffffbffffffffffffef -dfffffffffffff7ffffbfdfffcffffd5a8fffffffffebfddf9ffbfffb7ffffffffffffffffefffffeffffffffeffffffffffffffffcffffffffff7fdffff7ffffffffffffffffffffffffdffffffffffffefbfffffffffffff7ffff7fdfffcffffea54fffffffffddfddf9ffbfffaffffffffffffffffff7ffffeffffffffeff -ffffffffffffff3ffffffffff7ffffffbffffffffffffffffffffffffdfffffffffffff77fffffffffffff7ffff7fdfffcffffd5a8fffffffffddffdf83f7fffaffffffffffffffffffbffffeffffffffefffffffffffffffefffffffffff7ffffffbffffffffffffffffffffffffefffffffffffff77fffffffffffff7ffff7 -fbffe0ffffea54ffffffff05dffbf83f7fffaffffffffffffffffffbffffeffffffffdfffffffffffffff9ffffffffffefffffffdffffffffffffffffffffffffefffffffffffff6fffffffffffffefffff7fbffe0ffffd5a8fffffffffddff7f9ff7fff9ffffffffffffffffffdffffeffffffffdfffffffffffffff7ffffff -ffffefffffffdffffffffffffffffffffffffefffffffffffff9fffffffffffffefffff7fbfffcffffea54fffffffffddfeff9ff7fffdffffffffffffffffffeffffeffffffffbffffffffffffffcfffffffffffefffffffefffffffffffffffffffffffff7ffffffffffff9fffffffffffffeffffeffbfffcffffd5a8ffffff -fffebddff9ff7fffdffffffffffffffffffeffffeffffffffbffffffffffffffbfffffffffffdfffffffefffffffffffffffffffffffff7ffffffffffffbfffffffffffffdffffeffbfffcffffea54ffffffffff78c1f9ff7fffdfffffffffffffffffff7ffff7fffffffbfffffffffffffe7fffffffffffdffdfffff7ffffff -ffffffffffffffffffbffffffffffffbfffffffffffffdffffeffbfffcffffd5a8fffffffffffdfff9ff7fff9fffffffffffffffffff7ffff7fffffff7fffffffffffff9ffffffffffffbffffffff7ffffffffffffffffffffffffbffffffffffff5fffffffffffffdffffeffbfffcffffea54fffffffffffffff9ff7fff9fff -ffffffffffffffffbffff7fffffff7fffffffffffff7ffffffffffffbffffffffbffffffffffffffffffffffffbffffffffffff5fffffffffffffbffffeffbfffcffffd5a8fffffffffffffff9ff7fffafffffffffffffffffffdffffbffffffefffffffffffffcfffffffffffffbffffffffbffffffffffffffffffffffffbf -ffffffffffedfffffffffffffbffffdffbfffcffffea54fffffffffffffff9ff7fffafffffffffffffffffffdffffbffffffefffffffffffffbfffffffffffff7ffffffffdffffffffffffffffffffffffdfffffffffffeefffffffffffffbffffdffbfffcffffd5a8fffffffffffffff9ff7fff6fffffffffffffffffffefff -fbffffffefffffffffffff7fffffffffffff7ffffffffdffffffffffffffffffffffffdfffffffffffdefffffffffffff7ffffdffbfffcffffea54fffffffffffffff9ff7fff6ffffffffffffffffffff7fffbffffffdffffffffffffcffffffffffffff7ffffffffeffffffffffffffffffffffffdfffffffffffbeffffffff -fffff7ffffdffbfffcffffd5a8fffffffffffffff9ff7fff6ffffffffffffffffffff7fffdffffffdffffffffffff3fffffffffffffefffdfffffeffffffffffffffffffffffffefffffffffffbefffffffffffff7ffffdff7fffcffffea54fffffffffffffff9feffff77fffffffffffffffffffbfffdffffffbfffffffffff -cffffffffffffffeffffffffff7fffffffffffffffffffffffefffffffffff7f7fffffffffffefffffbff7fffcffffd5a8fffffffffffffff9fefffef7fffffffffffffffffffdfffdffffffbfffffffffffbffffffffffffffeffffffffffbffffffffffffffffffffffff7fffffffffeff7fffffffffffefffffbff7fffcff -ffea54fffffffffffffff9fefffef7fffffffffffffffffffdfffeffffffbffffffffffe7ffffffffffffffdffffffffffbffffffffffffffffffffffff7fffffffffeff7fffffffffffefffffbff7fffcffffd5a8fffffffffffffff9fefffef7fffffffffffffffffffefffeffffffbffffffffffdfffffffffffffffdffff -ffffffdffffffffffffffffffffffff7fffffffffdffbfffffffffffefffffbff7fffcffffea54fffffffffffffff9fefffef7ffffffffffffffffffff7ffeffffffbffffffffff3fffffffffffffffdffffffffffeffffffffffffffffffffffffbfffffffffbffbfffffffffffefffffbff7fffcffffd5a8ffffffffffffff -f9fefffdf7ffffffffffffffffffff7fff7fffff7fffffffffcffffffffffffffffbffffffffffeffffffffffffffffffffffffbfffffffff7ffbfffffffffffdfffff7ff7fffcffffea54fffffffffffffff9fefffdf7ffffffffffffffffffffbfff7fffff7fffffffffbffffffffffffffffbfffdfffffff7ffffffffffff -fffffffffffdfffffffff7ffbfffffffffffdfffff7feffffcffffd5a8fffffffffffffff9fefffdf7ffffffffffffffffffffdfff7ffffefffffffffe7ffffffffffffffffbfffffffffff7fffffffffffffffffffffffdffffffffefffbfffffffffffdfffff7feffffcffffea54fffffffffffffff9fefffdfbffffffffff -ffffffffffdfffbffffefffffffffdfffffffffffffffffbfffffffffff7fffffffffffffffffffffffdffffffffefffbfffffffffffbfffff7feffffcffffd5a8fffffffffffffff9fefffbfbffffffffffffffffffffefffbffffefffffffff3fffffffffffffffffbfffffffffffbfffffffffffffffffffffffdffffffff -dfffbfffffffffffbfffff7feffffcffffea54fffffffffffffff9fefffbfbffffffffffffffffffffefffbffffdffffffffeffffffffffffffffff7fffffffffffbfffffffffffffffffffffffeffffffffbfffbfffffffffff7fffff7feffffcffffd5a8fffffffffffffff9fdfffbfbfffffffffffffffffffff7ffdffffd -ffffffffdffffffffffffffffff7fffffffffffdfffffffffffffffffffffffeffffffff7fffdfffffffffff7fffff7feffffcffffea54fffffffffffffff9fdfffbfbfffffffffffffffffffffbffdffffbffffffff3ffffffffffffffffff7fffffffffffdfffffffffffffffffffffffeffffffff7fffdfffffffffff7fff -ff7feffffcffffd5a8fffffffffffffff9fdfffbfdfffffffffffffffffffffdffdffffbfffffffcffffffffffffffffffeffffdfffffffeffffffffffffffffffffffff7ffffffeffffdffffffffffefffffeffeffffcffffea54fffffffffffffff9fdfffbfdfffffffffffffffffffffdffdffffbfffffff3ffffffffffff -ffffffeffffffffffffeffffffffffffffffffffffff7ffffffeffffeffffffffffefffffeffdffffcffffd5a8fffffffffffffff9fdfffbfdfffffffffffffffffffffeffeffff7ffffffefffffffffffffffffffdfffffffffffff7fffffffffffffffffffffffbffffffdffffeffffffffffefffffeffdffffcffffea54ff -fffffffffffff9fdfffbfdfffffffffffffffffffffeffeffff7ffffff9fffffffffffffffffffdfffffffffffff7fffffffffffffffffffffffbffffffbffffeffffffffffdfffffeffdffffcffffd5a8fffffffffffffff9fdfffbfdffffffffffffffffffffff7fefffefffffff7fffffffffffffffffffdfffffffffffff -bfffffffffffffffffffffffbffffffbffffeffffffffffdfffffeffdffffcffffea54fffffffffffffff9fdfff7feffffffffffffffffffffffbfefffeffffffcffffffffffffffffffffbfffffffffffffdfffffffffffffffffffffffdffffff7fffff7fffffffffbfffffdffdffffcffffd5a8fffffffffffffff9fdfff7 -feffffffffffffffffffffffdfefffeffffffbffffffffffffffffffffbfffffffffffffdfffffffffffffffffffffffdfffffeffffff7fffffffffbfffffdffdffffcffffea54ffffffffff7ffbf9fdfff7feffffffffffffffffffffffdfefffdfffffe7ffffffffffffffffffffbffffdffffffffefffffffffffffffffff -ffffefffffdffffff7fffffffffbfffffdffdffffcffffd5a8fffffffffebffbf9fdfff7ff7fffffffffffffffffffffeff7ffdfffffdfffffffffffffffffffff7ffffffffffffff7ffffffffffffffffffffffefffffdffffffbfffffffff7fffffdffbffffcffffea54fffffffffddff3f9fdffefff7fffffffffffffffff -fffff7f7ffdfffffbfffffffffffffffffffff7ffffffffffffff7ffffffffffffffffffffffefffffbffffffbfffffffff7fffffbffbffffcffffd5a8fffffffffddfebf83dffefff7ffffffffffffffffffffffbf7ffdffffe7ffffffffffffffffffffefffffffffffffffbfffffffffffffffffffffff7ffffbffffffbff -fffffff7fffffbffbfffe0ffffea54ffffffff05dfebf83bffefff7ffffffffffffffffffffffbfbffbffff9fffffffffffffffffffffefffffffffffffffbfffffffffffffffffffffff7ffff7ffffffbffffffffeffffffbffbfffe0ffffd5a8fffffffffddfdbf9fbffefff7ffffffffffffffffffffffdfbffbfffe7ffff -fffffffffffffffffefffffffffffffffdfffffffffffffffffffffff7fffefffffffdffffffffeffffffbffbffffcffffea54fffffffffddfc1f9fbffdfffbffffffffffffffffffffffdfbff7fffdffffffffffffffffffffffdfffffffffffffffdfffffffffffffffffffffff7fffdfffffffdffffffffeffffffbffbfff -fcffffd5a8fffffffffebdfbf9fbffdfffbffffffffffffffffffffffefdff7fff3ffffffffffffffffffffffdfffffdfffffffffefffffffffffffffffffffffbfffbfffffffdffffffffeffffff7ff7ffffcffffea54ffffffffff78fbf9fbffdfffbfffffffffffffffffffffff7dff7ffefffffffffffffffffffffffdff -fffffffffffffefffffffffffffffffffffffbfffbfffffffeffffffffeffffff7ff7ffffcffffd5a8fffffffffffdfff9fbffdfffbfffffffffffffffffffffffbdfefff9fffffffffffffffffffffffbffffffffffffffff7ffffffffffffffffffffffdfff7fffffffeffffffffdffffff7ff7ffffcffffea54ffffffffff -fffff9fbffbfffdfffffffffffffffffffffffdefefff7fffffffffffffffffffffffbffffffffffffffff7ffffffffffffffffffffffdfff7fffffffeffffffffdffffff7ff7ffffcffffd5a8fffffffffffffff9fbffbfffdfffffffffffffffffffffffdefdffcffffffffffffffffffffffffbffffffffffffffffbfffff -fffffffffffffffffeffefffffffff7fffffffbfffffefff7ffffcffffea54fffffffffffffff9fbffbfffdfffffffffffffffffffffffeefdffbffffffffffffffffffffffffbffffffffffffffffbffffffffffffffffffffffeffdfffffffff7fffffffbfffffefff7ffffcffffd5a8fffffffffffffff9fbffbfffdfffff -ffffffffffffffffffef7bff7ffffffffffffffffffffffffbffffffffffffffffdfffffffffffffffffffffff7fbfffffffff7fffffffbfffffefff7ffffcffffea54fffffffffffffff9fbffbfffdffffffffffffffffffffffff77bfcfffffffffffffffffffffffff7fffffdffffffffffefffffffffffffffffffffff7f -7fffffffff7fffffff7fffffefff7ffffcffffd5a8fffffffffffffff9fbff7fffdffffffffffffffffffffffffb77f3fffffffffffffffffffffffff7ffffffffffffffffefffffffffffffffffffffff7f7fffffffffbfffffff7fffffdfff7ffffcffffea54fffffffffffffff9fbff7fffdffffffffffffffffffffffffd -b7cfffffffffffffffffffffffffeffffffffffffffffff7ffffffffffffffffffffffbeffffffffffbfffffff7fffffdfff7ffffcffffd5a8fffffffffffffff9fbff7fffdffffffffffffffffffffffffeb7bfffffffffffffffffffffffffeffffffffffffffffff7ffffffffffffffffffffffbdffffffffffbffffffeff -ffffdffefffffcffffea54fffffffffffffff9fbff7fffdfffffffffffffffffffffffff367fffffffffffffffffffffffffeffffffffffffffffffbffffffffffffffffffffffddffffffffffdffffffeffffffdffefffffcffffd5a8fffffffffffffff9f7feffffefffffffffffffffffffffffff8dffffffffffffffffff -ffffffffdffffffffffffffffffbffffffffffffffffffffffdbffffffffffdffffffdffffffdffefffffcffffea54fffffffffffffff9f7feffffefffffffffffffffffffffffff83ffffffffffffffffffffffffffdffffffffffffffffffdffffffffffffffffffffffd7ffffffffffdffffffdffffffbffefffffcffffd5 -a8fffffffffffffff9f7feffffefffffffffffffffffffffffffcfffffffffffffffffffffffffffbffffffdfffffffffffeffffffffffffffffffffffefffffffffffdffffffbffffffbffefffffcffffea54fffffffffffffff9f7feffffefffffffffffffffffffffffff8fffffffffffffffffffffffffffbfffffffffff -fffffffeffffffffffffffffffffffcfffffffffffdffffffbffffffbffefffffcffffd5a8fffffffffffffff9f7fdfffff7ffffffffffffffffffffffff4fffffffffffffffffffffffffffbfffffffffffffffffff7fffffffffffffffffffffafffffffffffdffffffbffffffbffdfffffcffffea54fffffffffffffff9f7 -fdfffff7fffffffffffffffffffffffcc7ffffffffffffffffffffffffff7fffffffffffffffffffbfffffffffffffffffffffafffffffffffdffffff7ffffffbffdfffffcffffd5a8fffffffffffffff9f7fdfffff7fffffffffffffffffffffff3b3ffffffffffffffffffffffffff7fffffffffffffffffffbfffffffffff -ffffffffff77ffffffffffeffffff7ffffffbffdfffffcffffea54fffffffffffffff9f7fdfffff7ffffffffffffffffffffffefb5fffffffffffffffffffffffffeffffffffffffffffffffdffffffffffffffffffffef7ffffffffffefffffefffffffbffdfffffcffffd5a8fffffffffffffff9f7fdfffffbffffffffffff -ffffffffff9f76fffffffffffffffffffffffffeffffffffffffffffffffdffffffffffffffffffffefbffffffffffefffffefffffff7ffdfffffcffffea54fffffffffffffff9f7fbfffffbffffffffffffffffffffff7f7afffffffffffffffffffffffffefffffffdffffffffffffeffffffffffffffffffffdfbffffffff -fff7ffffdfffffff7ffdfffffcffffd5a8fffffffffffffff9f7fbfffffbfffffffffffffffffffffcfefb7ffffffffffffffffffffffffdffffffffffffffffffffeffffffffffffffffffffbfbfffffffffff7ffffdfffffff7ffbfffffcffffea54fffffffffffffff9effbfffffbfffffffffffffffffffffbfefbbfffff -fffffffffffffffffffdfffffffffffffffffffff7fffffffffffffffffff7fdfffffffffff7ffffdfffffff7ffbfffffcffffd5a8fffffffffffffff9effbfffffdffffffffffffffffffffe7fefbdffffffffffffffffffffffffdfffffffffffffffffffff7ffffffffffffffffffeffdfffffffffff7ffffbffffffefffb -fffffcffffea54fffffffffffffff9effbfffffdffffffffffffffffffff9ffdfbeffffffffffffffffffffffffdfffffffffffffffffffffbffffffffffffffffffdffefffffffffffbffffbffffffefffbfffffcffffd5a8fffffffffffffff9effbfffffdffffffffffffffffffff7ffdfdf7fffffffffffffffffffffffb -fffffffffffffffffffffdffffffffffffffffffbffefffffffffffbffffbffffffefffbfffffcffffea54fffffffffffffff9effbfffffdfffffffffffffffffffcfffdfdf7fffffffffffffffffffffffbfffffffffffffffffffffdffffffffffffffffff7fff7ffffffffffbffff7ffffffefffbfffffcffffd5a8ffffff -fffffffff9effbfffffefffffffffffffffffffbfffbfdfbfffffffffffffffffffffff7fffffffdfffffffffffffeffffffffffffffffff7fff7ffffffffffdffff7ffffffdfff7fffffcffffea54ffffffffff7fe3f9eff7fffffefffffffffffffffffff7fffbfefdfffffffffffffffffffffff7ffffffffffffffffffff -ff7ffffffffffffffffeffffbffffffffffdffff7ffffffdfff7fffffcffffd5a8fffffffffebfddf9eff7fffffeffffffffffffffffffcffff7fefefffffffffffffffffffffff7ffffffffffffffffffffff7ffffffffffffffffdffffbffffffffffdfffefffffffdfff7fffffcffffea54fffffffffddfdff9eff7fffffe -ffffffffffffffffff3ffff7feff7fffffffffffffffffffffefffffffffffffffffffffffbffffffffffffffffbffffdffffffffffefffefffffffbfff7fffffcffffd5a8fffffffffddfdff82ff7ffffff7ffffffffffffffffcffffefff7fbfffffffffffffffffffffefffffffffffffffffffffffdffffffffffffffff7 -ffffdffffffffffefffdfffffffbfff7ffffe0ffffea54ffffffff05dfc3f82fefffffff7ffffffffffffffffbffffefff7fdfffffffffffffffffffffdfffffffffffffffffffffffefffffffffffffffefffffeffffffffffefffdfffffffbffefffffe0ffffd5a8fffffffffddfddf9efefffffff7fffffffffffffffe7ff -ffdfff7fdfffffffffffffffffffffdfffffffffffffffffffffffefffffffffffffffdfffffefffffffffff7ffdfffffffbffeffffffcffffea54fffffffffddfddf9efefffffffbfffffffffffffffdfffffdfffbfefffffffffffffffffffffdffffffffdfffffffffffffff7ffffffffffffffbfffffefffffffffff7ffb -fffffff7ffeffffffcffffd5a8fffffffffebdddf9efefffffffbfffffffffffffff3fffffdfffbff7ffffffffffffffffffffbffffffffffffffffffffffff7ffffffffffffff7fffffefffffffffff7ffbfffffff7ffeffffffcffffea54ffffffffff78e3f9efefffffffbffffffffffffffeffffffbfffdffbffffffffff -ffffffffffbffffffffffffffffffffffffbffffffffffffff7ffffff7ffffffffffbff7fffffff7ffeffffffcffffd5a8fffffffffffdfff9dfdfffffffbffffffffffffff9ffffffbfffdffdffffffffffffffffffff7ffffffffffffffffffffffffbfffffffffffffefffffff7ffffffffffbff7ffffffefffeffffffcff -ffea54fffffffffffffff9dfdfffffffdffffffffffffff7ffffffbfffdffeffffffffffffffffffff7ffffffffffffffffffffffffdfffffffffffffdfffffff7ffffffffffbfefffffffefffeffffffcffffd5a8fffffffffffffff9dfdfffffffdfffffffffffffefffffff7fffefff7fffffffffffffffffff7fffffffff -fffffffffffffffefffffffffffffbfffffffbffffffffffbfefffffffefffeffffffcffffea54fffffffffffffff9dfdfffffffdfffffffffffff9fffffff7fffefffbffffffffffffffffffeffffffffffffffffffffffffff7ffffffffffff7fffffffbffffffffffbfdfffffffdfffdffffffcffffd5a8ffffffffffffff -f9dfbfffffffefffffffffffff7ffffffefffff7ffbffffffffffffffffffefffffffffdffffffffffffffffbfffffffffffeffffffffdffffffffffbfbfffffffdfffdffffffcffffea54fffffffffffffff9dfbfffffffeffffffffffffcfffffffefffff7ffdffffffffffffffffffeffffffffffffffffffffffffffbfff -ffffffffdffffffffdffffffffffdfbfffffffdfffdffffffcffffd5a8fffffffffffffff9dfbfffffffeffffffffffffbfffffffdfffff7ffeffffffffffffffffffdffffffffffffffffffffffffffdfffffffffffbffffffffeffffffffffdf7fffffffbfffdffffffcffffea54fffffffffffffff9dfbfffffffefffffff -ffffe7fffffffdfffffbfff7fffffffffffffffffdffffffffffffffffffffffffffefffffffffffbffffffffeffffffffffdf7fffffffbfffdffffffcffffd5a8fffffffffffffff9dfbffffffff7ffffffffff9ffffffffdfffffbfffbfffffffffffffffffbffffffffffffffffffffffffffefffffffffff7fffffffff7f -ffffffffdf7fffffffbfffbffffffcffffea54fffffffffffffff9df7ffffffff7fffffffffe7ffffffffbfffffdfffdfffffffffffffffffbfffffffffffffffffffffffffff7fffffffffeffffffffff7fffffffffeeffffffffbfffbffffffcffffd5a8fffffffffffffff9df7ffffffff7fffffffffdfffffffffbfffffd -fffefffffffffffffffffbfffffffffffffffffffffffffff7fffffffff9ffffffffffbfffffffffeeffffffffbfffbffffffcffffea54fffffffffffffff9df7ffffffffbfffffffff3fffffffff7fffffdffff7ffffffffffffffff7fffffffffdfffffffffffffffffbfffffffff7ffffffffffbffffffffff6ffffffffbf -ffbffffffcffffd5a8fffffffffffffff9df7ffffffffbffffffffcffffffffff7fffffeffffbffffffffffffffff7fffffffffffffffffffffffffffdffffffffefffffffffffdffffffffff5ffffffff7fff7ffffffcffffea54fffffffffffffff9bf7ffffffffbffffffff3fffffffffeffffffeffffdfffffffffffffff -effffffffffffffffffffffffffffeffffffffdfffffffffffdffffffffff5ffffffff7fff7ffffffcffffd5a8fffffffffffffff9bf7ffffffffdfffffffeffffffffffefffffff7fffefffffffffffffffeffffffffffffffffffffffffffffeffffffffdfffffffffffeffffffffffbffffffff7fff7ffffffcffffea54ff -fffffffffffff9bf7ffffffffdfffffffdffffffffffdfffffff7ffff7ffffffffffffffdfffffffffffffffffffffffffffff7fffffffbfffffffffffeffffffffff3fffffffeffff7ffffffcffffd5a8fffffffffffffff9befffffffffdfffffffbffffffffffdfffffffbffffbffffffffffffffdfffffffffffffffffff -ffffffffff7fffffff7ffffffffffff7fffffffff5fffffffefffefffffffcffffea54fffffffffffffff9befffffffffeffffffe7ffffffffffbfffffffbffffdffffffffffffffbfffffffffffffffffffffffffffffbffffffcfffffffffffff7ffffffffedfffffffefffefffffffcffffd5a8fffffffffffffff9beffff -fffffeffffff9fffffffffffbfffffffbffffe7fffffffffffffbffffffffffdffffffffffffffffffdffffffbfffffffffffffbffffffffddfffffffdfffefffffffcffffea54fffffffffffffff9befffffffffeffffff7fffffffffffbfffffffbfffffbfffffffffffff7fffffffffffffffffffffffffffffeffffff7ff -fffffffffffbffffffffdefffffffdfffefffffffcffffd5a8fffffffffffffff9beffffffffff7ffffcffffffffffff7fffffffdfffffdfffffffffffff7ffffffffffffffffffffffffffffff7ffffeffffffffffffffdffffffffbefffffffdfffefffffffcffffea54fffffffffffffff9bdffffffffff7ffffbffffffff -ffff7fffffffdfffffefffffffffffff7ffffffffffffffffffffffffffffffbffffdffffffffffffffdffffffff7efffffffbfffefffffffcffffd5a8fffffffffffffff9bdffffffffff7fffe7fffffffffffeffffffffdfffffeffffffffffffefffffffffffffffffffffffffffffffbffffbffffffffffffffdffffffff -7efffffffbfffefffffffcffffea54fffffffffffffff9bdffffffffff7fff9ffffffffffffdffffffffeffffff7fffffffffffefffffffffffffffffffffffffffffffdfffe7ffffffffffffffefffffffefefffffffbfffefffffffcffffd5a8fffffffffffffff9bdffffffffff7fff7ffffffffffffdffffffffeffffffb -fffffffffffdfffffffffffffffffffffffffffffffdfffdfffffffffffffffefffffffeff7ffffff7fffefffffffcffffea54fffffffffffffff9bdffffffffff7ffefffffffffffffbfffffffff7fffffcfffffffffffdfffffffffffdfffffffffffffffffffefffbfffffffffffffffefffffffdff7ffffff7fffdffffff -fcffffd5a8fffffffffffffff9bbffffffffffbffdfffffffffffffbfffffffff7ffffff7ffffffffffbffffffffffffffffffffffffffffffff7ff7ffffffffffffffff7ffffffdffbfffffeffffdfffffffcffffea54ffffffffff7fe3f9bbffffffffffbff3fffffffffffff7fffffffffbffffffbffffffffffbffffffff -ffffffffffffffffffffffffbfefffffffffffffffff7ffffffbffbfffffeffffdfffffffcffffd5a8fffffffffebfddf9bbffffffffffdfcffffffffffffff7fffffffffbffffffcffffffffff7ffffffffffffffffffffffffffffffffdfdfffffffffffffffffbffffffbffbfffffeffffdfffffffcffffea54fffffffffd -dfddf97bffffffffffdf3fffffffffffffeffffffffffdfffffff7ffffffffefffffffffffffffffffffffffffffffffefbfffffffffffffffffdffffff7ffdfffffdffffbfffffffcffffd5a8fffffffffddfddf83bffffffffffdcffffffffffffffeffffffffffdfffffffbffffffffefffffffffffffffffffffffffffff -fffff77fffffffffffffffffdfffffefffdfffffdffffbffffffe0ffffea54ffffffff05dfe3f837ffffffffffebffffffffffffffdffffffffffefffffffcffffffffdffffffffffffffffffffffffffffffffffaffffffffffffffffffefffffefffdfffffdffffbffffffe0ffffd5a8fffffffffddfddf977ffffffffffe7 -ffffffffffffffdffffffffffeffffffff7fffffffdffffffffffffdfffffffffffffffffffff9ffffffffffffffffffefffffdfffefffffbffff7fffffffcffffea54fffffffffddfddf977ffffffffffd7ffffffffffffffbfffffffffff7fffffffbfffffffbffffffffffffffffffffffffffffffffff5ffffffffffffff -fffff7ffffbfffefffffbffff7fffffffcffffd5a8fffffffffebdddf977ffffffffff37ffffffffffffffbfffffffffff7fffffffdfffffffbfffffffffffffffffffffffffffffffffeefffffffffffffffffff7ffffbfffefffffbffff7fffffffcffffea54ffffffffff78e3f977fffffffffefbffffffffffffff7fffff -ffffffbfffffffefffffffbfffffffffffffffffffffffffffffffff9f7ffffffffffffffffffbffff7fffefffffbfffeffffffffcffffd5a8fffffffffffdfff96ffffffffffdfbffffffffffffff7fffffffffffbffffffff3ffffff7fffffffffffffffffffffffffffffffff7fbffffffffffffffffffdffff7ffff7ffff -7fffeffffffffcffffea54fffffffffffffff96ffffffffff3fbfffffffffffffeffffffffffffdffffffffdffffff7ffffffffffffffffffffffffffffffffeffdffffffffffffffffffdfffefffff7ffff7fffeffffffffcffffd5a8fffffffffffffff96fffffffffeffdfffffffffffffdffffffffffffdffffffffeffff -fefffffffffffffffffffffffffffffffff9ffeffffffffffffffffffefffdfffffbfffeffffeffffffffcffffea54fffffffffffffff96fffffffff9ffdfffffffffffffdffffffffffffefffffffff3ffffdfffffffffffffdfffffffffffffffffff7fff7fffffffffffffffffefffdfffffbfffeffffdffffffffcffffd5 -a8fffffffffffffff96ffffffffe7ffefffffffffffffbffffffffffffefffffffffdffffdffffffffffffffffffffffffffffffffcffff7ffffffffffffffffff7ffbfffffdfffdffffdffffffffcffffea54fffffffffffffff96ffffffff9fffefffffffffffffbfffffffffffff7ffffffffe7fffbffffffffffffffffff -ffffffffffffffbffffbffffffffffffffffff7ff7fffffdfffdffffdffffffffcffffd5a8fffffffffffffff96ffffffff7ffff7ffffffffffff7fffffffffffffbfffffffffbfffbfffffffffffffffffffffffffffffffe7ffffdffffffffffffffffffbfeffffffefffbffffbffffffffcffffea54fffffffffffffff95f -ffffffcfffff7ffffffffffff7fffffffffffffbfffffffffcfff7fffffffffffffffffffffffffffffff9fffffeffffffffffffffffffbfdffffffefffbffffbffffffffcffffd5a8fffffffffffffff95fffffffbfffffbfffffffffffeffffffffffffffdffffffffff7feffffffffffffffffffffffffffffffff7ffffff -7fffffffffffffffffdfbffffffefff7ffffbffffffffcffffea54fffffffffffffff8dffffffe7fffffdfffffffffffeffffffffffffffdffffffffff9fefffffffffffffffffffffffffffffffefffffffbfffffffffffffffffef7fffffff7ff7ffff7ffffffffcffffd5a8fffffffffffffff8dffffffdffffffdfffffff -ffffdffffffffffffffdffffffffffe7dffffffffffffffdffffffffffffffffdfffffffdffffffffffffffffff77fffffff7fefffff7ffffffffcffffea54fffffffffffffff8dffffff3ffffffefffffffffffbffffffffffffffefffffffffff9bfffffffffffffffffffffffffffffff3fffffffeffffffffffffffffff6 -ffffffffbfdffffefffffffffcffffd5a8fffffffffffffff8bfffffefffffffefffffffffff7ffffffffffffffefffffffffffebffffffffffffffffffffffffffffffcfffffffff7fffffffffffffffff9ffffffffbfdffffefffffffffcffffea54fffffffffffffff8bfffff9fffffffeffffffffffeffffffffffffffff -7fffffffffff3ffffffffffffffffffffffffffffff3fffffffffbfffffffffffffffffbffffffffdfbffffefffffffffcffffd5a8fffffffffffffff8bfffff7ffffffff7fffffffffeffffffffffffffffbffffffffffedfffffffffffffffffffffffffffffcffffffffffdfffffffffffffffff5ffffffffdfbffffdffff -fffffcffffea54fffffffffffffff8bffffcfffffffff7fffffffffdffffffffffffffffdffffffffffde7ffffffffffffffffffffffffffff3ffffffffffeffffffffffffffffeeffffffffef7ffffdfffffffffcffffd5a8fffffffffffffff8bffff3fffffffffbfffffffffdffffffffffffffffeffffffffffbf9ffffff -fffffffffffffffffffffcffffffffffff7fffffffffffffffdf7fffffffef7ffffdfffffffffcffffea54fffffffffffffff87fffeffffffffffbfffffffffbfffffffffffffffff7fffffffffbfe7ffffffffffffdfffffffffffff3ffffffffffff9fffffffffffffffbfbffffffff6fffffdfffffffffcffffd5a8ffffff -fffffffff87fff9ffffffffffdfffffffff7fffffffffffffffffbfffffffff7ff8fffffffffffffffffffffffffcfffffffffffffefffffffffffffff7fdffffffff6fffffdfffffffffcffffea54fffffffffffffff87ffe7ffffffffffeffffffffeffffffffffffffffffbfffffffff7fff3ffffffffffffffffffffffff -3ffffffffffffff7fffffffffffffeffeffffffff9fffffbfffffffffcffffd5a8fffffffffffffff87ff9ffffffffffff7fffffffdffffffffffffffffffdffffffffeffffcfffffffffffffffffffffffcfffffffffffffff9fffffffffffff9ffeffffffffbfffffbfffffffffcffffea54fffffffffffffff87ff7ffffff -ffffffbfffffffbffffffffffffffffffeffffffff9fffff3ffffffffffffffffffffff3fffffffffffffffefffffffffffff7fff7fffffff9fffff7fffffffffcffffd5a8fffffffffffffff8ffefffffffffffffdfffffff7fffffffffffffffffff7fffffff7fffffcfffffffffffffffffffffcfffffffffffffffff3fff -ffffffffeffffbfffffff5ffffeffffffffffcffffea54fffffffffffffff8ffdfffffffffffffeffffffeffffffffffffffffffff7ffffffefffffff3fffffffffffffffffffe3fffffffffffffffffcfffffffffff9ffffdffffffceffffeffffffffffcffffd5a8fffffffffffffff8ff3ffffffffffffff7fffffdffffff -ffffffffffffffbffffffdfffffffc3ffffffffdfffffffff1fffffffffffffffffff3ffffffffff7ffffdffffffbf7fffdffffffffffcffffea54fffffffffffffff8fcfffffffffffffff7fffff3ffffffffffffffffffffcffffffbffffffffc3ffffffffffffffff8ffffffffffffffffffffcfffffffffcfffffeffffff -7fbfffbffffffffffcffffd5a8fffffffffffffff8fbfffffffffff9fffbffffeffff9fffffffffffff9fff7ffffe7fff9fffffc3ffffff9fffffff87ffff9fffffffffffffcff3ffffffff3fcffff3ffffcffbcff7ffffffffffcffffea54fffffffffffff7f9e7fffffffffff9fffcffff9ffff9fffffffffffff9fff9ffff -9ffff9ffffffc0fffff9ffffff07fffff9fffffffffffffcffcfffffffcffcffffcffffbffdcfefffffffffffcffffd5a8ffffffffffffe7f9dffffffffffff9ffff3ffe7ffff9fffffffffffff9fffe7ffe7ffff9ffffffff03fff9ffff00fffffff9fffffffffffffcfff0fffffe3ffcfffff3fff7ffecfefffffffffffcff -ffea54ffffffffffffd7f93ffffffffffff9ffffcff9fffff9fffffffffffff9ffff9ff9fffff9fffffffffc0ff9ff80fffffffff9fffffffffffffcffff07ffe1fffcfffffcffcffff0fdfffffffffffcffffd5a8fffffffffffff7f80000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000ffffea54fffffffffff077fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffd5a8fffffffffffff7 -fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffc1ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffff7fffffffffffdff8ffffffffffdff8ffffffffffdffeffffffffffdff8fffffffffffbfffffffffffeffc7ffffffffff7ffbffffffffff7fe3ffffffffff7fe3fffffffffffdffffd5a8fffffffffffffffe7fffff -ffffffaff77fffffffffaff77fffffffffaffeffffffffffaff77ffffffffff5fffffffffffd7fbbfffffffffebffbfffffffffebfddfffffffffebfddfffffffffff9ffffea54fffffffffffffffd7fffffffffff77f77fffffffff77f7ffffffffff77fcffffffffff77f77fffffffffeefffffffffffbbfbbfffffffffddf -f3fffffffffddfdffffffffffddfddfffffffffff5ffffd5a8ffffffffffffffff7fffffffffff77f77fffffffff77f7ffffffffff77faffffffffff77ff7fffffffffeefffffffffffbbffbfffffffffddfebfffffffffddfdffffffffffddfddfffffffffffdffffea54ffffffffffffff077fffffffffc177f8ffffffffc1 -77f0ffffffffc177faffffffffc177feffffffffffeefffffffffffbbff7fffffffffddfebfffffffffddfc3fffffffffddfe3fffffffffffdffffd5a8ffffffffffffffff7fffffffffff77f77fffffffff77f77fffffffff77f6ffffffffff77fdffffffffffeefffffffffffbbfeffffffffffddfdbfffffffffddfddffff -fffffddfddfffffffffffdffffea54ffffffffffffffff7fffffffffff77f77fffffffff77f77fffffffff77f07fffffffff77fbffffffffffeefffffffffffbbfdffffffffffddfc1fffffffffddfddfffffffffddfddfffffffffffdffffd5a8ffffffffffffffff7fffffffffffaf777fffffffffaf777fffffffffaf7eff -ffffffffaf77fffffffffff5fffffffffffd7bbffffffffffebdfbfffffffffebdddfffffffffebdddfffffffffffdffffea54fffffffffffffffc1fffffffffffde38ffffffffffde38ffffffffffde3effffffffffde307ffffffffffbfffffffffffef183ffffffffff78fbffffffffff78e3ffffffffff78e3ffffffffff -f07fffd5a8ffffffffffffffffffffffffffffff7fffffffffffff7fffffffffffff7fffffffffffff7ffffffffffffffffffffffffffbfffffffffffffdfffffffffffffdfffffffffffffdffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffff5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffd500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffea54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5aaaaaa6aaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r37/packages/plot/gnuplotex6.ps Index: r37/packages/plot/gnuplotex6.ps ================================================================== --- r37/packages/plot/gnuplotex6.ps +++ /dev/null @@ -1,366 +0,0 @@ -%!%!PS-Adobe-2.0 EPSF-1.2 -%%Title: printscreen.ps3 -%%Creator: DECW$PRINTSCREEN V2 EFT-1 -%%CreationDate: 27-OCT-1993 -%%Pages: 1 -%%BoundingBox:83 92 529 699 -%%EndComments -%%EndProlog -%%Page: 1 1 -15 dict begin -/temp-save save def -128 93 translate -%% 90 rotate -%%605 444 scale -302 222 scale -/scale { pop pop } bind def -/showpage {} def -%%BeginDocument: Image Services -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Bitmap Image -%%Creator: VAS V1.1 -%%BoundingBox: 0 0 158 117 -%%Pages: 1 1 -%%EndComments -/DEC_IMG_dict 50 dict def -DEC_IMG_dict begin -/inch {72 mul} def end -%%EndProlog -%%Page: 1 1 -save -DEC_IMG_dict begin -/pic 83 string def -/afterimage { -} def -/btimage -{npix nscans nbits [npix 0 0 nscans neg 0 nscans] -{currentfile pic readhexstring pop} -image afterimage} bind def -/npix 658 def -/nscans 484 def -/nbits 1 def -npix inch 300 div nscans inch 300 div scale -btimage -5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555500aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa805555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555536aaaaaa6aaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa8055555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -55555555555555555555555555555555555555555555555555555555555500aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaaa15400004000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001501a9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffea815555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555511a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6aa155555555555555555555555555555555555555555555555555555555555555555555555555fffffffffffd5555555555555555555555555555555555555555555555 -5555555555555555555555555555555521a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae0fffffe7fceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9bffa6a8155555555555555555555555555555555555555555555555555555555 -555555555555555555ce7ffffe7fcd55555555555555555555555555555555555555555555555555555555555555555555555555555501a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9fc999266186aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaa6aaa9baa26aa1555ffd555555555555555555555555555555555555555555555555555555555555555555559fc499124ccd555555555555555555555555555555555555555555555555555555555555555555555f5555555521a9baa26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaa984c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26aa1555555555555555555555555555555555555555555555555555555555555555555555555559e4c99324ccd555555555555555555555555555555555555555555555555555555555555555555555c5555 -555501a9b0026aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9e4c99324cceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6a8a9baa26a8155555555555555555555555555555555555555555555555555555555555555555555555555ce4c91124c -c955555555555555555555555555555555555555555555555555555555555555555555555555555500a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae14cc92661e6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9baa26a8055555555 -555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd55555555555555555555555555555555555555555555555555555555555555555555555550055500a9aaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffffff3ffffeaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6aaa9aaaa6a8055555555555555555555555555555555555555555555555555555555555555555555555555ffffff3ffffd55555555555555555555555555555555555555555555555555555555555555555555555555555500a900004000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000100006a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000004000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc054ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffc3ffffff9ffcffffffffffffffff3fe3ffdfdfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffeaa054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedffffffdffb7ffffbf7fffffffedfddffdfdfdfff7fffffffffffffffffffffffffffffff -ffffffffffffffffffffffd508a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedffffffdffbfffffbfffffffffeffddffdfdfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffea805477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffed8e38e3dffbdd4e30e78d38ff8efffd4e1fdb9d387fffffffffffffffffffffffffffffffffffffffffffffffffffffd520a877ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe375d75ddff0dd35dbf774d77f743ffb35dfd7dcd77fffffffffffffffffffffffffffffffffffffffffffff -ffffffffea805477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed0679c1dffbdd75fbf775d9ff76fff775dfcfddd77fffffffffffffffffffffffffffffffffffffffffffffffffffffd530a867ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed7fbedfdffb -dd75fbf775deff76ffef75dfd7ddd77fffffffffffffffffffffffffffffffffffffffffffffffffffffeaa85497ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed75d75ddffbd975db7775d77f76ffdf75dfdbddd77fffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8 -f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38e38e38ffbe5763ce38dd8ff8effc1761fdd8dd87fffffffffffffffffffffffffffffffffffffffffffffffffffffeaa05477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a88fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8854ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8854ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8854ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd538a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd538a8ffffffffff7fe3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffea8054fffffffffebfddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8fffffffffddfdfffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaa054fffffffffddfdffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000001ffffd500a8fffffffffddfc3f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffeabc54fffffffffddfddf9fffffffffffff9fffffffffffff9fffffffffffff9ffffffffffff -f9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffd514a8fffffffffddfddf9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffff -eab054fffffffffebdddf9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffd500a8ffffffffff78e3f9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9ffffffffffff -f9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffeab054fffffffffffdfff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd530a8ffffffff -fffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8854fffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa054fffffffffffffff9ffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcffffea8854fffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9454fffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffcffffd52aa8fffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeabe54fffffffffffffff9ffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffcffffea8d54fffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd51ba8fffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffffffffffff80007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcffffd500a8fffffffffffffff9fffffffffffffffffffffffffffe7fff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffffffffffff9ffffe7ffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffffffffffffff7fffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054ff -fffffffffffff9ffffffffffffffffffffffffffcfffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffffffbfffffffcfffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffffffffffe7ffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9 -fffffffffffffffffffffffff9fffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffffffffff7fffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffffefffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffff -ffffffffffdfffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffffbfffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffffffffbfffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffff7fff -fffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffffffffefffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffffffffffdfffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffffffffbffffffffffffff7fff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffffffffff7ffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcffffea8054fffffffffffffff9ffffffffffffffffffffffefffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffffffdfffffffffffffffefffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffffffdffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd5 -0ea8fffffffffffffff9ffffffffffffffffffffffbffffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9654ffffffffff7ffbf9ffffffffffffffffffffff7ffffffffffffffffdffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd52ca8fffffffffebffbf9fffffffffffffffffffffefffffffffffffffffefffffffff00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8654fffffffffd -dff3f9fffffffffffffffffffffdfffffffffffffffffeffffffffcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd50ea8fffffffffddfebf83ffffffffffffffffffffdffffffffffffffffff7fffffff3fffff1fffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffeaa654fffffffffddfebf83ffffffffffffffffffffbffffffffffffffffffbffffff8ffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffd500a8fffffffffddfdbf9ffffffff -fffffffffffff7ffffffffffffffffffdfffffe7fffffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffddfc1f9fffffffffffffffffffff7ffffffffffffffffffefffff9fffffffff3fffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffebdfbf9ffffffffffffffffffffeffffffffffffffffffff7fffe7fffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeab654ffffffffff78fbf9ffffffffffffffffffffdf -fffffffffffffffffffbfffdfffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffdfff9ffffffffffffffffffffbffffffffffffffffffffdfff3fffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffffbffffffffffffffffffffdffeffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffffffffffffffffffff7fffffffffffffff -fffffeffdfffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9ffffffffffffffffffff7fffffffffffffffffffff7f3fffffffffffff9ffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcffffd501a8fffffffffffffff9fffffffffffffffffffeffffffffffffffffffffffbeffffffffffffffefffffffffe1e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9154fffffffffffffff9fffffffffffffffffffeffffffffffffffffffffffddffffff -fffffffff7fffffffe1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9fffffffffffffffffffdffffffffffffffffffffffe3fffffffffffffff9ffffffe1ffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc -ffffeaa154fffffffffffffff9fffffffffffffffffffdffffffffffffffffffffffeffffffffffffffffefffffe1fffffe3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9fffffffffffffffffffbffffffffffffffffffffffd7ffffffffffffffff7fff -e1fffffffc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9fffffffffffffffffffbffffffffffffffffffffffbbffffffffffffffffbffe1fffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8ffff -fffffffffff9fffffffffffffffffff7ffffffffffffffffffffff7bffffffffffffffffdff9fffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154fffffffffffffff9fffffffffffffffffff7ffffffffffffffffffffff7dffffffffffffffffefe7fffffffffffc7f -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffffffffffffffffffeffffffffffffffffffffffefdfffffffffffffffff7dfffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9ff -ffffffffffffffffeffffffffffffffffffffffdfefffffffffffffffffbbffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9ffffffffffffffffffdffffffffffffffffffffffbff7ffffffffffffffffc7ffffffffffffffcffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffdffffffffffffffffffffff7ff7ffffffffffffffffc7fffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffff -ffdfffffffffffffffffffffefffbffffffffffffffff3bfffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffffbfffffffffffffffffffffefffdfffffffffffffffefdfffffffffffffffcfffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffffbfffffffffffffffffffffdfffdfffffffffffffffdfeffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffffffff7fffffffffff -ffffffffffbfffefffffffffffffff3ff7fffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffffffff7fffffffffffffffffffff7ffff7fffffffffffffefffbfffffffffffffffeffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffefffffffffffffffffffffefffff7fffffffffffffdfffdffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffffefffffffffffffffffffffdffff -fbfffffffffffffbfffeffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffdfffffffffffffffffffffdfffffbfffffffffffff7ffff7fffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffcffffd500a8fffffffffffffff9fffffffffffffffffdfffffffffffffffffffffbfffffdffffffffffffefffff7ffffffffffffffff7ffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffcffffea8054fffffffffffffff9fffffffffffffffffbfffffffffffffffffffff7fffffeffffffffffff -dfffffbffffffffffffffffbffffffffffffffffffffffffffffffffffff9e0ffffffffffffffffffcffffd520a8fffffffffffffff9fffffffffffffffffbffffffffffffffffffffeffffffeffffffffffffbfffffdffffffffffffffffdfffffffffffffffffffffffffffffffffffc7ff07ffffffffffffffffcffffea88 -54fffffffffffffff9fffffffffffffffff7ffffffffffffffffffffefffffff7fffffffffff7fffffeffffffffffffffffeffffffffffffffffffffffffffffffffffe3ffff81fffffffffffffffcffffd500a8fffffffffffffff9fffffffffffffffff7ffffffffffffffffffffdfffffffbffffffffffeffffffefffffff -ffffffffff7fffffffffffffffffffffffffffffffff9ffffffe0ffffffffffffffcffffeaa054fffffffffffffff9ffffffffffffffffefffffffffffffffffffffbfffffffbffffffffffdfffffff7ffffffffffffffffbffffffffffffffffffffffffffffffffc7ffffffff1fffffffffffffcffffd500a8ffffffffffff -fff9ffffffffffffffffefffffffffffffffffffffbfffffffdffffffffffbfffffffbffffffffffffffffdfffffffffffffffffffffffffffffffe3fffffffffe7fffffffffffe0ffffeab054fffffffffffffff9ffffffffffffffffefffffffffffffffffffff7fffffffeffffffffff7fffffffdffffffffffffffffefff -ffffffffffffffffffffffffffff9fffffffffffbfffffffffff9cffffd528a8fffffffffffffff9ffffffffffffffffdfffffffffffffffffffff7fffffffefffffffffeffffffffdfffffffffffffffff7fffffffffffffffffffffffffffffc7fffffffffffcffffffffffc7cffffea8054fffffffffffffff9ffffffffff -ffffffdffffffffffffffffffffefffffffff7ffffffffdffffffffefffffffffffffffffbffffffffffffffffffffffffffffe3fffffffffffff3ffffffffe3fcffffd520a8fffffffffffffff9ffffffffffffffffbffffffffffffffffffffdfffffffff7ffffffffbfffffffff7ffffffffffffffffdffffffffffffffff -ffffffffffff9ffffffffffffffdffffffff9ffcffffea8054fffffffffffffff9ffffffffffffffffbffffffffffffffffffffdfffffffffbffffffff7fffffffffbffffffffffffffffefffffffffffffffffffffffffffe7ffffffffffffffe7ffffffc7ffcffffd508a8ffffffffff7fe3f9ffffffffffffffffbfffffff -fffffffffffffbfffffffffdfffffffeffffffffffbfffffffffffffffff7ffffffffffffffffffffffffff9ffffffffffffffffbfffffe3fffcffffea8054fffffffffebfddf9ffffffffffffffff7ffffffffffffffffffff7fffffffffdfffffffdffffffffffdfffffffffffffffffbffffffffffffffffffffffffff7ff -ffffffffffffffcfffff9ffffcffffd508a8fffffffffddfddf9ffffffffffffffff7ffffffffffffffffffff7fffffffffefffffffdffffffffffefffffffffffffffffdfffffffffffffffffffffffffeffffffffffffffffff7fffc7ffffcffffea8054fffffffffddffdf83ffffffffffffffeffffffffffffffffffffef -ffffffffff7ffffffbfffffffffff7ffffffffffffffffefffffffffffffffffffffffff9ffffffffffffffffff9fff3ffffe0ffffd508a8fffffffffddffbf83ffffffffffffffeffffffffffffffffffffdfffffffffff7ffffff7fffffffffffbfffffffffffffffff7ffffffffffffffffffffffff7fffffffffffffffff -fe7fcfffffe0ffffeab854fffffffffddff7f9fffffffffffffffdffffffffffffffffffffdfffffffffffbfffffeffffffffffffbfffffffffffffffffbfffffffffffffffffffffffcffffffffffffffffffffbfbffffffcffffd500a8fffffffffddfeff9fffffffffffffffdffffffffffffffffffffbfffffffffffdfff -ffdffffffffffffdfffffffffffffffffdfffffffffffffffffffffffbffffffffffffffffffffce7ffffffcffffeab854fffffffffebddff9fffffffffffffffdffffffffffffffffffffbfffffffffffdfffffbffffffffffffefffffffffffffffffefffffffffffffffffffffff7fffffffffffffffffffff5fffffffcff -ffd500a8ffffffffff78c1f9fffffffffffffffbffffffffffffffffffff7fffffffffffefffff7fffffffffffff7fffffffffffffffff7fffffffffffffffffffffcffffffffffffffffffffff1fffffffcffffea8054fffffffffffdfff9fffffffffffffffbfffffffffffffffffffefffffffffffff7fffeffffffffffff -ff7fffffffffffffffffbfffffffffffffffffffffbfffffffffffffffffffffee7ffffffcffffd520a8fffffffffffffff9fffffffffffffff7fffffffffffffffffffefffffffffffff7fffeffffffffffffffbfffffffffffffffffdfffffffffffffffffffff7fffffffffffffffffffff9fbffffffcffffea8054ffffff -fffffffff9fffffffffffffff7fffffffffffffffffffdfffffffffffffbfffdffffffffffffffdfffffffffffffffffeffffffffffffffffffffeffffffffffffffffffffff7fcffffffcffffd53ca8fffffffffffffff9fffffffffffffff7fffffffffffffffffffbfffffffffffffdfffbffffffffffffffefffffffffff -fffffff7fffffffffffffffffffdfffffffffffffffffffffcfff7fffffcffffea9454fffffffffffffff9ffffffffffffffeffffffffffffffffffffbfffffffffffffdfff7fffffffffffffff7fffffffffffffffffbfffffffffffffffffffbfffffffffffffffffffffbfffbfffffcffffd530a8fffffffffffffff9ffff -ffffffffffeffffffffffffffffffff7fffffffffffffeffeffffffffffffffff7fffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffff7fffdfffffcffffea8054fffffffffffffff9ffffffffffffffeffffffffffffffffffff7ffffffffffffff7fdffffffffffffffffbfffffffffffffffffeffffff -ffffffffffffefffffffffffffffffffffeffffe7ffffcffffd530a8fffffffffffffff9ffffffffffffffdfffffffffffffffffffefffffffffffffff7fdffffffffffffffffdffffffffffffffffff7fffffffffffffffffdfffffffffffffffffffffdfffffbffffcffffeab054fffffffffffffff9ffffffffffffffdfff -ffffffffffffffffefffffffffffffffbfbffffffffffffffffeffffffffffffffffffbfffffffffffffffffbfffffffffffffffffffffbfffffdffffcffffd508a8fffffffffffffff9ffffffffffffffdfffffffffffffffffffdfffffffffffffffbf7ffffffffffffffffeffffffffffffffffffbfffffffffffffffff7f -ffffffffffffffffffff7fffffeffffcffffea8054fffffffffffffff9ffffffffffffffbfffffffffffffffffffbfffffffffffffffdf7fffffffffffffffff7fffffffffffffffffdffffffffffffffffefffffffffffffffffffffcfffffff7fffcffffd520a8fffffffffffffff9ffffffffffffffbfffffffffffffffff -ffbfffffffffffffffeeffffffffffffffffffbfffffffffffffffffeffffffffffffffffdfffffffffffffffffffffbfffffffbfffcffffea8054fffffffffffffff9ffffffffffffffbfffffffffffffffffff7fffffffffffffffedffffffffffffffffffdffffffffffffffffff7fffffffffffffffbffffffffffffffff -fffff7fffffffcfffcffffd508a8fffffffffffffff9ffffffffffffffbfffffffffffffffffff7ffffffffffffffff5ffffffffffffffffffdffffffffffffffffff7fffffffffffffff7ffffffffffffffffffffefffffffff7ffcffffea8054fffffffffffffff9ffffffffffffff7ffffffffffffffffffeffffffffffff -fffff3ffffffffffffffffffeffffffffffffffffffbffffffffffffffefffffffffffffffffffffdfffffffffbffcffffd514a8fffffffffffffff9ffffffffffffff7ffffffffffffffffffdfffffffffffffffff3fffffffffffffffffff7fffffffffffffffffdffffffffffffffdfffffffffffffffffffffbfffffffff -dffcffffeaaa54fffffffffffffff9ffffffffffffff7ffffffffffffffffffdfffffffffffffffff3fffffffffffffffffffbfffffffffffffffffeffffffffffffffbfffffffffffffffffffff7fffffffffeffcffffd53ea8fffffffffffffff9fffffffffffffefffffffffffffffffffbffffffffffffffffedffffffff -fffffffffffbffffffffffffffffff7fffffffffffff7ffffffffffffffffffffefffffffffff7fcffffeaa154fffffffffffffff9fffffffffffffefffffffffffffffffffbffffffffffffffffdefffffffffffffffffffdffffffffffffffffff7ffffffffffffefffffffffffffffffffffdfffffffffffbfcffffd50da8 -fffffffffffffff9fffffffffffffefffffffffffffffffff7ffffffffffffffffdefffffffffffffffffffeffffffffffffffffffbffffffffffffdfffffffffffffffffffffbfffffffffffdfcffffea9b54fffffffffffffff9fffffffffffffdfffffffffffffffffff7ffffffffffffffffbf7fffffffffffffffffff7f -ffffffffffffffffdffffffffffffbfffffffffffffffffffff7fffffffffffefcffffd500a8fffffffffffffff9fffffffffffffdffffffffffffffffffefffffffffffffffff7f7fffffffffffffffffff7fffffffffffffffffeffffffffffffbffffffffffffffffffffefffffffffffff7cffffea8054ffffffffffffff -f9fffffffffffffdffffffffffffffffffefffffffffffffffff7fbfffffffffffffffffffbfffffffffffffffffeffffffffffff7ffffffffffffffffffffdfffffffffffffbcffffd500a8fffffffffffffff9fffffffffffffbffffffffffffffffffdffffffffffffffffeffdfffffffffffffffffffdfffffffffffffff -fff7ffffffffffefffffffffffffffffffffbfffffffffffffdcffffea8054fffffffffffffff9fffffffffffffbffffffffffffffffffdffffffffffffffffdffdfffffffffffffffffffeffffffffffffffffffbffffffffffdfffffffffffffffffffff7fffffffffffffecffffd500a8fffffffffffffff9ffffffffffff -fbffffffffffffffffffbffffffffffffffffdffefffffffffffffffffffeffffffffffffffffffdffffffffffbffffffffffffffffffffefffffffffffffff4ffffea8054fffffffffffffff9fffffffffffffbffffffffffffffffffbffffffffffffffffbffeffffffffffffffffffff7fffffffffffffffffeffffffffff -7ffffffffffffffffffffdfffffffffffffff8ffffd500a8fffffffffffffff9fffffffffffff7ffffffffffffffffff7ffffffffffffffff7fff7fffffffffffffffffffbfffffffffffffffffefffffffffefffffffffffffffffffffbfffffffffffffffcffffea8054fffffffffffffff9fffffffffffff7ffffffffffff -fffffefffffffffffffffff7fff7fffffffffffffffffffdffffffffffffffffff7ffffffffdfffffffffffffffffffff7fffffffffffffffcffffd500a8fffffffffffffff9fffffffffffff7fffffffffffffffffeffffffffffffffffeffffbfffffffffffffffffffdffffffffffffffffffbffffffffbffffffffffffff -ffffffeffffffffffffffffcffffea8054fffffffffffffff9fffffffffffff7fffffffffffffffffdffffffffffffffffdffffdfffffffffffffffffffeffffffffffffffffffdffffffff7ffffffffffffffffffffdffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffeffffffffffffffffffdffffffff -ffffffffdffffdffffffffffffffffffff7fffffffffffffffffeffffffff7ffffffffffffffffffffbffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffeffffffffffffffffffbffffffffffffffffbffffeffffffffffffffffffff7ffffffffffffffffff7ffffffefffffffffffffffffffff7fffffff -fffffffffcffffd500a8fffffffffffffff9ffffffffffffeffffffffffffffffffbffffffffffffffff7fffff7fffffffffffffffffffbffffffffffffffffff7ffffffdffffffffffffffffffffefffffffffffffffffcffffea8054fffffffffffffff9ffffffffffffeffffffffffffffffff7ffffffffffffffff7fffff -7fffffffffffffffffffdffffffffffffffffffbffffffbffffffffffffffffffffdfffffffffffffffffcffffd500a8fffffffffffffff9ffffffffffffdffffffffffffffffff7fffffffffffffffeffffffbfffffffffffffffffffeffffffffffffffffffdffffff7ffffffffffffffffffffbfffffffffffffffffcffff -ea8054fffffffffffff7f9ffffffffffffdfffffffffffffffffeffffffffffffffffdffffffbfffffffffffffffffffeffffffffffffffffffefffffefffffffffffffffffffff7fffffffffffffffffcffffd500a8ffffffffffffebf9ffffffffffffdfffffffffffffffffeffffffffffffffffdffffffdfffffffffffff -fffffff7ffffffffffffffffff7ffffeffffffffffffffffffffeffffffffffffffffffcffffea8054ffffffffffffddf9ffffffffffffbfffffffffffffffffdffffffffffffffffbffffffeffffffffffffffffffffbffffffffffffffffff7ffffdffffffffffffffffffffeffffffffffffffffffcffffd500a8ffffffff -ffffddf83fffffffffffbfffffffffffffffffdffffffffffffffff7ffffffeffffffffffffffffffffdffffffffffffffffffbffffbffffffffffffffffffffdfffffffffffffffffe0ffffea8054ffffffffffffddf83bf7efdfbf7ebdfbf7efdfbf7efdfbb7efdfbf7efdfbf7e7dfbf7ef5fbf7efdfbf7efdfbf7eddfbf7e -fdfbf7efdfbf5efdf3f7efdfbf7efdfbf7efdfbf7efdfbf7efdfbf7ee0ffffd500a8ffffffffffffddf9ffffffffffff7fffffffffffffffffbfffffffffffffffeffffffffbfffffffffffffffffffeffffffffffffffffffefffefffffffffffffffffffff7ffffffffffffffffffcffffea8e54ffffffffffffddf9ffffff -ffffff7fffffffffffffffff7fffffffffffffffdffffffffbffffffffffffffffffff7ffffffffffffffffff7ffdffffffffffffffffffffefffffffffffffffffffcffffd516a8ffffffffffffebf9ffffffffffff7fffffffffffffffff7fffffffffffffffdffffffffdffffffffffffffffffffbffffffffffffffffffb -ffdffffffffffffffffffffdfffffffffffffffffffcffffeaac54fffffffffffff7f9ffffffffffff7ffffffffffffffffeffffffffffffffffbffffffffeffffffffffffffffffffbffffffffffffffffffdffbffffffffffffffffffffbfffffffffffffffffff8ffffd506a8fffffffffffffff9fffffffffffeffffffff -fffffffffeffffffffffffffff7ffffffffeffffffffffffffffffffdffffffffffffffffffeff7ffffffffffffffffffff7fffffffffffffffffff4ffffea8e54fffffffffffffff9fffffffffffefffffffffffffffffdffffffffffffffff7fffffffff7fffffffffffffffffffefffffffffffffffffff7effffffffffff -ffffffffefffffffffffffffffffecffffd526a8fffffffffffffff9fffffffffffefffffffffffffffffdfffffffffffffffeffffffffff7ffffffffffffffffffff7ffffffffffffffffffbdffffffffffffffffffffdfffffffffffffffffffdcffffea8054fffffffffffffff9fffffffffffdfffffffffffffffffbffff -fffffffffffeffffffffffbffffffffffffffffffff7ffffffffffffffffffbbffffffffffffffffffffbfffffffffffffffffffbcffffd500a8fffffffffffffff9fffffffffffdfffffffffffffffffbfffffffffffffffdffffffffffdffffffffffffffffffffbffffffffffffffffffdbffffffffffffffffffff7fffff -ffffffffffffff7cffffea8054fffffffffffffff9fffffffffffdfffffffffffffffff7fffffffffffffffdffffffffffdffffffffffffffffffffdffffffffffffffffffe7fffffffffffffffffffefffffffffffffffffffefcffffd536a8fffffffffffffff9fffffffffffbfffffffffffffffff7fffffffffffffffbff -ffffffffeffffffffffffffffffffeffffffffffffffffffe7fffffffffffffffffffdfffffffffffffffffffdfcffffea8054fffffffffffffff9fffffffffffbffffffffffffffffeffffffffffffffffbfffffffffff7fffffffffffffffffffeffffffffffffffffffdbfffffffffffffffffffbfffffffffffffffffffb -fcffffd500a8fffffffffffffff9fffffffffffbffffffffffffffffeffffffffffffffff7fffffffffff7ffffffffffffffffffff7fffffffffffffffffbdfffffffffffffffffffbfffffffffffffffffff7fcffffeaa154fffffffffffffff9fffffffffff7ffffffffffffffffdffffffffffffffff7fffffffffffbffff -ffffffffffffffffbfffffffffffffffff7efffffffffffffffffff7ffffffffffffffffffeffcffffd501a8fffffffffffffff9fffffffffff7ffffffffffffffffdfffffffffffffffeffffffffffffdffffffffffffffffffffdffffffffffffffffeff7fffffffffffffffffefffffffffffffffffffdffcffffea8154ff -fffffffffffff9fffffffffff7ffffffffffffffffdfffffffffffffffeffffffffffffdffffffffffffffffffffdffffffffffffffffdffbfffffffffffffffffdfffffffffffffffffffbffcffffd511a8fffffffffffffff9fffffffffff7ffffffffffffffffbfffffffffffffffdffffffffffffeffffffffffffffffff -ffeffffffffffffffffdffdfffffffffffffffffbfffffffffffffffffff7ffcffffeaa154fffffffffffffff9ffffffffffefffffffffffffffffbfffffffffffffffdfffffffffffff7ffffffffffffffffffff7fffffffffffffffbffefffffffffffffffff7ffffffffffffffffffefffcffffd521a8fffffffffffffff9 -ffffffffffefffffffffffffffff7fffffffffffffffbfffffffffffff7ffffffffffffffffffffbfffffffffffffff7fff7fffffffffffffffefffffffffffffffffffdfffcffffea8154fffffffffffffff9ffffffffffefffffffffffffffff7fffffffffffffff7fffffffffffffbffffffffffffffffffffdffffffffff -ffffeffff7fffffffffffffffdfffffffffffffffffffbfffcffffd501a8fffffffffffffff9ffffffffffdfffffffffffffffff7fffffffffffffff7fffffffffffffdffffffffffffffffffffdffffffffffffffdffffbfffffffffffffffbfffffffffffffffffff7fffcffffeaa154fffffffffffffff9ffffffffffdfff -fffffffffffffefffffffffffffffeffffffffffffffdffffffffffffffffffffeffffffffffffffbffffdfffffffffffffff7ffffffffffffffffffcffffcffffd521a8fffffffffffffff9ffffffffffdffffffffffffffffefffffffffffffffdffffffffffffffefffffffffffffffffffff7fffffffffffff7ffffeffff -ffffffffffefffffffffffffffffffbffffcffffeaa154fffffffffffffff9ffffffffffdffffffffffffffffdfffffffffffffffdffffffffffffffefffffffffffffffffffffbfffffffffffff7fffff7fffffffffffffdfffffffffffffffffff7ffffcffffd501a8fffffffffffffff9ffffffffffbffffffffffffffffd -fffffffffffffffbfffffffffffffff7ffffffffffffffffffffbffffffffffffeffffffbfffffffffffffbffffffffffffffffffefffffcffffea8154fffffffffffffff9ffffffffffbffffffffffffffffdfffffffffffffffbfffffffffffffffbffffffffffffffffffffdffffffffffffdffffffdfffffffffffff7fff -fffffffffffffffdfffffcffffd500a8fffffffffffffff9ffffffffffbffffffffffffffffbfffffffffffffff7fffffffffffffffbffffffffffffffffffffeffffffffffffbffffffefffffffffffff7ffffffffffffffffffbfffffcffffea8054fffffffffffffff9ffffffffffbffffffffffffffffbffffffffffffff -effffffffffffffffdfffffffffffffffffffff7fffffffffff7ffffffeffffffffffffefffffffffffffffffff7fffffcffffd500a8fffffffffffffff9ffffffffffbffffffffffffffff7ffffffffffffffeffffffffffffffffefffffffffffffffffffffbfffffffffff7fffffff7fffffffffffdffffffffffffffffff -effffffcffffea8054fffffffffffffff9ffffffffff7ffffffffffffffff7ffffffffffffffdffffffffffffffffefffffffffffffffffffffdffffffffffeffffffffbfffffffffffbffffffffffffffffffdffffffcffffd500a8fffffffffffffff9ffffffffff7ffffffffffffffff7ffffffffffffffbfffffffffffff -ffff7ffffffffffffffffffffeffffffffffdffffffffdfffffffffff7ffffffffffffffffff3ffffffcffffea8054fffffffffffffff9ffffffffff7fffffffffffffffefffffffffffffffbfffffffffffffffffbfffffffffffffffffffff7fffffffffbffffffffeffffffffffeffffffffffffffffffefffffffcffffd5 -00a8fffffffffffffff9ffffffffff7fffffffffffffffefffffffffffffff7fffffffffffffffffdfffffffffffffffffffffbfffffffff7fffffffff7fffffffffdffffffffffffffffffdfffffffcffffea8054fffffffffffffff9ffffffffff7fffffffffffffffdfffffffffffffff7fffffffffffffffffdfffffffff -ffffffffffffdffffffffeffffffffff9fffffffffbffffffffffffffffff3fffffffcffffd500a8fffffffffffffff9fffffffffeffffffffffffffffdffffffffffffffeffffffffffffffffffefffffffffffffffffffffeffffffffeffffffffffefffffffff7fffffffffffffffffeffffffffcffffea8054ffffffffff -fffff9fffffffffeffffffffffffffffbffffffffffffffefffffffffffffffffff7ffffffffffffffffffffeffffffffdfffffffffff7fffffffeffffffffffffffffffdffffffffcffffd500a8fffffffffffffff9fffffffffeffffffffffffffffbffffffffffffffdfffffffffffffffffffbfffffffffffffffffffff7 -fffffffbfffffffffffbfffffff9ffffffffffffffffffbffffffffcffffeaa054fffffffffffffff9fffffffffeffffffffffffffffbffffffffffffffdfffffffffffffffffffbfffffffffffffffffffffbfffffff7fffffffffffdfffffff7fffffffffffffffffe7ffffffffcffffd508a8fffffffffffffff9ffffffff -feffffffffffffffff7ffffffffffffffbfffffffffffffffffffdfffffffffffffffffffffdffffffeffffffffffffeffffffeffffffffffffffffffdfffffffffcffffea8054fffffffffffffff9fffffffffdffffffffffffffff7ffffffffffffffbfffffffffffffffffffefffffffffffffffffffffeffffffdfffffff -ffffff7fffffdffffffffffffffffffbfffffffffcffffd520a8ffffffffff7fe3f9fffffffffdfffffffffffffffefffffffffffffff7ffffffffffffffffffff7fffffffffffffffffffff7fffffbfffffffffffff9fffffbfffffffffffffffffe7fffffffffcffffea8054fffffffffebfddf9fffffffffdffffffffffff -fffefffffffffffffff7ffffffffffffffffffffbfffffffffffffffffffffbfffff7fffffffffffffefffff7fffffffffffffffffdffffffffffcffffd530a8fffffffffddfddf9fffffffffdfffffffffffffffdffffffffffffffefffffffffffffffffffffbfffffffffffffffffffffdffffefffffffffffffff7fffeff -ffffffffffffffffbffffffffffcffffeaa854fffffffffddffdf83ffffffffbfffffffffffffffdffffffffffffffdfffffffffffffffffffffdfffffffffffffffffffffe7fffdfffffffffffffffbfff9ffffffffffffffffff7fffffffffe0ffffd500a8ffffffff05dffbf83ffffffffbfffffffffffffffbffffffffff -ffffdfffffffffffffffffffffeffffffffffffffffffffffbfffdfffffffffffffffcfff7fffffffffffffffffcffffffffffe0ffffeaa054fffffffffddff7f9fffffffffbfffffffffffffffbffffffffffffffbffffffffffffffffffffff7fffffffffffffffffffffdfffbffffffffffffffff3fefffffffffffffffff -fbfffffffffffcffffd500a8fffffffffddfeff9fffffffffbfffffffffffffffbffffffffffffffbffffffffffffffffffffff7fffffffffffffffffffffe7ff7ffffffffffffffffdfdffffffffffffffffff7fffffffffffcffffea8854fffffffffebddff9fffffffff7fffffffffffffff7ffffffffffffff7fffffffff -fffffffffffffbffffffffffffffffffffffbfefffffffffffffffffe7bfffffffffffffffffcffffffffffffcffffd500a8ffffffffff78c1f9fffffffff7fffffffffffffff7ffffffffffffff7ffffffffffffffffffffffdffffffffffffffffffffffdfdffffffffffffffffffa7fffffffffffffffffbffffffffffffc -ffffea8854fffffffffffdfff9fffffffff7ffffffffffffffeffffffffffffffefffffffffffffffffffffffeffffffffffffffffffffffe7bffffffffffffffffffcfffffffffffffffffe7ffffffffffffcffffd500a8fffffffffffffff9fffffffff7ffffffffffffffeffffffffffffffdffffffffffffffffffffffff -3ffffffffffffffffffffffb7ffffffffffffffffffb3ffffffffffffffff9fffffffffffffcffffea8854fffffffffffffff9ffffffffefffffffffffffffdffffffffffffffdffffffffffffffffffffffffdffffffffffffffffffffffcffffffffffffffffffe7dfffffffffffffffe7fffffffffffffcffffd538a8ffff -fffffffffff9ffffffffefffffffffffffffdffffffffffffffbffffffffffffffffffffffffeffffffffffffffffffffffc7fffffffffffffffffdfe7ffffffffffffff1ffffffffffffffcffffea8054fffffffffffffff9ffffffffefffffffffffffffdffffffffffffffbfffffffffffffffffffffffff7ffffffffffff -fffffffffbbfffffffffffffffffbff9fffffffffffffcfffffffffffffffcffffd538a8fffffffffffffff9ffffffffefffffffffffffffbffffffffffffff7fffffffffffffffffffffffffbffffffffffffffffffffe7dfffffffffffffffff7ffefffffffffffff3fffffffffffffffcffffea8054fffffffffffffff9ff -ffffffefffffffffffffffbfffffffffffffeffffffffffffffffffffffffffcffffffffffffffffffffdfe7fffffffffffffffcffff3fffffffffff8ffffffffffffffffcffffd500a8fffffffffffffff9ffffffffdfffffffffffffff7fffffffffffffefffffffffffffffffffffffffff7fffffffffffffffffffbffbff -fffffffffffffbffffdffffffffffe7ffffffffffffffffcffffeaa054fffffffffffffff9ffffffffdfffffffffffffff7fffffffffffffdfffffffffffffffffffffffffffbfffffffffffffffffff7ffdffffffffffffffe7ffffe7fffffffff9fffffffffffffffffcffffd500a8fffffffffffffff9ffffffffdfffffff -fffffffeffffffffffffffdfffffffffffffffffffffffffffdffffffffffffffffffefffe7fffffffffffff1ffffff9ffffffffc7fffffffffffffffffcffffeabc54fffffffffffffff9ffffffffdffffffffffffffeffffffffffffffbfffffffffffffffffffffffffffe7fffffffffffffffffdffffbffffffffffff8ff -fffffe01ffffff3ffffffffffffffffffcffffd514a8fffffffffffffff9ffffffffbffffffffffffffdffffffffffffffbffffffffffffffffffffffffffffbfffffffffffffffff3ffffdfffffffffffe7fffffffffe0007fcfffffffffffffffffffcffffeab054fffffffffffffff9ffffffffbffffffffffffffdffffff -ffffffff7ffffffffffffffffffffffffffffdffffffffffffffffefffffe7ffffffffff1ffffffffffffff803fffffffffffffffffffcffffd500a8fffffffffffffff9ffffffffbffffffffffffffdfffffffffffffefffffffffffffffffffffffffffffeffffffffffffffffdffffff8fffffffff8ffffffffffffffffff -fffffffffffffffffffcffffeab054fffffffffffffff9ffffffffbffffffffffffffbfffffffffffffeffffffffffffffffffffffffffffff3fffffffffffffff3fffffff03ffffffc7fffffffffffffffffffffffffffffffffffffcffffd530a8fffffffffffffff9ffffffff7ffffffffffffffbfffffffffffffdffffff -ffffffffffffffffffffffffdffffffffffffffcfffffffffc1ffffe3ffffffffffffffffffffffffffffffffffffffcffffea8854fffffffffffffff9ffffffff7ffffffffffffffbfffffffffffffdffffffffffffffffffffffffffffffeffffffffffffff3ffffffffffe0fff9ffffffffffffffffffffffffffffffffff -fffffcffffd500a8fffffffffffffff9ffffffff7ffffffffffffff7fffffffffffffbfffffffffffffffffffffffffffffff7ffffffffffffcfffffffffffff03c7fffffffffffffffffffffffffffffffffffffffcffffeaa054fffffffffffffff9ffffffff7ffffffffffffff7fffffffffffff7ffffffffffffffffffff -fffffffffffbfffffffffffe3ffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffefffffffffffffff7fffffffffffff7fffffffffffffffffffffffffffffffcfffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea88 -54fffffffffffffff9fffffffeffffffffffffffefffffffffffffefffffffffffffffffffffffffffffffff7fffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffeffffffffffffffefffffffffffffefffffffffffffffffffffffffffffffff8f -ffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9454fffffffffffffff9fffffffeffffffffffffffdfffffffffffffdffffffffffffffffffffffffffffffffff0fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd52aa8ffffffffffff -fff9fffffffeffffffffffffffdfffffffffffffdfffffffffffffffffffffffffffffffffff07fffff1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeabe54fffffffffffffff9fffffffeffffffffffffffdfffffffffffffbffffffffffffffffffffffffffffffffffff87fffcfffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9fffffffdffffffffffffffbfffffffffffffbfffffffffffffffffffffffffffffffffffff83ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8d54fffffffffffffff9fffffffdff -ffffffffffffbfffffffffffff7ffffffffffffffffffffffffffffffffffffffc3cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd51ba8fffffffffffffff9fffffffdffffffffffffffbfffffffffffff7fffffffffffffffffffffffffffffffffffffffc3ffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffdffffffffffffff7ffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffdffffffffffffff7f -fffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffdffffffffffffff7ffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffbfffffffffffffefffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffbfffffffffffffefffffffffffffbff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffbfffffffffffffdfffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffcffffea8054fffffffffffffff9fffffffbfffffffffffffdfffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffffbfffffffffffffdffffffffffffefffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffffbfffffffffffffbffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff -ffd500a8ffffffffff7ffbf9fffffff7fffffffffffffbffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffebffbf9fffffff7fffffffffffffbffffffffffffdfffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffddff3f9fffffff7fffffffffffff7ffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054ffffff -fffddfebf83ffffff7fffffffffffff7ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffd500a8ffffffff05dfebf83ffffff7ffffffffffffefffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffea8054fffffffffddfdbf9fffffff7ffffffffffffefffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffddfc1f9ffff -ffefffffffffffffeffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffebdfbf9ffffffefffffffffffffdffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffcffffd500a8ffffffffff78fbf9ffffffefffffffffffffdffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffdfff9ffffffefffffffffff -ffbffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffefffffffffffffbffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffdfffffffffffffbffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd50ea8fffffffffffffff9ffffffdfffffffffffff7fffffffffff -f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9654fffffffffffffff9ffffffdfffffffffffff7fffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffcffffd52ca8fffffffffffffff9ffffffdffffffffffffeffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8654fffffffffffffff9ffffffdffffffffffffeffffffffffffdfffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd50ea8fffffffffffffff9ffffffbffffffffffffeffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffcffffeaa654fffffffffffffff9ffffffbffffffffffffdffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffffbffffffffffffdffffffffffffbfffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffffbffffffffffffdffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8 -fffffffffffffff9ffffffbffffffffffffbfffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeab654fffffffffffffff9ffffff7ffffffffffffbfffffffffffeffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffff7ffffffffffff7fffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054ffffffffffffff -f9ffffff7ffffffffffff7fffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffffff7ffffffffffff7fffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9ffffff7fffffffffffeffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9ffffff7fffff -ffffffeffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9154fffffffffffffff9ffffff7fffffffffffdffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffffff7fffffffffffdfffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154fffffffffffffff9fffffeffffffffffffdfffffff -ffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9fffffeffffffffffffbfffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffcffffea8154fffffffffffffff9fffffeffffffffffffbfffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9fffffeffffffffffffbfffffffffffbfffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154fffffffffffffff9fffffeffffffffffff7fffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffcffffd521a8fffffffffffffff9fffffeffffffffffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9fffffeffffffffffff7ffffffffffeffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9fffffefffffffffffefffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff -ea8054fffffffffffffff9fffffefffffffffffefffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffdfffffffffffefffffffffffdffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffdfffffffffffdfffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8ffffffff -fffffff9fffffdfffffffffffdfffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffdfffffffffffbfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffdfffffffffffbffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffffd -fffffffffffbffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffffbfffffffffff7ffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffcffffea8054ffffffffff7fe3f9fffffbfffffffffff7ffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffebfddf9fffffbfffffffffff7ff -ffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffddfdff9fffffbffffffffffefffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffcffffd520a8fffffffffddfdff83ffffbffffffffffefffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffea8854ffffffff05dfc3f83ffffbffffffffffefffffffffff7fffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffd500a8fffffffffddfddf9fffff7ffffffffffdffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffcffffeaa054fffffffffddfddf9fffff7ffffffffffdffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffebdddf9fffff7ffffffffffdffffffffffdffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeab054ffffffffff78e3f9fffff7ffffffffffbffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fcffffd528a8fffffffffffdfff9fffff7ffffffffffbffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffff7ffffffffffbffffffffffbffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd520a8fffffffffffffff9ffffefffffffffff7ffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054ff -fffffffffffff9ffffefffffffffff7ffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd508a8fffffffffffffff9ffffefffffffffff7fffffffffefffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffeffffffffffeffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd508a8fffffffffffffff9 -ffffeffffffffffeffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffeffffffffffeffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffcffffd508a8fffffffffffffff9ffffeffffffffffdffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeab854fffffffffffffff9ffffefffffffff -fdffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffeffffffffffdffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffcffffeab854fffffffffffffff9ffffeffffffffffbffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffffdffffffffffbffffffffff7f -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffdffffffffffbffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffcffffd520a8fffffffffffffff9ffffdffffffffff7fffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffdffffffffff7fffffffffeffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd53ca8fffffffffffffff9ffffdffffffffff7fffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffcffffea9454fffffffffffffff9ffffdffffffffff7fffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd530a8fffffffffffffff9ffffdfffffffffeffffffffffbffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffdfffffffffeffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd5 -30a8fffffffffffffff9ffffdfffffffffeffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeab054fffffffffffffff9ffffdfffffffffeffffffffff7ffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd508a8fffffffffffffff9ffffbfffffffffdffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054ffffffffff -fffff9ffffbfffffffffdfffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd520a8fffffffffffffff9ffffbfffffffffdfffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffbfffffffffdfffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd508a8fffffffffffffff9ffffbfff -ffffffbfffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffffbfffffffffbfffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffcffffd514a8fffffffffffffff9ffffbfffffffffbfffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaaa54fffffffffffffff9ffff7fffffffff7fffffff -ffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd53ea8fffffffffffffff9ffff7fffffffff7fffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffcffffeaa154fffffffffffffff9ffff7fffffffff7fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd50da8fffffffffffffff9ffff7ffffffffefffffffffeffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea9b54fffffffffffffff9ffff7ffffffffefffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffcffffd500a8fffffffffffffff9ffff7ffffffffefffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9ffff7ffffffffefffffffffdffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8ffffffffff7fe3f9ffff7ffffffffdfffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc -ffffea8054fffffffffebfddf9fffefffffffffdfffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffddfddf9fffefffffffffdfffffffffbffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffddfddf83ffefffffffffbfffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffd500a8ffff -ffff05dfe3f83ffefffffffffbfffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffea8054fffffffffddfddf9fffefffffffffbfffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffddfddf9fffefffffffff7fffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffebdddf9ff -fefffffffff7ffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8ffffffffff78e3f9fffefffffffff7ffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffdfff9fffdffffffffefffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffdffffffffefff -ffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffdffffffffefffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffdffffffffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffdffffffffdfffffffffbfffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffdffffffffdfffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffcffffea8054fffffffffffffff9fffdffffffffdfffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fffdffffffffbfffffffff7fffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fffbffffffffbfffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffcffffd500a8fffffffffffffff9fffbffffffffbffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8e54fffffffffffffff9fffbffffffffbffffffffeffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd516a8fffffffffffffff9fffbffffffff7ffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaac -54fffffffffffffff9fffbffffffff7ffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd506a8fffffffffffffff9fffbffffffff7ffffffffdffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8e54fffffffffffffff9fffbffffffff7ffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd526a8ffffffffffff -fff9fffbffffffff7ffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fff7fffffffefffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fff7fffffffefffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fff7ffffff -fefffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd536a8fffffffffffffff9fff7fffffffefffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffcffffea8054fffffffffffffff9fff7fffffffefffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9fff7fffffffdffffffffefff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154fffffffffffffff9fff7fffffffdffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffcffffd501a8fffffffffffffff9fff7fffffffdffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9fff7fffffffdffffffffdfffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd511a8fffffffffffffff9fff7fffffffdffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffcffffeaa154fffffffffffffff9fff7fffffffbffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9fff7fffffffbffffffffdfffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9fff7fffffffbffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff -ffd501a8fffffffffffffff9fff7fffffffbffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154fffffffffffffff9ffeffffffff7ffffffffbfffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd521a8fffffffffffffff9ffeffffffff7ffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffeaa154ffffff -fffffffff9ffeffffffff7ffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd501a8fffffffffffffff9ffeffffffff7ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffea8154fffffffffffffff9ffefffffffeffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffd500a8fffffffffffffff9ffef -ffffffeff9fffffefffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffea8054fffffffffffff7f9ffefffffffeff9fffffefffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9ffffffffff -fffcfffffffffffffcfffffffffffffcfffffffffffffcffffd500a8ffffffffffffe7f9ffefffffffeff9fffffefffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffea8054ffffffffffffd7f9ffefffffffdff9ffff -fdfffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffff9fffffffffffffcfffffffffffffcfffffffffffffcfffffffffffffcffffd500a8fffffffffffff7f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffea8054fffffffffff077fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffd500a8fffffffffffff7ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd500a8fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffeaa054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd508a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd520a8 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd530a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaa854ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaa054fffffffffffffffbfffffffffffffbfffffffffffff1ffffffffffffe0fffffffffffffdffffffffffffe0fffffffffffff1fffffffffffff07ffffffffffff8fffffffffffff8ffffffffffffefbfffd500a8fffffffffffffff5ffffffffffff -f3ffffffffffffeefffffffffffffefffffffffffffdffffffffffffefffffffffffffeeffffffffffffff7ffffffffffff77ffffffffffff77fffffffffffcf5fffea8854ffffffffffffffeeffffffffffffebffffffffffffeefffffffffffffdfffffffffffff9ffffffffffffefffffffffffffeffffffffffffffeffff -fffffffff77ffffffffffff77fffffffffffaeefffd500a8ffffffffffffffeefffffffffffffbfffffffffffffefffffffffffffbfffffffffffff5ffffffffffffe9ffffffffffffeffffffffffffffefffffffffffff77ffffffffffff77fffffffffffeeefffea8854ffffffffffffffeefffffffffffffbffffffffffff -fdfffffffffffff1fffffffffffff5ffffffffffffe6ffffffffffffe1fffffffffffffdfffffffffffff8fffffffffffff87fffffffffffeeefffd500a8ffffffffffffffeefffffffffffffbfffffffffffffbfffffffffffffeffffffffffffedfffffffffffffeffffffffffffeefffffffffffffdfffffffffffff77fff -ffffffffff7fffffffffffeeefffea8854ffffffffffffffeefffffffffffffbfffffffffffff7fffffffffffffeffffffffffffe0fffffffffffffeffffffffffffeefffffffffffffbfffffffffffff77fffffffffffff7fffffffffffeeefffd538a8fffffffffffffff5fffffffffffffbffffffffffffefffffffffffff -eefffffffffffffdffffffffffffeeffffffffffffeefffffffffffffbfffffffffffff77ffffffffffff77fffffffffffef5fffea8054fffffffffffffffbffffffffffffe0ffffffffffffe0fffffffffffff1fffffffffffffdfffffffffffff1fffffffffffff1fffffffffffffbfffffffffffff8fffffffffffff8ffff -ffffffff83bfffd538a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -eaa054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeabc54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd514a8ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeab054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeab054ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd530a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffea8854ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaa054fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd500a8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8854ffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffff5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffea9454ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd52aa8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeabe54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffd521a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8d54ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd51b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000feff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8054ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5 -00a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea8055ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd500aaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa80555555555555 -555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555550eaaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa96555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555552caaaaaa6aaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa8655555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 -5555555555555555555555555555555555555555555555550eaaaaaa6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaaa6 -restore showpage end -%%Trailer - -%%EndDocument -temp-save restore -end -showpage -%%Trailer -%End-of-file DELETED r38/doc/util/r38.dvi Index: r38/doc/util/r38.dvi ================================================================== --- r38/doc/util/r38.dvi +++ /dev/null cannot compute difference between binary files DELETED r38/doc/util/r38.log Index: r38/doc/util/r38.log ================================================================== --- r38/doc/util/r38.log +++ /dev/null @@ -1,1055 +0,0 @@ -This is TeX, Version 3.141592 (MiKTeX 2.3) (preloaded format=latex 2000.11.28) 17 APR 2004 17:30 -**r38 -(r38.tex -LaTeX2e <2001/06/01> -Babel and hyphenation patterns for english, french, german, ngerman, du -mylang, nohyphenation, loaded. -(D:\texmf\tex\latex\base\book.cls -Document Class: book 2001/04/21 v1.4e Standard LaTeX document class -(D:\texmf\tex\latex\base\bk11.clo -File: bk11.clo 2001/04/21 v1.4e Standard LaTeX file (size option) -) -\c@part=\count79 -\c@chapter=\count80 -\c@section=\count81 -\c@subsection=\count82 -\c@subsubsection=\count83 -\c@paragraph=\count84 -\c@subparagraph=\count85 -\c@figure=\count86 -\c@table=\count87 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) (D:\texmf\tex\latex\base\makeidx.sty -Package: makeidx 2000/03/29 v1.0m Standard LaTeX package -) -(D:\texmf\tex\latex\graphics\graphicx.sty -Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) - -(D:\texmf\tex\latex\graphics\keyval.sty -Package: keyval 1999/03/16 v1.13 key=value parser (DPC) -\KV@toks@=\toks14 -) -(D:\texmf\tex\latex\graphics\graphics.sty -Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR) - (D:\texmf\tex\latex\graphics\trig.sty -Package: trig 1999/03/16 v1.09 sin cos tan (DPC) -) (D:\texmf\tex\latex\00miktex\graphics.cfg -File: graphics.cfg 2003/03/12 v1.1 MiKTeX 'graphics' configuration -) -Package graphics Info: Driver file: dvipdfm.def on input line 80. - -(D:\texmf\tex\latex\00miktex\dvipdfm.def -File: dvipdfm.def 1999/9/6 vx.x Driver-dependant file -)) -\Gin@req@height=\dimen103 -\Gin@req@width=\dimen104 -) -(D:\texmf\tex\latex\hyperref\hyperref.sty -Package: hyperref 2003/07/27 v6.74h Hypertext links for LaTeX -\@linkdim=\dimen105 -\Hy@linkcounter=\count88 -\Hy@pagecounter=\count89 - -(D:\texmf\tex\latex\hyperref\pd1enc.def -File: pd1enc.def 2003/07/27 v6.74h Hyperref: PDFDocEncoding definition (HO) -) -(D:\texmf\tex\latex\00miktex\hyperref.cfg -File: hyperref.cfg 2003/03/08 v1.0 MiKTeX 'hyperref' configuration -) -Package hyperref Info: Hyper figures OFF on input line 1879. -Package hyperref Info: Link nesting OFF on input line 1884. -Package hyperref Info: Hyper index ON on input line 1887. -Package hyperref Info: Plain pages ON on input line 1892. -Package hyperref Info: Backreferencing OFF on input line 1899. - -Implicit mode ON; LaTeX internals redefined -Package hyperref Info: Bookmarks ON on input line 2003. -(D:\texmf\tex\latex\ltxmisc\url.sty -\Urlmuskip=\muskip10 -Package: url 1999/03/28 ver 1.5x Verb mode for urls, etc. -) -LaTeX Info: Redefining \url on input line 2142. -\Fld@menulength=\count90 -\Field@Width=\dimen106 -\Fld@charsize=\dimen107 -\Choice@toks=\toks15 -\Field@toks=\toks16 -Package hyperref Info: Hyper figures OFF on input line 2617. -Package hyperref Info: Link nesting OFF on input line 2622. -Package hyperref Info: Hyper index ON on input line 2625. -Package hyperref Info: backreferencing OFF on input line 2632. -Package hyperref Info: Link coloring OFF on input line 2637. -\c@Item=\count91 -\c@Hfootnote=\count92 -) -*hyperref using driver hdvipdfm* -(D:\texmf\tex\latex\hyperref\hdvipdfm.def -File: hdvipdfm.def 2003/07/27 v6.74h Hyperref driver for dvipdfm -\pdfm@box=\box26 -\Fld@listcount=\count93 -\@outlinefile=\write3 -) -\reduceboxwidth=\skip43 -\redboxwidth=\skip44 -\rboxwidth=\skip45 -\@indexfile=\write4 - -Writing index file r38.idx -(r38.aux) -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 103. -LaTeX Font Info: ... okay on input line 103. -Package hyperref Info: Link coloring OFF on input line 103. - (D:\texmf\tex\latex\hyperref\nameref.sty -Package: nameref 2001/01/27 v2.19 Cross-referencing by name of section -\c@section@level=\count94 -) -LaTeX Info: Redefining \ref on input line 103. -LaTeX Info: Redefining \pageref on input line 103. - (r38.out) (r38.out) -[1 - -] -LaTeX Font Info: Try loading font information for OMS+cmr on input line 133. - - (D:\texmf\tex\latex\base\omscmr.fd -File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 133. - [2] -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <10.95> on input line 146. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 146. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 146. - [3] [4 - -] (r38.toc [5] [6] [7] -[8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] -[23] [24] [25] [26]) -\tf@toc=\write5 - [27] [28 - -] [29] [30] [31] [32] [33 - -] [34 - -] [35] [36 - -] -Chapter 1. -[37] [38] [39] [40] [41] [42 - -] -Chapter 2. -[43] [44] [45] [46] [47] [48] [49] [50] [51] [52 - -] -Chapter 3. -[53] [54] [55] [56] [57] [58] -Chapter 4. -[59 - -] -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <12> on input line 1152. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 1152. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 1152. - -[60] -LaTeX Font Info: Try loading font information for OMS+cmtt on input line 118 -5. -LaTeX Font Info: No file OMScmtt.fd. on input line 1185. - - -LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined -(Font) using `OMS/cmsy/m/n' instead -(Font) for symbol `textbraceleft' on input line 1185. - -[61] [62] -Chapter 5. -[63 - -] [64] [65] [66] -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 1429. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 1429. - [67] [68] [69] [70] [71] [72] [73] [74] -Chapter 6. -[75 - -] [76] [77] [78] -Chapter 7. -[79 - -] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] -[94] [95] [96] [97] [98] [99] -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <9> on input line 2991. - [100] [101] [102] [103] [104] [105] [106] -[107] [108] [109] [110 - -] -Chapter 8. -[111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] -[123] [124] [125] [126] [127] [128] [129] [130] [131] [132 - -] -Chapter 9. -[133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] -[145] [146] [147] [148] [149] [150] -Chapter 10. -[151 - -] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] -[163] [164] [165] [166] [167] [168 - -] -Chapter 11. -[169] [170] [171] [172 - -] -Chapter 12. -[173] -Underfull \hbox (badness 1132) in paragraph at lines 5856--5857 -[]\OT1/cmr/m/n/10.95 move pointer to next oc-cur-rence of - [] - -[174] [175] [176] -Chapter 13. -[177 - -] [178] [179] [180] [181] [182] [183] [184] -Chapter 14. -[185 - -] [186] [187] [188] [189] [190] [191] [192] -Chapter 15. -[193 - -] - -LaTeX Warning: Reference `CONTFR' on page 194 undefined on input line 6720. - -[194] [195] [196] -Chapter 16. -[197 - -] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] -[209] [210] -Chapter 17. -[211 - -] [212] [213] [214] [215] [216] [217] [218] -Chapter 18. -[219 - -] [220] [221] [222] [223] [224] -Chapter 19. -[225 - -] -\c@examplectr=\count95 - [226] [227 - -] [228] [229] [230 - -] -Chapter 20. -{ALGINT: Integration of square roots} -[231] [232] [233] [234 - -] -Chapter 21. -[APPLYSYM: Infinitesimal symmetries] -[235] [236] [237] [238 - -] -Chapter 22. -{ARNUM: An algebraic number package} -[239] [240] [241] [242 - -] -Chapter 23. -{ASSIST: Various Useful Utilities} -[243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] -[255] [256] [257] [258] [259] [260] [261] [262] [263] [264 - -] -Chapter 24. -{ATENSOR: Package for Tensor Simplification} -[265] [266] [267] [268 - -] -Chapter 25. -{AVECTOR: Vector Algebra} -[269] [270] [271] [272] [273] [274] [275] [276] -Chapter 26. -{BOOLEAN: A package for boolean algebra} -[277 - -] [278] [279] [280] [281] [282 - -] -Chapter 27. -{CALI: Computational Commutative Algebra} -[283] [284] -Chapter 28. -{CAMAL: Calculations in Celestial Mechanics} -[285 - -] [286] [287] [288 - -] -Chapter 29. -{CGB: Comprehensive Gr\"obner Bases} -[289] [290] [291] [292] -Overfull \hbox (16.29929pt too wide) has occurred while \output is active -[]\OT1/cmr/m/sl/10.95 29.7. SWITCH CGBREAL: COMPUTING OVER THE REAL NUMBERS \O -T1/cmr/m/n/10.95 293 - [] - -[293] [294] -Chapter 30. -[CHANGEVR: Change of Variables in DEs] -[295 - -] [296] -Chapter 31. -{COMPACT: Package for compacting expressions} -[297 - -] [298] -Chapter 32. -[CRACK: Overdetermined systems of DEs] -[299 - -] [300] [301] [302] -Chapter 33. -[CVIT:Dirac gamma matrix traces] -[303 - -] [304] -Chapter 34. -{DEFINT: Definite Integration for REDUCE} -[305 - -] [306] [307] [308] -Chapter 35. -[DESIR: Linear Homogeneous DEs] -[309 - -] [310] [311] [312 - -] -Chapter 36. -{DFPART: Derivatives of generic functions} -[313] [314] [315] [316] [317] [318 - -] -Chapter 37. -[DUMMY: Expressions with dummy variables] -[319] [320] [321] [322 - -] -Chapter 38. -{EDS: Exterior differential systems} -[323] [324] [325] -Overfull \hbox (28.56746pt too wide) in paragraph at lines 12120--12132 -\OT1/cmr/m/n/10.95 A sim-ple [] is con-structed us-ing the \OT1/cmtt/m/n/10.95 -EDS \OT1/cmr/m/n/10.95 op-er-a-tor where the [] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 12120--12132 - - [] - -[326] -Underfull \hbox (badness 10000) in paragraph at lines 12176--12179 - - [] - - -Overfull \hbox (13.29237pt too wide) in paragraph at lines 12180--12200 -[][] - [] - -[327] -Underfull \hbox (badness 10000) in paragraph at lines 12232--12238 - - [] - - -Overfull \hbox (5.51761pt too wide) in paragraph at lines 12239--12258 -[][] - [] - -[328] -Underfull \hbox (badness 10000) in paragraph at lines 12283--12287 - - [] - - -Overfull \hbox (46.90974pt too wide) in paragraph at lines 12288--12313 -[][] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 12316--12322 - - [] - -[329] -Underfull \hbox (badness 10000) in paragraph at lines 12354--12356 - - [] - - -Overfull \hbox (53.44337pt too wide) in paragraph at lines 12357--12373 -[][] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 12376--12379 - - [] - - -Overfull \hbox (38.60904pt too wide) in paragraph at lines 12380--12389 -[][] - [] - -[330] [331] [332 - -] -Chapter 39. -{EXCALC: A differential geometry package} -[333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344 - -] -Chapter 40. -[FIDE: Finite differences for PDEs] -[345] [346] [347] [348] -Chapter 41. -[FPS: Formal power series] -[349 - -] [350] -Chapter 42. -{GENTRAN: A code generation package} -[351 - -] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362 - -] -Chapter 43. -{GEOMETRY: Mechanized (Plane) Geometry Manipulations} -[363] -Underfull \hbox (badness 10000) in paragraph at lines 13711--13794 - - [] - -[364] [365] [366] -Underfull \hbox (badness 10000) in paragraph at lines 13800--13804 - - [] - -[367] -Underfull \hbox (badness 10000) in paragraph at lines 13811--13813 - - [] - -[368] [369] [370 - -] -Chapter 44. -{GNUPLOT: Display of functions and surfaces} -[371] [372] [373] [374 - -] -Chapter 45. -{GROEBNER: A Gr\"obner basis package} -[375] [376] -LaTeX Font Info: Font shape `OMS/cmr/m/it' in size <10.95> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 14062 -. - [377] - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 14132. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\mathop' on input line 14132. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\mathgroup' on input line 14132. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\symoperators' on input line 14132. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\nolimits' on input line 14132. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 14132. - -[378] [379] [380] [381] [382] [383] -Overfull \hbox (5.98795pt too wide) in paragraph at lines 14424--14424 -[]\OT1/cmr/bx/n/14.4 Ideal De-com-po-si-tion & Equat-ion Sys-tem Solv- - [] - -[384] -Chapter 46. -{IDEALS: Arithmetic for polynomial ideals} -[385 - -] [386] -Chapter 47. -{INEQ: Support for solving inequalities} -[387 - -] [388] -Chapter 48. -{INVBASE: A package for computing involutive bases} -[389 - -] [390] [391] [392 - -] -Chapter 49. -{LAPLACE: Laplace and inverse Laplace transforms} -[393] [394] [395] [396 - -] -Chapter 50. -{LIE: Functions for the classification of real n-dimensional Lie algebras} -[397] [398] -Chapter 51. -{LIMITS: A package for finding limits} -[399 - -] [400] [401] [402 - -] -Chapter 52. -{LINALG: Linear algebra package} -[403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414 - -] -Chapter 53. -{MATHML : MathML Interface for REDUCE} -[415] [416] [417] [418 - -] -Chapter 54. -{MODSR: Modular solve and roots} -[419] [420 - -] -Chapter 55. -{MRVLIMIT: Package for Computing Limits of "Exp-Log" Functions} -[421] -Underfull \hbox (badness 10000) in paragraph at lines 15926--15932 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 15926--15932 - - [] - -[422] [423] [424 - -] -Chapter 56. -{NCPOLY: Non--commutative polynomial ideals} -[425] [426] [427] [428] [429] [430] -Chapter 57. -{NORMFORM: Computation of matrix normal forms} -[431 - -] [432] [433] -Underfull \hbox (badness 10000) in paragraph at lines 16388--16389 - - [] - -[434] [435] [436 - -] -Chapter 58. -{NUMERIC: Solving numerical problems} -[437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448 - -] -Chapter 59. -[ODESOLVE: Ordinary differential equations solver] -[449] [450] [451] [452 - -] -Chapter 60. -{ORTHOVEC: Three-dimensional vector analysis} -[453] [454] -Underfull \hbox (badness 10000) in paragraph at lines 17139--17148 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17149--17158 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17159--17169 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17170--17185 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17186--17198 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17199--17205 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17206--17214 - - [] - -[455] -Underfull \hbox (badness 10000) in paragraph at lines 17215--17221 - - [] - -[456] -Underfull \hbox (badness 10000) in paragraph at lines 17290--17296 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 17319--17323 - - [] - -[457] [458] [459] [460 - -] -Chapter 61. -{PHYSOP: Operator calculus in quantum theory} - -Underfull \hbox (badness 10000) in paragraph at lines 17430--17435 - - [] - -[461] [462] [463] -Underfull \hbox (badness 10000) in paragraph at lines 17574--17576 - - [] - -[464] [465] -Underfull \hbox (badness 10000) in paragraph at lines 17686--17695 - - [] - -[466] [467] [468] -Chapter 62. -{PM: A REDUCE pattern matcher} -[469 - -] [470] -This is not true -[471] [472] [473] [474 - -] -Chapter 63. - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\-command' on input line 17991. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\f@shape' on input line 17991. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\-command' on input line 17991. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\font@name' on input line 17991. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\OT1/cmr/m/sl/10.95' on input line 17991. - -{QSUM : Package for summation of $q$-hypergeometric terms} -\c@redprompt=\count96 - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\-command' on input line 18067. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\f@shape' on input line 18067. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\-command' on input line 18067. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\font@name' on input line 18067. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `\OT1/cmr/bx/sl/14.4' on input line 18067. - -[475] -LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <14.4> not available -(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 18105 -. - [476] [477] -Underfull \hbox (badness 10000) in paragraph at lines 18184--18187 - - [] - -[478] [479] [480 - -] -Chapter 64. -{RANDPOLY: A random polynomial generator} -[481] [482] [483] [484] [485] [486 - -] -Chapter 65. -{RATAPRX : Rational Approximations Package} -[487] -Underfull \hbox (badness 10000) in paragraph at lines 18463--18465 - - [] - -[488] [489] [490] [491] [492] -Chapter 66. -{REACTEQN: Support for chemical reaction equations} -[493 - -] [494] -Chapter 67. -{REDLOG: Logic System} - -LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined -(Font) using `OT1/cmr/bx/n' instead on input line 18668. - -[495 - -] -Underfull \hbox (badness 10000) in paragraph at lines 18725--18726 - - [] - -[496] -Overfull \hbox (31.73804pt too wide) in paragraph at lines 18754--18766 - [] - [] - -[497] [498] [499] [500] [501] [502] [503] [504 - -] -Chapter 68. -{RESET: Code to reset REDUCE to its initial state} -[505] [506 - -] -Chapter 69. -{RESIDUE: A residue package} -[507] [508] -Chapter 70. -{RLFI: REDUCE LaTeX formula interface} -[509 - -] [510] [511] [512 - -] -Chapter 71. -{ROOTS: A REDUCE root finding package} -[513] [514] [515] [516] [517] [518 - -] -Chapter 72. -[RSOLVE: Rational polynomial solver] -[519] -LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10.95> not available -(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 19478 -. - -Underfull \hbox (badness 10000) in paragraph at lines 19478--19480 -[]\OT1/cmr/m/n/10.95 assign the mul-ti-plic-ity list to the global vari-able - [] - -[520] -Chapter 73. -{SCOPE: REDUCE source code optimisation package} -LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 19549 -. - -Overfull \hbox (11.1949pt too wide) in paragraph at lines 19542--19557 -[] - [] - -[521 - -] [522] [523] [524 - -] -Chapter 74. -{SETS: A basic set theory package} -[525] [526] [527] [528] [529] [530] -Chapter 75. -{SPARSE: Sparse Matrices} -[531 - -] [532] [533] [534 - -] -Chapter 76. -{SPDE: A package for finding symmetry groups of {PDE}'s} -[535] [536] [537] [538 - -] -Chapter 77. -{SPECFN: Package for special functions} -[539] [540] [541] [542] -Overfull \hbox (9.72835pt too wide) in paragraph at lines 20244--20245 - [] - [] - -[543] -Overfull \vbox (3.89938pt too high) has occurred while \output is active [] - - -[544] -Chapter 78. -{SPECFN2: Package for special special functions} -[545 - -] [546] -Chapter 79. -{SUM: A package for series summation} -[547 - -] [548] [549] [550 - -] -Chapter 80. -{SUSY2: Super Symmetry} - -Underfull \hbox (badness 10000) in paragraph at lines 20470--20474 - - [] - -[551] [552] [553] [554] [555] [556 - -] -Chapter 81. -{SYMMETRY: Operations on symmetric matrices} -[557] [558] [559] [560 - -] -Chapter 82. -{TAYLOR: Manipulation of Taylor series} -[561] [562] [563] [564] [565] [566 - -] -Chapter 83. -{TPS: A truncated power series package} -[567] [568] [569] [570] [571] [572] [573] [574] [575] [576 - -] -Chapter 84. -{TRI: TeX REDUCE interface} -[577] [578] [579] [580] [581] [582 - -] -Chapter 85. -{TRIGSIMP: Simplification and factorisation of trigonometric and hyperbolic fun -ctions} -[583] [584] [585] [586] -Chapter 86. -{WU: Wu algorithm for polynomial systems} -[587 - -] [588] -Chapter 87. -{XCOLOR: Calculation of the color factor in non-abelian gauge field theories} -[589 - -] [590] [591] [592 - -] -Chapter 88. -{XIDEAL: Gr\"obner Bases for exterior algebra} -[593] [594] [595] [596] [597] [598 - -] -Chapter 89. -{ZEILBERG: A package for indefinite and definite summation} -[599] [600] [601] [602] [603] [604] [605] [606 - -] -Chapter 90. - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 22398. - - -Package hyperref Warning: Token not allowed in a PDFDocEncoded string, -(hyperref) removing `math shift' on input line 22398. - -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <24.88> on input line 22398. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <20.74> on input line 22398. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <17.28> on input line 22398. -{ZTRANS: $Z$-transform package} -[607] [608] [609] [610] [611 - -] [612] -Chapter 91. -{The Standard Lisp Report} -\argwidth=\skip46 -\dewidth=\skip47 -[613 - -] [614] [615] [616] [617] [618] [619] [620] [621] [622] [623] [624] -[625] [626] [627] [628] [629] [630] [631] [632] [633] [634] [635] [636] -[637] [638] [639] [640] [641] [642] [643] [644] [645] [646] [647] [648] -[649] [650] [651] -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -[]\OT1/cmtt/m/n/10.95 Spread the actual parameters in ARGS - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 following the conventions: for calling - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 functions, transfer to the entry point - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 of the function, and return the value - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -[]\OT1/cmtt/m/n/10.95 Bind the actual parameters in ARGS to - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 the formal parameters of the lambda - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 expression. If the two lists are not - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 of equal length then ERROR(000, "Number - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24307--24307 -\OT1/cmtt/m/n/10.95 of parameters do not match"); The value - [] - -[652] -Underfull \hbox (badness 10000) in paragraph at lines 24337--24337 -[]\OT1/cmtt/m/n/10.95 U is an id. Return the value most - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24337--24337 -\OT1/cmtt/m/n/10.95 currently bound to U or if there - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 24337--24337 -\OT1/cmtt/m/n/10.95 is no such binding: ERROR(000, - [] - -[653] [654] [655] [656] [657] [658] [659] [660] [661] [662] [663] [664] -[665] [666 - -] [667] [668] -Appendix A. -[669 - -] [670] (r38.bbl [671 - -] [672]) (r38.ind [673] [674 - -] [675] [676] [677] -[678] [679] [680] [681] [682] [683] [684] [685] [686] [687] [688] [689] -[690] [691] [692] [693] [694] [695] [696] [697] [698 - -]) (r38.aux) - -LaTeX Font Warning: Some font shapes were not available, defaults substituted. - - -LaTeX Warning: There were undefined references. - - ) -Here is how much of TeX's memory you used: - 2701 strings out of 96052 - 33499 string characters out of 1197190 - 142858 words of memory out of 1139380 - 5526 multiletter control sequences out of 35000 - 23519 words of font info for 83 fonts, out of 500000 for 1000 - 36 hyphenation exceptions out of 607 - 25i,15n,39p,206b,462s stack positions out of 1500i,500n,5000p,200000b,32768s - -Output written on r38.dvi (698 pages, 1739516 bytes). DELETED r38/help/HC.zip Index: r38/help/HC.zip ================================================================== --- r38/help/HC.zip +++ /dev/null cannot compute difference between binary files DELETED r38/help/allfiles.html Index: r38/help/allfiles.html ================================================================== --- r38/help/allfiles.html +++ /dev/null @@ -1,34858 +0,0 @@ - - - -Top -INDEX

-Top

-
  • Concepts

    -

  • Variables

    -

  • Syntax

    -

  • Arithmetic Operations

    -

  • Boolean Operators

    -

  • General Commands

    -

  • Algebraic Operators

    -

  • Declarations

    -

  • Input and Output

    -

  • Elementary Functions

    -

  • General Switches

    -

  • Matrix Operations

    -

  • Groebner package

    -

  • High Energy Physics

    -

  • Numeric Package

    -

  • Roots Package

    -

  • Special Functions

    -

  • Taylor series

    -

  • Gnuplot package

    -

  • Linear Algebra package

    -

  • Matrix Normal Forms

    -

  • Miscellaneous Packages

    -

  • Outmoded Operations

    -

  • - - -IDENTIFIER -INDEX

    - - - -IDENTIFIER _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -Identifiers in REDUCE consist of one or more alphanumeric characters, of -which the first must be alphabetical. The maximum number of characters -allowed is system dependent, but is usually over 100. However, printing -is simplified if they are kept under 25 characters. -

    -

    -You can also use special characters in your identifiers, but each must be -preceded by an exclamation point ! as an escape character. Useful -special characters are # $ % ^ & * - + = ? < > ~ | / ! and -the space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore _ is special in this regard. It must be preceded -by an escape character in the first position in an identifier, but is -treated like a normal letter within an identifier. -

    -

    -Other characters, such as ( ) # ; ` ' " can also be used if -preceded by a !, but as they have special meanings to the Lisp -reader it is best to avoid them to avoid confusion. -

    -

    -Many system identifiers have * before or after their names, or - between -words. If you accidentally pick one of these names for your own identifier, -it could have disastrous effects. For this reason it is wise not to include -* or - anywhere in your identifiers. -

    -

    -You will notice that REDUCE does not use the escape characters when it prints -identifiers containing special characters; however, you still must use them -when you refer to these identifiers. Be careful when editing statements -containing escaped special characters to treat the character and its escape -as an inseparable pair. -

    -

    -Identifiers are used for variable names, labels for go to statements, -and names of arrays, matrices, operators, and procedures. Once an identifier is - -used as a matrix, array, scalar or operator identifier, it may not be used -again as a matrix, array or operator. An operator or array identifier may -later be used as a scalar without problems, but a matrix identifier cannot be -used as a scalar. All procedures are entered into the system as operators, so -the name of a procedure may not be used as a matrix, array, or operator -identifier either. -

    -

    - - - -KERNEL -INDEX

    - - - -KERNEL _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -A kernel is a form that cannot be modified further by the REDUCE -canonical simplifier. Scalar variables are always kernels. The -other important class of kernels are operators with their arguments. -Some examples should help clarify this concept: -

    -

    -

    
    -        Expression                     Kernel?
    -
    -          x                              Yes
    -          varname                        Yes
    -          cos(a)                         Yes
    -          log(sin(x**2))                 Yes
    -          a*b                            No
    -          (x+y)**4                       No
    -          matrix-identifier              No
    -

    Many REDUCE operators expect kernels among their arguments. Error -messages -result from attempts to use non-kernel expressions for these arguments. -

    -

    - - - -STRING -INDEX

    - - - -STRING _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -A string is any collection of characters enclosed in double quotation -marks ("). It may be used as an argument for a variety of commands - -and operators, such as in, rederr and write. -

    -examples:

    -

    
    -write "this is a string"; 
    -
    -  this is a string 
    -
    -
    -write a, " ", b, " ",c,"!"; 
    -
    -  A B C!
    -
    -

    -

    - - - -Concepts -INDEX

    -Concepts

    -
  • IDENTIFIER type

    -

  • KERNEL type

    -

  • STRING type

    -

  • - - -assumptions -INDEX

    - - - -ASSUMPTIONS _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -After solving a linear or polynomial equation system -with parameters, the variable assumptions contains a list -of side relations for the parameters. The solution is valid only -as long as none of these expression is zero. -

    -examples:

    -

    
    -solve({a*x-b*y+x,y-c},{x,y});
    -
    -       b*c
    -  {{x=-----,y=c}} 
    -      a + 1
    -
    -
    -assumptions; 
    -
    -  {a + 1}
    -
    -

    -

    - - - -CARD_NO -INDEX

    - - - -CARD\_NO _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -card_nosets the total number of cards allowed in a Fortran -output statement when fort is on. Default is 20. -

    -

    -

    -examples:

    -

    
    -on fort; 
    -
    -card_no := 4; 
    -
    -  CARD_NO=4. 
    -
    -
    -z := (x + y)**15; 
    -
    -        ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y**
    -       . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15
    -        Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ 
    -       . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+
    -       . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1
    -
    -

    Twenty total cards means 19 continuation cards. You may set it for - more -if your Fortran system allows more. Expressions are broken apart in a -Fortran-compatible way if they extend for more than card_no -continuation cards. -

    -

    -

    - - - -E -INDEX

    - - - -E _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -The constant e is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch -rounded is on. -

    -

    -emay be used as an iterative variable in a -for statement, -or as a local variable or a -procedure. If e is defined -as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. -

    -

    -

    - - - -EVAL_MODE -INDEX

    - - - -EVAL\_MODE _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The system variable eval_mode contains the current mode, either - -algebraic or -symbolic. -

    -

    -

    -examples:

    -

    
    -EVAL_MODE; 
    -
    -  ALGEBRAIC
    -
    -

    Some commands do not behave the same way in algebraic and symbolic - modes. -

    -

    -

    - - - -FORT_WIDTH -INDEX

    - - - -FORT\_WIDTH _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The fort_width variable sets the number of characters in a line of -Fortran-compatible output produced when the -fort switch is on. -Default is 70. -

    -

    -

    -examples:

    -

    
    -fort_width := 30; 
    -
    -  FORT_WIDTH := 30  
    -
    -
    -on fort; 
    -
    -df(sin(x**3*y),x); 
    -
    -        ANS=3.*COS(X
    -       . **3*Y)*X**2*
    -       . Y
    -
    -

    fort_widthincludes the usually blank characters at the be -ginning -of the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. -

    -

    -

    - - - -HIGH_POW -INDEX

    - - - -HIGH\_POW _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The variable high_pow is set by -coeff to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -

    -

    -

    -examples:

    -

    
    -coeff((x+1)^5*(x*(y+3)^2)^2,x); 
    -
    -  {0,
    -   0,
    -    4       3       2
    -   Y  + 12*Y  + 54*Y  + 108*Y + 81,
    -       4       3       2
    -   5*(Y  + 12*Y  + 54*Y  + 108*Y + 81),
    -        4       3       2
    -   10*(Y  + 12*Y  + 54*Y  + 108*Y + 81),
    -        4       3       2
    -   10*(Y  + 12*Y  + 54*Y  + 108*Y + 81),
    -       4       3       2
    -   5*(Y  + 12*Y  + 54*Y  + 108*Y + 81),
    -    4       3       2
    -   Y  + 12*Y  + 54*Y  + 108*Y + 81}
    -
    -
    -high_pow; 
    -
    -  7
    -
    -

    - - -I -INDEX

    - - - -I _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -

    -

    -REDUCE knows i is the square root of -1, - and that i^2 = -1. -

    -

    -

    -examples:

    -

    
    -(a + b*i)*(c + d*i); 
    -
    -  A*C + A*D*I + B*C*I - B*D 
    -
    -
    -i**2; 
    -
    -  -1
    -
    -

    icannot be used as an identifier. It is all right to use -i -as an index variable in a for loop, or as a local (scalar) -variable inside a begin...end block, but it loses its definition as -the square root of -1 inside the block in that case. -

    -

    -Only the simplest properties of i are known by REDUCE unless -the switch -complex is turned on, which implements full complex -arithmetic in factoring, simplification, and functional values. -complex is ordinarily off. -

    -

    -

    - - - -INFINITY -INDEX

    - - - -INFINITY _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -The name infinity is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator reflects -finite arithmetic, rather than true operations on infinity. -

    -

    - - - -LOW_POW -INDEX

    - - - -LOW\_POW _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The variable low_pow is set by -coeff to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -

    -

    -

    -examples:

    -

    
    -coeff((x+2*y)**6,y); 
    -
    -    6
    -  {X ,
    -       5
    -   12*X ,
    -       4
    -   60*X ,
    -        3
    -   160*X ,
    -        2
    -   240*X ,
    -   192*X,
    -   64}
    -
    -
    -low_pow; 
    -
    -  0 
    -
    -
    -coeff(x**2*(x*sin(y) + 1),x); 
    -			 
    -
    -
    -  {0,0,1,SIN(Y)} 
    -
    -
    -low_pow; 
    -
    -  2
    -
    -

    - - -NIL -INDEX

    - - - -NIL _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -

    -

    -nilrepresents the truth value false in symbolic mode, and is -a synonym for 0 in algebraic mode. It cannot be used for any other -purpose, even inside procedures or -for loops. -

    -

    - - - -PI -INDEX

    - - - -PI _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -The identifier pi is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. -

    -

    -pimay be used as a looping variable in a -for statement, -or as a local variable in a -procedure. Its value in such cases -will be taken from the local environment. -

    -

    -

    - - - -requirements -INDEX

    - - - -REQUIREMENTS _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -After an attempt to solve an inconsistent equation system -with parameters, the variable requirements contains a list -of expressions. These expressions define a set of conditions implicitly -equated with zero. Any solution to this system defines a setting for -the parameters sufficient to make the original system consistent. -

    -examples:

    -

    
    -solve({x-a,x-y,y-1},{x,y}); 
    -
    -  {}
    -
    -
    -requirements;
    -
    -  {a - 1}
    -
    -

    -

    - - - -ROOT_MULTIPLICITIES -INDEX

    - - - -ROOT\_MULTIPLICITIES _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The root_multiplicities variable is set to the list of the -multiplicities of the roots of an equation by the -solve operator. -

    -

    - -solvereturns its solutions in a list. The multipliciti -es of -each solution are put in the corresponding locations of the list -root_multiplicities. -

    -

    -

    - - - -T -INDEX

    - - - -T _ _ _ _ _ _ _ _ _ _ _ _ constant

    -

    - -The constant t stands for the truth value true. It cannot be used -as a scalar variable in a -block, as a looping variable in a - -for statement or as an -operator name. -

    -

    - - - -Variables -INDEX

    -Variables

    -
  • assumptions variable

    -

  • CARD\_NO variable

    -

  • E constant

    -

  • EVAL\_MODE variable

    -

  • FORT\_WIDTH variable

    -

  • HIGH\_POW variable

    -

  • I constant

    -

  • INFINITY constant

    -

  • LOW\_POW variable

    -

  • NIL constant

    -

  • PI constant

    -

  • requirements variable

    -

  • ROOT\_MULTIPLICITIES variable

    -

  • T constant

    -

  • - - -semicolon -INDEX

    - - - -; _ _ _ SEMICOLON _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The semicolon is a statement delimiter, indicating results are to be printed -when used in interactive mode. -

    -

    -

    -examples:

    -

    
    -(x+1)**2; 
    -
    -   2
    -  X  + 2*X + 1 
    -
    -
    -df(x**2 + 1,x); 
    -
    -  2*X
    -
    -

    Entering a Return without a semicolon or dollar sign resu -lts in a -prompt on the following line. A semicolon or dollar sign can be -added at this point to execute the statement. In interactive mode, a -statement that is ended with a semicolon and Return has its results -printed on the screen. -

    -

    -Inside a group statement <<...>> -or a begin...end block, a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a block without a specific return -statement, there is no difference between using the semicolon or dollar -sign. In a group statement, the last value produced is the value -returned by the group statement. Thus, if a semicolon or dollar sign is -placed between the last statement and the ending brackets, the group -statement returns the value 0 or nil, rather than the value of the -last statement. -

    -

    -

    - - - -dollar -INDEX

    - - - -$ _ _ _ DOLLAR _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The dollar sign is a statement delimiter, indicating results are not to be -printed when used in interactive mode. -

    -

    -

    -examples:

    -

    
    -
    -(x+1)**2$ 

    The workspace is set to x^2 + 2x + 1 - but nothing shows on the screen

    
    -
    -
    -ws; 
    -
    -   2
    -  X   + 2*X + 1
    -
    -

    -

    -

    -Entering a Return without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can -be added at this point to execute the statement. In interactive mode, a -statement that ends with a dollar sign $ and a Return is -executed, but the results not printed. -

    -

    -Inside a -group statement <<...>> - -or a begin...end -block, a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a -block without a specific - -return

    -

    -statement, there is no difference between using the semicolon or dollar -sign. -

    -

    -In a group statement, the last value produced is the value returned by the -group statement. Thus, if a semicolon or dollar sign is placed between the -last statement and the ending brackets, the group statement returns the -value 0 or nil, rather than the value of the last statement. -

    -

    -

    -

    - - - -percent -INDEX

    - - - -% _ _ _ PERCENT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The percent sign is used to precede comments; everything from a percent -to the end of the line is ignored. -

    -

    -

    -examples:

    -

    
    -
    -df(x**3 + y,x);% This is a comment key{Return} 
    -
    -
    -     2
    -  3*X  
    -
    -
    -int(3*x**2,x) %This is a comment; key{Return} 
    -

    A prompt is given, waiting for the semicolon that was not -detected in the comment

    -

    -

    -Statement delimiters ; and $ are not detected between a -percent sign and the end of the line. -

    -

    -

    - - - -dot -INDEX

    - - - -. _ _ _ DOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The . (dot) infix binary operator adds a new item to the beginning of an -existing -list. In high energy physics expressions, -it can also be used -to represent the scalar product of two Lorentz four-vectors. -

    -

    -

    -syntax:

    -<item> . <list> -

    -

    -

    -<item> can be any REDUCE scalar expression, including a list; -<list> must be a -list to avoid producing an error message. -The dot operator is right associative. -

    -

    -

    -examples:

    -

    
    -
    -liss := a . {}; 
    -
    -  LISS := {A} 
    -
    -
    -liss := b . liss; 
    -
    -  LISS := {B,A} 
    -
    -
    -newliss := liss . liss; 
    -
    -  NEWLISS := {{B,A},B,A} 
    -
    -
    -firstlis := a . b . {c}; 
    -
    -  FIRSTLIS := {A,B,C} 
    -
    -
    -secondlis := x . y . {z}; 
    -
    -  SECONDLIS := {X,Y,Z} 
    -
    -
    -for i := 1:3 sum part(firstlis,i)*part(secondlis,i);
    - 
    -
    -
    -  A*X + B*Y + C*Z
    -
    -

    - - -assign -INDEX

    - - - -:= _ _ _ ASSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The := is the assignment operator, assigning the value on the right-han -d -side to the identifier or other valid expression on the left-hand side. -

    -

    -

    -syntax:

    -<restricted\_expression> := <expression> -

    -

    -

    -<restricted\_expression> is ordinarily a single identifier, though simple - -expressions may be used (see Comments below). <expression> is any -valid REDUCE expression. If <expression> is a -matrix -identifier, then -<restricted\_expression> can be a matrix identifier (redimensioned if -necessary) which has each element set to the corresponding elements -of the identifier on the right-hand side. -

    -

    -

    -examples:

    -

    
    -a := x**2 + 1; 
    -
    -        2
    -  A := X   + 1 
    -
    -
    -a; 
    -
    -   2
    -  X  + 1 
    -
    -
    -first := second := third; 
    -
    -  FIRST := SECOND := THIRD 
    -
    -
    -first; 
    -
    -  THIRD 
    -
    -
    -second; 
    -
    -  THIRD 
    -
    -
    -b := for i := 1:5 product i; 
    -
    -  B := 120 
    -
    -
    -b; 
    -
    -  120 
    -
    -
    -w + (c := x + 3) + z; 
    -
    -  W + X + Z + 3 
    -
    -
    -c; 
    -
    -  X + 3 
    -
    -
    -y + b := c; 
    -
    -  Y + B := C 
    -
    -
    -y; 
    -
    -  - (B - C)
    -
    -

    The assignment operator is right associative, as shown in the seco -nd and -third examples. A string of such assignments has all but the last -item set to the value of the last item. Embedding an assignment statement -in another expression has the side effect of making the assignment, as well -as causing the given replacement in the expression. -

    -

    -Assignments of values to expressions rather than simple identifiers (such as in - -the last example above) can also be done, subject to the following remarks: -

    -

    - _ _ _ (i) -If the left-hand side is an identifier, an operator, or a power, the -substitution rule is added to the rule table. -

    -

    - _ _ _ (ii) -If the operators - + / appear on the left-hand side, all but the first - -term of the expression is moved to the right-hand side. -

    -

    - _ _ _ (iii) -If the operator * appears on the left-hand side, any constant terms are - -moved to the right-hand side, but the symbolic factors remain. -

    -

    -Assignment is valid for -array elements, but not for entire arrays. -The assignment operator can also be used to attach functionality to operators. -

    -

    -A recursive construction such as a := a + b is allowed, but when -a is referenced again, the process of resubstitution continues -until the expression stack overflows (you get an error message). -Recursive assignments can be done safely inside controlled loop -expressions, such as -for... or -repeat...until. -

    -

    -

    -

    - - - -equalsign -INDEX

    - - - -= _ _ _ EQUALSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The = operator is a prefix or infix equality comparison operator. -

    -

    -

    -syntax:

    -=(<expression>,<expression>) - or - <expression> = <expression> -

    -

    -

    -<expression> can be any REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -a := 4; 
    -
    -  A := 4 
    -
    -
    -if =(a,10) then write "yes" else write "no";
    - 
    -
    -
    -  no 
    -
    -
    -b := c; 
    -
    -  B := C 
    -
    -
    -if b = c then write "yes" else write "no";
    - 
    -
    -
    -  yes 
    -
    -
    -on rounded; 
    -
    -if 4.0 = 4 then write "yes" else write "no";
    - 
    -
    -
    -  yes
    -
    -

    This logical equality operator can only be used inside a condition -al -statement, such as -if...then...else -or -repeat...until. In other places the equal -sign establishes an algebraic object of type -equation. -

    -

    -

    -

    - - - -replace -INDEX

    - - - -=> _ _ _ REPLACE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The => operator is a binary operator used in -rule lists to -denote replacements. -

    -

    -

    -examples:

    -

    
    -operator f; 
    -
    -let f(x) => x^2; 
    -
    -f(x); 
    -
    -   2
    -  x
    -
    -

    - - -plussign -INDEX

    - - - -+ _ _ _ PLUSSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The + operator is a prefix or infix n-ary addition operator. -

    -

    -

    -syntax:

    -<expression> { +<expression>}+ -

    -

    -or +(<expression> {,<expression>}+) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -x**4 + 4*x**2 + 17*x + 1; 
    -
    -   4      2
    -  X  + 4*X  + 17*X + 1 
    -
    -
    -14 + 15 + x; 
    -
    -  X + 29 
    -
    -
    -+(1,2,3,4,5); 
    -
    -  15
    -
    -

    +is also valid as an addition operator for -matrix variables -that are of the same dimensions and for -equations. -

    -

    -

    - - - -minussign -INDEX

    - - - -- _ _ _ MINUSSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The - operator is a prefix or infix binary subtraction operator, as wel -l -as the unary minus operator. -

    -

    -

    -syntax:

    -<expression> - <expression> -or -(<expression>,<expression>) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -15 - 4; 
    -
    -  11 
    -
    -
    -x*(-5); 
    -
    -  - 5*X 
    -
    -
    -a - b - 15; 
    -
    -  A - B - 15 
    -
    -
    --(a,4); 
    -
    -  A - 4
    -
    -

    The subtraction operator is left associative, so that a - b - c is - equivalent -to (a - b) - c, as shown in the third example. The subtraction operator is -also valid with -matrix expressions of the correct dimensions -and with -equations. -

    -

    -

    - - - -asterisk -INDEX

    - - - -* _ _ _ ASTERISK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The * operator is a prefix or infix n-ary multiplication operator. -

    -

    -

    -syntax:

    -<expression> { * <expression>}+ -

    -

    -or *(<expression> {,<expression>}+) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -15*3; 
    -
    -  45 
    -
    -
    -24*x*yvalue*2; 
    -
    -  48*X*YVALUE 
    -
    -
    -*(6,x); 
    -
    -  6*X 
    -
    -
    -on rounded; 
    -
    -3*1.5*x*x*x; 
    -
    -       3
    -  4.5*X  
    -
    -
    -off rounded; 
    -
    -2x**2; 
    -
    -     2
    -  2*X
    -
    -

    REDUCE assumes you are using an implicit multiplication operator w -hen an -identifier is preceded by a number, as shown in the last line above. Since -no valid identifiers can begin with numbers, there is no ambiguity in -making this assumption. -

    -

    -The multiplication operator is also valid with -matrix expressions -of the -proper dimensions: matrices A and B -can be multiplied if -A is n x m and B is -m x p. Matrices and -equations can also be -multiplied by scalars: the -result is as if each element was multiplied by the scalar. -

    -

    -

    - - - -slash -INDEX

    - - - -/ _ _ _ SLASH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The / operator is a prefix or infix binary division operator or -prefix unary -reciprocal operator. -

    -

    -

    -syntax:

    -<expression>/<expression> or - /<expression> -

    -

    -or /(<expression>,<expression>) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -20/5; 
    -
    -  4  
    -
    -
    -100/6; 
    -
    -  50
    -  -- 
    -  3
    -
    -
    -16/2/x; 
    -
    -  8
    -  - 
    -  X
    -
    -
    -/b; 
    -
    -  1
    -  - 
    -  B
    -
    -
    -/(y,5); 
    -
    -  Y
    -  - 
    -  5
    -
    -
    -on rounded; 
    -
    -35/4; 
    -
    -  8.75 
    -
    -
    -/20; 
    -
    -  0.05
    -
    -

    The division operator is left associative, so that a/b/c -is equivalent -to (a/b)/c. The division operator is also valid with square - -matrix expressions of the same dimensions: With A and - -B both n x n matrices and B -invertible, A/B is -given by A*B^-1. -Division of a matrix by a scalar is defined, with the results being the -division of each element of the matrix by the scalar. Division of a -scalar by a matrix is defined if the matrix is invertible, and has the -effect of multiplying the scalar by the inverse of the matrix. When -/ is used as a reciprocal operator for a matrix, the inverse of -the matrix is returned if it exists. -

    -

    -

    - - - -power -INDEX

    - - - -** _ _ _ POWER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ** operator is a prefix or infix binary exponentiation operator. -

    -

    -

    -syntax:

    -<expression> **<expression> - or **(<expression>,<expression>) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -x**15; 
    -
    -   15
    -  X   
    -
    -
    -x**y**z; 
    -
    -   Y*Z
    -  X    
    -
    -
    -x**(y**z); 
    -
    -    Z
    -   Y
    -  X   
    -
    -
    - **(y,4); 
    -
    -   4
    -  Y  
    -
    -
    -on rounded; 
    -
    -2**pi; 
    -
    -  8.82497782708
    -
    -

    The exponentiation operator is left associative, so that a**b* -*c is -equivalent to (a**b)**c, as shown in the second example. Note -that this is not a**(b**c), which would be right associative. -

    -

    -When -nat is on (the default), REDUCE output produces raised - -exponents, as shown. The symbol ^, which is the upper-case 6 on -most keyboards, may be used in the place of **. -

    -

    -A square -matrix may also be raised to positive and negative pow -ers -with the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and -equations may be raised to -fractional and floating-point powers. -

    -

    -

    - - - -caret -INDEX

    - - - -^ _ _ _ CARET _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ^ operator is a prefix or infix binary exponentiation operator. -It is equivalent to -power or **. -

    -

    -

    -syntax:

    -<expression> ^<expression> - or ^(<expression>,<expression>) -

    -

    -

    -<expression> may be any valid REDUCE expression. -

    -

    -

    -examples:

    -

    
    -x^15; 
    -
    -   15
    -  X   
    -
    -
    -x^y^z; 
    -
    -   Y*Z
    -  X    
    -
    -
    -x^(y^z); 
    -
    -    Z
    -   Y
    -  X   
    -
    -
    -^(y,4); 
    -
    -   4
    -  Y  
    -
    -
    -on rounded; 
    -
    -2^pi; 
    -
    -  8.82497782708
    -
    -

    The exponentiation operator is left associative, so that a^b^c - is -equivalent to (a^b)^c, as shown in the second example. Note -that this is <not> a^(b^c), which would be right associative. -

    -

    -When -nat is on (the default), REDUCE output produces raised - -exponents, as shown. -

    -

    -A square -matrix may also be raised to positive -and negative powers with -the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and -equations -may be raised to fractional and floating-point powers. -

    -

    -

    - - - -geqsign -INDEX

    - - - ->= _ _ _ GEQSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - ->= is an infix binary comparison operator, which returns true if -its first argument is greater than or equal to its second argument. -

    -

    -

    -syntax:

    -<expression> >= <expression> -

    -

    -

    -<expression> must evaluate to an integer or floating-point number. -

    -

    -

    -examples:

    -

    
    -if (3 >= 2) then yes; 
    -
    -  yes 
    -
    -
    -a := 15; 
    -
    -  A := 15 
    -
    -
    -if a >= 20 then big else small;
    - 
    -
    -  small 
    -
    -

    The binary comparison operators can only be used for comparisons b -etween -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as -if...then...else -or -repeat...until or -while...do. -

    -

    -

    - - - -greater -INDEX

    - - - -> _ _ _ GREATER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The > is an infix binary comparison operator that returns - true if its first argument is strictly greater than its second. -

    -

    -

    -syntax:

    -<expression> > <expression> -

    -

    -

    -<expression> must evaluate to a number, e.g., integer, rational or -floating point number. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -if 3.0 > 3 then write "different" else write "same"; 
    -
    -
    -  same 
    -
    -
    -off rounded; 
    -
    -a := 20; 
    -
    -  A := 20 
    -
    -
    -if a > 20 then write "bigger" else write "not bigger"; 
    -
    -
    -  not bigger 
    -
    -

    The binary comparison operators can only be used for comparisons b -etween -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as -if...then...else or - -repeat...until or -while...do. -

    -

    -

    - - - -leqsign -INDEX

    - - - -<= _ _ _ LEQSIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -<= is an infix binary comparison operator that returns - true if its first argument is less than or equal to its second argument. -

    -

    -

    -syntax:

    -<expression> <= <expression> -

    -

    -

    -<expression> must evaluate to a number, e.g., integer, rational or -floating point number. -

    -

    -

    -examples:

    -

    
    -a := 10; 
    -
    -  A := 10 
    -
    -
    -if a <= 10 then true; 
    -
    -  true
    -
    -

    The binary comparison operators can only be used for comparisons b -etween -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as -if...then...else or - -repeat...until or -while...do. -

    -

    -

    - - - -less -INDEX

    - - - -< _ _ _ LESS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -< is an infix binary logical comparison operator that -returns true if its first argument is strictly less than its second -argument. -

    -

    -

    -syntax:

    -<expression> < <expression> -

    -

    -

    -<expression> must evaluate to a number, e.g., integer, rational or -floating point number. -

    -

    -

    -examples:

    -

    
    -f := -3; 
    -
    -  F := -3 
    -
    -
    -if f < -3 then write "yes" else write "no"; 
    -
    -
    -  no
    -
    -

    The binary comparison operators can only be used for comparisons b -etween -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as -if...then...else -or -repeat...until or - -while...do. -

    -

    -

    - - - -tilde -INDEX

    - - - -~ _ _ _ TILDE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ~ is used as a unary prefix operator in the left-hand -sides of -rules to mark -free variables. A double tilde -marks an optional -free variable. -

    -

    - - - -group -INDEX

    - - - -<< _ _ _ GROUP _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The <<...>> command is a group statement, -used to group statements -together where REDUCE expects a single statement. -

    -

    -

    -syntax:

    -<<<statement>{; <statement> or - <statement>}* >> -

    -

    -

    -<statement> may be any valid REDUCE statement or expression. -

    -

    -

    -examples:

    -

    
    -a := 2; 
    -
    -  A := 2 
    -
    -
    -if a < 5 then <<b := a + 10; write b>>; 
    -
    -
    -  12 
    -
    -
    -<<d := c/15; f := d + 3; f**2>>;
    - 
    -
    -   2
    -  C  + 90*C + 202
    -  ----------------
    -        225
    -
    -

    The value returned from a group statement is the value of the last - -individual statement executed inside it. Note that when a semicolon is -placed between the last statement and the closing brackets, 0 or - nil is returned. Group statements are often used in the -consequence portions of -if...then, - -repeat...until, and - -while...do -clauses. They may also be used in interactive -operation to execute several statements at one time. Statements inside -the group statement are separated by semicolons or dollar signs. -

    -

    -

    -

    - - - -AND -INDEX

    - - - -AND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The and binary logical operator returns true if both of its -arguments are true. -

    -

    -

    -syntax:

    -<logical\_expression> and <logical\_expression> -

    -

    -

    -<logical\_expression> must evaluate to true or nil. -

    -

    -

    -examples:

    -

    
    -a := 12; 
    -
    -  A := 12 
    -
    -
    -if numberp a and a < 15 then write a**2 else write "no";
    - 
    -
    -
    -  144 
    -
    -
    -clear a; 
    -
    -if numberp a and a < 15 then write a**2 else write "no";
    - 
    -
    -
    -  no
    -
    -

    Logical operators can only be used inside conditional statements, -such as - -while...do or - -if...then...else. and exami -nes each of -its arguments in order, and quits, returning nil, on finding an -argument that is not true. An error results if it is used in other -contexts. -

    -

    -andis left associative: x and y and z is equivalent to -(x and y) and z. -

    -

    -

    - - - -BEGIN -INDEX

    - - - -BEGIN _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -begin is used to start a -block statement, which is closed with -end. -

    -

    -

    -syntax:

    -begin<statement>{; <statement>}* end -

    -

    -

    -<statement> is any valid REDUCE statement. -

    -

    -

    -examples:

    -

    
    -begin for i := 1:3 do write i end; 
    -
    -
    -  1
    -  2
    -  3     
    -
    -
    -begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end;
    - 
    -
    -
    -  1 
    -
    -
    -b; 
    -
    -   4        3        2
    -  X   - 10*X   + 35*X   - 50*X  + 24
    -
    -

    A begin...end block can do actions (such as -write), but -does not -return a value unless instructed to by a -return statement, which must -be the last statement executed in the block. It is unnecessary to insert -a semicolon before the end. -

    -

    -Local variables, if any, are declared in the first statement immediately -after begin, and may be defined as scalar, integer, or -real. -array variables declared -within a begin...end block -are global in every case, and -let statements have global -effects. A -let statement involving a formal parameter affects -the calling parameter that corresponds to it. -let statements -involving local variables make global assignments, overwriting outside -variables by the same name or creating them if they do not exist. You -can use this feature to affect global variables from procedures, but be -careful that you do not do it inadvertently. -

    -

    -

    -

    - - - -block -INDEX

    - - - -BLOCK _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -A block is a sequence of statements enclosed by -commands -begin and -end. -

    -

    -

    -syntax:

    -begin<statement>{; <statement>}* end -

    -

    -

    -For more details see -begin. -

    -

    - - - -COMMENT -INDEX

    - - - -COMMENT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -Beginning with the word comment, all text until the next statement -terminator (; or $) is ignored. -

    -

    -

    -examples:

    -

    
    -
    -x := a**2 comment--a is the velocity of the particle;;
    - 
    -
    -
    -        2
    -  X := A
    -
    -

    Note that the first semicolon ends the comment and the second one - -terminates the original REDUCE statement. -

    -

    -Multiple-line comments are often needed in interactive files. The -comment command allows a normal-looking text to accompany the -REDUCE statements in the file. -

    -

    -

    - - - -CONS -INDEX

    - - - -CONS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The cons operator adds a new element to the beginning of a - -list. Its -operation is identical to the symbol -dot (dot). It can be used -infix or prefix. -

    -

    -

    -syntax:

    -cons(<item>,<list>) or <item> cons <list -> -

    -

    -

    -<item> can be any REDUCE scalar expression, including a list; <list> - -must be a list. -

    -

    -

    -examples:

    -

    
    -
    -liss := cons(a,{b}); 
    -
    -  {A,B} 
    -
    -
    -
    -liss := c cons liss; 
    -
    -  {C,A,B} 
    -
    -
    -
    -newliss := for each y in liss collect cons(y,list x);
    - 
    -
    -
    -  NEWLISS := {{C,X},{A,X},{B,X}} 
    -
    -
    -
    -for each y in newliss sum (first y)*(second y);
    - 
    -
    -
    -  X*(A + B + C)
    -
    -

    If you want to use cons to put together two elements into - a new list, -you must make the second one into a list with curly brackets or the list - -command. You can also start with an empty list created by {}. -

    -

    -The cons operator is right associative: a cons b cons c is val -id -if c is a list; b need not be a list. The list produced is -{a,b,c}. -

    -

    -

    -

    - - - -END -INDEX

    - - - -END _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The command end has two main uses: -

    -

    - _ _ _ (i) -as the ending of a -begin...end -block; and -

    - _ _ _ (ii) -to end input from a file. -

    -

    -In a begin...end -block, there need not be a delimiter -(; or $) before the end, though there must be one -after it, or a right bracket matching an earlier left bracket. -

    -

    -Files to be read into REDUCE should end with end;, which must be -preceded by a semicolon (usually the last character of the previous line). -The additional semicolon avoids problems with mistakes in the files. If -you have suspended file operation by answering n to a pause -command, you are still, technically speaking, ``in" the file. Use -end to exit the file. -

    -

    -An end at the top level of a program is ignored. -

    -

    -

    - - - -EQUATION -INDEX

    - - - -EQUATION _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -

    -

    -An equation is an expression where two algebraic expressions -are connected by the (infix) operator -equal or by =. -For access to the components of an equation the operators - -lhs, -rhs or -part can be used. The -evaluation of the left-hand side of an equation is controlled -by the switch -evallhseqp, while the right-hand side is -evaluated unconditionally. When an equation is part of a -logical expression, e.g. in a -if or -while statement, -the equation is evaluated by subtracting both sides can comparing -the result with zero. -

    -

    -Equations occur in many contexts, e.g. as arguments of the -sub -operator and in the arguments and the results -of the operator -solve. An equation can be member of a -list -and you may assign an equation to a variable. Elementary arithmetic is supported - -for equations: if -evallhseqp is on, you may add and subtract -equations, and you can combine an equation with a scalar expression by -addition, subtraction, multiplication, division and raise an equation -to a power. -

    -examples:

    -

    
    -on evallhseqp;
    -
    -u:=x+y=1$
    -
    -v:=2x-y=0$
    -
    -2*u-v; 
    -
    -  - 3*y=-2
    -
    -
    -ws/3; 
    -
    -    2
    -  y=--
    -    3
    -
    -

    -

    -Important: the equation must occur in the leftmost term of such an expression. -For other operations, e.g. taking function values of both sides, use the - -map operator. -

    -

    - - - -FIRST -INDEX

    - - - -FIRST _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The first operator returns the first element of a -list. -

    -syntax:

    -

    -

    -first(<list>) or first <list> -

    -

    -

    -<list> must be a non-empty list to avoid an error message. -

    -

    -

    -examples:

    -

    
    -alist := {a,b,c,d}; 
    -
    -  ALIST := {A,B,C,D} 
    -
    -
    -first alist; 
    -
    -  A 
    -
    -
    -blist := {x,y,{ww,aa,qq},z}; 
    -
    -  BLIST := {X,Y,{WW,AA,QQ},Z} 
    -
    -
    -first third blist; 
    -
    -  WW
    -
    -

    - - -FOR -INDEX

    - - - -FOR _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The for command is used for iterative loops. There are many -possible forms it can take. -

    -

    -

    
    -                   /                   
    -   /               |STEP <number> UNTIL|        
    -   |<var>:=<number>|                   |<number>|
    -FOR|               |         :         |        |<action> <exprn>
    -   |                                  /        |
    -   |EACH <var> IN <list>                        |
    -                                               /
    -
    - where <action> ::= DO|PRODUCT|SUM|COLLECT|JOIN.
    -

    <var> can be any valid REDUCE identifier except t o -r -nil, <inc>, <start> and <stop> can be any expression - -that evaluates to a positive or negative integer. <list> must be a -valid -list structure. -The action taken must be one of the actions shown -above, each of which is followed by a single REDUCE expression, statement -or a -group (<<...>>) or -block -( -begin... -end) statement. -

    -

    -

    -examples:

    -

    
    -for i := 1:10 sum i;                                    
    - 
    -
    -
    -  55 
    -
    -
    -for a := -2 step 3 until 6 product a;
    -							
    -
    -
    -  -8 
    -
    -
    -a := 3; 
    -
    -  A := 3 
    -
    -
    -for iter := 4:a do write iter; 
    -
    -m := 0; 
    -
    -  M := 0 
    -
    -
    -for s := 10 step -1 until 3 do <<d := 10*s;m := m + d>>; 
    -
    -m; 
    -
    -  520 
    -
    -
    -for each x in {q,r,s} sum x**2; 
    -
    -   2    2    2
    -  Q  + R  + S  
    -
    -
    -for i := 1:4 collect 1/i;                              
    - 
    -
    -
    -     1 1 1
    -  {1,-,-,-} 
    -     2 3 4
    -
    -
    -for i := 1:3 join list solve(x**2 + i*x + 1,x);         
    - 
    -
    -
    -        SQRT(3)*I + 1
    -  {{X= --------------,
    -              2
    -        SQRT(3)*I - 1
    -    X= --------------}
    -              2
    -   {X=-1},
    -         SQRT(5) + 3   SQRT(5) - 3
    -   {X= - -----------,X=-----------}}
    -              2             2
    -
    -

    The behavior of each of the five action words follows: -

    -

    -

    
    -                           Action Word Behavior
    -Keyword   Argument Type                    Action
    -   do    statement, command, group   Evaluates its argument once
    -         or block                    for each iteration of the loop,
    -                                     not saving results
    -collect expression, statement,       Evaluates its argument once for
    -        command, group, block, list  each iteration of the loop,
    -                                     storing the results in a list
    -                                     which is returned by the for
    -                                     statement when done
    - join   list or an operator which    Evaluates its argument once for
    -        produces a list              each iteration of the loop,
    -                                     appending the elements in each
    -                                     individual result list onto the
    -                                     overall result list
    -product expression, statement,       Evaluates its argument once for
    -        command, group or block      each iteration of the loop,
    -                                     multiplying the results together
    -                                     and returning the overall product
    -  sum   expression, statement,       Evaluates its argument once for
    -        command, group or block      each iteration of the loop,
    -                                     adding the results together and
    -                                     returning the overall sum
    -

    For number-driven for statements, if the ending limit is -smaller -than the beginning limit (larger in the case of negative steps) the action -statement is not executed at all. The iterative variable is local to the -for statement, and does not affect the value of an identifier with -the same name. For list-driven for statements, if the list is -empty, the action statement is not executed, but no error occurs. -

    -

    -You can use nested for statements, with the inner for -statement after the action keyword. You must make sure that your inner -statement returns an expression that the outer statement can handle. -

    -

    -

    - - - -FOREACH -INDEX

    - - - -FOREACH _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -foreachis a synonym for the for each variant of the - -for construct. It is designed to iterate down a list, -and an -error will occur if a list is not used. The use of for each is -preferred to foreach. -

    -

    -

    -syntax:

    -foreach<variable> in <list> <action> <expression -> -

    -

    -where <action> ::= do | product | sum | collect | join -

    -

    -

    -

    -examples:

    -

    
    -foreach x in {q,r,s} sum x**2; 
    -
    -   2    2    2
    -  Q  + R  + S
    -
    -

    - - -GEQ -INDEX

    - - - -GEQ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The geq operator is a binary infix or prefix logical operator. It -returns true if its first argument is greater than or equal to its second -argument. As an infix operator it is identical with >=. -

    -syntax:

    -

    -

    -geq(<expression>,<expression>) or <expression> -geq <expression> -

    -

    -

    -<expression> can be any valid REDUCE expression that evaluates to a -number. -

    -

    -

    -examples:

    -

    
    -a := 20; 
    -
    -  A := 20 
    -
    -
    -if geq(a,25) then write "big" else write "small";
    -			 
    -
    -
    -  small 
    -
    -
    -if a geq 20 then write "big" else write "small";
    -			 
    -
    -
    -  big  
    -
    -
    -if (a geq 18) then write "big" else write "small";
    -			 
    -
    -
    -  big
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    - -if...then...else or - -repeat...until. -

    -

    -

    - - - -GOTO -INDEX

    - - - -GOTO _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -Inside a begin...end -block, goto, or -preferably, go to, transfers flow of control to a labeled statement. -

    -syntax:

    -

    -

    -go to<labeled_statement> or goto <labeled_statement -> -

    -

    -

    -<labeled_statement> is of the form <label> :<statement -> -

    -

    -

    -examples:

    -

    
    -     procedure dumb(a);
    -        begin scalar q;
    -           go to lab;
    -           q := df(a**2 - sin(a),a);
    -           write q;
    -      lab: return a
    -        end;
    - 
    -
    -  DUMB 
    -
    -
    -
    -dumb(17); 
    -
    -  17
    -
    -

    go tocan only be used inside a begin...end - - -block, and inside -the block only statements at the top level can be labeled, not ones inside -<<...>>, -while...do, etc. -

    -

    -

    - - - -GREATERP -INDEX

    - - - -GREATERP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The greaterp logical operator returns true if its first argument is -strictly greater than its second argument. As an infix operator it is -identical with >. -

    -syntax:

    -

    -

    -greaterp(<expression>,<expression>) or <expression> -greaterp <expression> -

    -

    -

    -<expression> can be any valid REDUCE expression that evaluates to a -number. -

    -

    -

    -examples:

    -

    
    -
    -a := 20; 
    -
    -  A := 20 
    -
    -
    -if greaterp(a,25) then write "big" else write "small";
    -			 
    -
    -
    -  small 
    -
    -
    -if a greaterp 20 then write "big" else write "small";
    -			 
    -
    -
    -  small 
    -
    -
    -if (a greaterp 18) then write "big" else write "small";
    -			 
    -
    -
    -  big
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    - -if...then...else -or -repeat... -while. -

    -

    -

    - - - -IF -INDEX

    - - - -IF _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The if command is a conditional statement that executes a statement -if a condition is true, and optionally another statement if it is not. -

    -syntax:

    -

    -

    -if<condition> then <statement> - _ _ _ option(else <statement>) -

    -

    -

    -<condition> must be a logical or comparison operator that evaluates to -a -boolean value. -<statement> must be a single REDUCE statement or a - -group (<<...>>) or - -block (begin...end) statement. -

    -

    -

    -examples:

    -

    
    -if x = 5 then a := b+c else a := d+f;
    -			 
    -
    -
    -  D + F 
    -
    -
    -x := 9; 
    -
    -  X := 9 
    -
    -
    -if numberp x and x<20 then y := sqrt(x) else write "illegal";
    -			 
    -
    -
    -  3  
    -
    -
    -clear x; 
    -
    -if numberp x and x<20 then y := sqrt(x) else write "illegal";
    -			 
    -
    -
    -  illegal 
    -
    -
    -x := 12; 
    -
    -  X := 12 
    -
    -
    -a := if x < 5 then 100 else 150;
    -			 
    -
    -
    -  A := 150 
    -
    -
    -b := u**(if x < 10 then 2);
    -			 
    -
    -  B := 1 
    -
    -
    -bb := u**(if x > 10 then 2);
    -			 
    -
    -         2
    -  BB := U
    -
    -

    An if statement may be used inside an assignment statemen -t and sets -its value depending on the conditions, or used anywhere else an -expression would be valid, as shown in the last example. If there is no - else clause, the value is 0 if a number is expected, and nothing -otherwise. -

    -

    -The else clause may be left out if no action is to be taken if the -condition is false. -

    -

    -The condition may be a compound conditional statement using -and or - -or. If a non-conditional statement, such as a constant -, is used by -accident, it is assumed to have value true. -

    -

    -Be sure to use -group or -block statements after - then or else. -

    -

    -The if operator is right associative. The following constructions are -examples: -

    -

    - _ _ _ (1) -

    -syntax:

    -

    -

    -if<condition> then if <condition> the -n - <action> else <action> -

    -

    -

    -which is equivalent to -

    -syntax:

    -

    -

    -if<condition> then (if <condition> - then <action> else <action>); -

    -

    -

    - _ _ _ (2) -

    -syntax:

    -

    -

    -if<condition> then <action> else if - <condition> then <action> else <action> -

    -

    -

    -which is equivalent to -

    -syntax:

    -

    -

    -if<condition> then <action> else -

    -

    -(if <condition> then <action> - else <action>). -

    -

    -

    -

    -

    -

    - - - -LIST -INDEX

    - - - -LIST _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The list operator constructs a list from its arguments. -

    -syntax:

    -

    -

    -list(<item> {,<item>}*) or - list() to construct an empty list. -

    -

    -

    -<item> can be any REDUCE scalar expression, including another list. -Left and right curly brackets can also be used instead of the operator -list to construct a list. -

    -

    -

    -examples:

    -

    
    -liss := list(c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x));
    -	 
    -
    -
    -                            2
    -  LISS := {C,B,C,{XX,YY},3*X  + 7*X + 3,2*COS(2*X)} 
    -
    -
    -length liss; 
    -
    -  6 
    -
    -
    -liss := {c,b,c,{xx,yy},3x**2+7x+3,df(sin(2*x),x)};
    -	 
    -
    -
    -                            2
    -  LISS := {C,B,C,{XX,YY},3*X  + 7*X + 3,2*COS(2*X)} 
    -
    -
    -emptylis := list(); 
    -
    -  EMPTYLIS := {} 
    -
    -
    -a . emptylis; 
    -
    -  {A}
    -
    -

    Lists are ordered, hierarchical structures. The elements stay wher -e you -put them, and only change position in the list if you specifically change -them. Lists can have nested sublists to any (reasonable) level. The - -part operator can be used to access elements anywhere -within a list -hierarchy. The -length operator counts the -number of top-level elements -of its list argument; elements that are themselves lists still only -count as one element. -

    -

    -

    - - - -OR -INDEX

    - - - -OR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The or binary logical operator returns true if either one or -both of its arguments is true. -

    -syntax:

    -

    -

    -<logical expression> or <logical expression> -

    -

    -

    -<logical expression> must evaluate to true or nil. -

    -

    -

    -examples:

    -

    
    -a := 10; 
    -
    -  A := 10 
    -
    -
    -if a<0 or a>140 then write "not a valid human age" else
    -   write "age = ",a;
    - 
    -
    -
    -
    -  age = 10 
    -
    -
    -a := 200; 
    -
    -  A := 200 
    -
    -
    -if a < 0 or a > 140 then write "not a valid human age";
    -			 
    -
    -
    -  not a valid human age
    -
    -

    The or operator is left associative: x or y or z - is equivalent to -(x or y) or z. -

    -

    -Logical operators can only be used in conditional expressions, such as -

    -

    - -if...then...else -and -while...do. -or evaluates its arguments in order and quits, returning true, -on finding the first true statement. -

    -

    -

    - - - -PROCEDURE -INDEX

    - - - -PROCEDURE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The procedure command allows you to define a mathematical operation as -a -function with arguments. -

    -syntax:

    -

    -

    - _ _ _ <option> procedure <identifier> - (<arg>{,<arg>}+);<body> -

    -

    -

    -The <option> may be -algebraic or -symbolic, -indicating the -mode under which the procedure is executed, or -real or - -integer, indicating the type of answer expected. The d -efault is -algebraic. Real or integer procedures are subtypes of algebraic -procedures; type-checking is done on the results of integer procedures, but -not on real procedures (in the current REDUCE release). <identifier> -may be any valid REDUCE identifier that is not already a procedure name, -operator, -array or -matrix. -<arg> is a formal parameter that may be any -valid REDUCE identifier. <body> is a single statement (a -group -or -block statement may be used) with the desired activiti -es in it. -

    -

    -

    -examples:

    -

    
    -procedure fac(n);
    -   if not (fixp(n) and n>=0)
    -     then rederr "Choose nonneg. integer only"
    -    else for i := 0:n-1 product i+1;
    -
    -			 
    -
    -  FAC 
    -
    -
    -fac(0); 
    -
    -  1 
    -
    -
    -fac(5); 
    -
    -  120 
    -
    -
    -fac(-5); 
    -
    -  ***** choose nonneg. integer only
    -
    -

    Procedures are automatically declared as operators upon definition -. When -REDUCE has parsed the procedure definition and successfully converted it to -a form for its own use, it prints the name of the procedure. Procedure -definitions cannot be nested. Procedures can call other procedures, or can -recursively call themselves. Procedure identifiers can be cleared as you -would clear an operator. Unlike -let statements, new definitions -under the same procedure name replace the previous definitions completely. -

    -

    -Be careful not to use the name of a system operator for your own procedure. -REDUCE may or may not give you a warning message. If you redefine a system -operator in your own procedure, the original function of the system operator -is lost for the remainder of the REDUCE session. -

    -

    -Procedures may have none, one, or more than one parameter. A REDUCE -parameter is a formal parameter only; the use of x as a parameter in -a procedure definition has no connection with a value of x in -the REDUCE session, and the results of calling a procedure have no effect -on the value of x. If a procedure is called with x as a -parameter, the current value of x is used as specified in the -computation, but is not changed outside the procedure. -Making an assignment statement by := with a -formal parameter on the left-hand side only changes the value of the -calling parameter within the procedure. -

    -

    -Using a -let statement inside a procedure always changes the va -lue -globally: a let with a formal parameter makes the change to the calling - -parameter. let statements cannot be made on local variables inside - -begin...end -blocks. -When -clear statements are used on formal -parameters, the calling variables associated with them are cleared globally too. - -The use of let or clear statements inside procedures -should be done with extreme caution. -

    -

    -Arrays and operators may be used as parameters to procedures. The body of the -procedure can contain statements that appropriately manipulate these -arguments. Changes are made to values of the calling arrays or operators. -Simple expressions can also be used as arguments, in the place of scalar -variables. Matrices may not be used as arguments to procedures. -

    -

    -A procedure that has no parameters is called by the procedure name, -immediately followed by empty parentheses. The empty parentheses may be left -out when writing a procedure with no parameters, but must appear in a call of -the procedure. If this is a nuisance to you, use a -let statement on -the name of the procedure (i.e., let noargs = noargs()) after which -you can call the procedure by just its name. -

    -

    -Procedures that have a single argument can leave out the parentheses around -it both in the definition and procedure call. (You can use the parentheses if -you wish.) Procedures with more than one argument must use parentheses, with -the arguments separated by commas. -

    -

    -Procedures often have a begin...end block in them. Inside the - -block, local variables are declared using scalar, real or -integer declarations. -The declarations must be made immediately after the word -begin, and if more than one type of declaration is made, they are -separated by semicolons. REDUCE currently does no type checking on local -variables; real and integer are treated just like scalar -. -Actions take place as specified in the statements inside the block statement. -Any identifiers that are not formal parameters or local variables are treated -as global variables, and activities involving these identifiers are global in -effect. -

    -

    -If a return value is desired from a procedure call, a specific - -return command must be the last statement executed bef -ore exiting -from the procedure. If no return is used, a procedure returns a -zero or no value. -

    -

    -Procedures are often written in a file using an editor, then the file -is input using the command -in. This method allows easy changes in -development, and also allows you to load the named procedures whenever -you like, by loading the files that contain them. -

    -

    -

    - - - -REPEAT -INDEX

    - - - -REPEAT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The -repeat command causes repeated execution of a statemen -t - until

    -

    -the given condition is found to be true. The statement is always executed -at least once. -

    -syntax:

    -

    -

    -repeat<statement> until <condition> -

    -

    -

    -<statement> can be a single statement, -group statement, or -a begin...end -block. <condition> must be -a logical operator that evaluates to true or nil. -

    -

    -

    -examples:

    -

    
    -<<m := 4; repeat <<write 100*x*m;m := m-1>> until m = 0>
    ->;
    -			 
    -
    -
    -  400*X
    -  300*X
    -  200*X
    -  100*X
    -
    -
    -
    -<<m := -1; repeat <<write m; m := m-1>> until m <= 0>
    ->;
    -			 
    -
    -
    -  -1
    -
    -

    repeatmust always be followed by an until with a - condition. -Be careful not to generate an infinite loop with a condition that is never -true. In the second example, if the condition had been m = 0, it -would never have been true since m already had value -2 when the -condition was first evaluated. -

    -

    -

    - - - -REST -INDEX

    - - - -REST _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The rest operator returns a -list containing all but the first -element of the list it is given. -

    -syntax:

    -

    -

    -rest(<list>) or rest <list> -

    -

    -

    -

    -<list> must be a non-empty list, but need not have more than one element. - -

    -

    -

    -examples:

    -

    
    -alist := {a,b,c,d}; 
    -
    -  ALIST := {A,B,C,D}; 
    -
    -
    -rest alist; 
    -
    -  {B,C,D} 
    -
    -
    -blist := {x,y,{aa,bb,cc},z}; 
    -
    -  BLIST := {X,Y,{AA,BB,CC},Z} 
    -
    -
    -second rest blist; 
    -
    -  {AA,BB,CC} 
    -
    -
    -clist := {c}; 
    -
    -  CLIST := C 
    -
    -
    -rest clist; 
    -
    -  {}
    -
    -

    - - -RETURN -INDEX

    - - - -RETURN _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The return command causes a value to be returned from inside a -begin...end -block. -

    -

    -

    -syntax:

    -begin<statements> return <(expression)> - end

    -

    -

    -

    -<statements> can be any valid REDUCE statements. The value of -<expression> is returned. -

    -

    -

    -examples:

    -

    
    -begin write "yes"; return a end; 
    -
    -  yes
    -  A
    -
    -
    -procedure dumb(a);
    -  begin if numberp(a) then return a else return 10 end;
    -
    -						 
    -
    -  DUMB 
    -
    -
    -dumb(x); 
    -
    -  10 
    -
    -
    -dumb(-5); 
    -
    -  -5  
    -
    -
    -procedure dumb2(a);
    -  begin c := a**2 + 2*a + 1; d := 17; c*d; return end;
    -		 
    -
    -  DUMB2 
    -
    -
    -dumb2(4); 
    -
    -c; 
    -
    -  25 
    -
    -
    -d; 
    -
    -  17
    -
    -

    Note in dumb2 above that the assignments were made as req -uested, but -the product c*d cannot be accessed. Changing the procedure to read -return c*d would remedy this problem. -

    -

    -The return statement is always the last statement executed before -leaving the block. If return has no argument, the block is exited but -no value is returned. A block statement does not need a return ; -the statements inside terminate in their normal fashion without one. -In that case no value is returned, although the specified actions inside the -block take place. -

    -

    -The return command can be used inside <<...>> - - -group statements and - -if...then...else commands that -are inside begin...end -blocks. -It is not valid in these constructions that are not inside -a begin...end - block. It is not valid inside -for, - -repeat...until or -while...do - loops in any construction. To force early termination from loops, the -go to( -goto) command must be used. -When you use nested block statements, a -return from an inner block exits returning a value to the next-outermos -t -block, rather than all the way to the outside. -

    -

    -

    - - - -REVERSE -INDEX

    - - - -REVERSE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The reverse operator returns a -list that is the reverse of the -list it is given. -

    -syntax:

    -

    -

    -reverse(<list>) or reverse <list> -

    -

    -

    -<list> must be a -list. -

    -

    -

    -examples:

    -

    
    -aa := {c,b,a,{x**2,z**3},y}; 
    -
    -                 2  3
    -  AA := {C,B,A,{X ,Z },Y} 
    -
    -
    -reverse aa; 
    -
    -       2  3
    -  {Y,{X ,Z },A,B,C} 
    -
    -
    -reverse(q . reverse aa); 
    -
    -           2  3
    -  {C,B,A,{X ,Z },Y,Q}
    -
    -

    reverseand -cons can be used together to add a new element to -the end of a list (. adds its new element to the beginning). The -reverse operator uses a noticeable amount of system resources, -especially if the list is long. If you are doing much heavy-duty list -manipulation, you should probably design your algorithms to avoid much -reversing of lists. A moderate amount of list reversing is no problem. -

    -

    -

    - - - -RULE -INDEX

    - - - -RULE _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -

    -

    -A rule is an instruction to replace an algebraic expression -or a part of an expression by another one. -

    -syntax:

    -

    -

    -<lhs> => <rhs> or -<lhs> => <rhs> when <cond> -

    -

    -

    -<lhs> is an algebraic expression used as search pattern and -<rhs> is an algebraic expression which replaces matches of -<rhs>. => is the operator -replace. -

    -

    -<lhs> can contain -free variables which are -symbols preceded by a tilde ~ in their leftmost position -in <lhs>. -A double tilde marks an -optional free variable. -If a rule has a when <cond> -part it will fire only if the evaluation of <cond> has a -result -true. <cond> may contain references to -free variables of <lhs>. -

    -

    -Rules can be collected in a -list which then forms a - rule list. Rule lists can be used to collect -algebraic knowledge for a specific evaluation context. -

    -

    -Rulesand rule lists are globally activated and -deactivated by -let, -forall, -clearrules. -For a single evaluation they can be locally activate by -where. -The active rules for an operator can be visualized by -showrules. -

    -

    -

    -examples:

    -

    
    -operator f,g,h; 
    -
    -let f(x) => x^2; 
    -
    -f(x); 
    -
    -   2
    -  x
    -
    -
    -g_rules:={g(~n,~x)=>h(n/2,x) when evenp n,
    -
    -g(~n,~x)=>h((1-n)/2,x) when not evenp n}$
    -
    -let g_rules;
    -
    -g(3,x); 
    -
    -  h(-1,x)
    -
    -

    - - -Free_Variable -INDEX

    - - - -FREE VARIABLE _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -

    -

    -A variable preceded by a tilde is considered as free variable -and stands for an arbitrary part in an algebraic form during -pattern matching. Free variables occur in the left-hand sides -of -rules, in the side relations for -compact -and in the first arguments of -map and -select -calls. See -rule for examples. -

    -

    -In rules also -optional free variables may occur. -

    -

    - - - -Optional_Free_Variable -INDEX

    - - - -OPTIONAL FREE VARIABLE _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -

    -

    -A variable preceded by a double tilde is considered as -optional free variable

    -

    -and stands for an arbitrary part part in an algebraic form during -pattern matching. In contrast to ordinary -free variables -an operator pattern with an optional free variable -matches also if the operand for the variable is missing. In such -a case the variable is bound to a neutral value. -Optional free variables can be used as -

    -

    -term in a sum: set to 0 if missing, -

    -

    -factor in a product: set to 1 if missing, -

    -

    -exponent: set to 1 if missing -

    -

    -

    -examples:

    -

    Optional free variables are allowed only in the left-h -and sides -of -rules. -

    -

    - - - -SECOND -INDEX

    - - - -SECOND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The second operator returns the second element of a list. -

    -syntax:

    -

    -

    -second(<list>) or second <list> -

    -

    -

    -

    -<list> must be a list with at least two elements, to avoid an error -message. -

    -

    -

    -examples:

    -

    
    -alist := {a,b,c,d}; 
    -
    -  ALIST := {A,B,C,D} 
    -
    -
    -second alist; 
    -
    -  B 
    -
    -
    -blist := {x,{aa,bb,cc},z}; 
    -
    -  BLIST := {X,{AA,BB,CC},Z} 
    -
    -
    -second second blist; 
    -
    -  BB
    -
    -

    - - -SET -INDEX

    - - - -SET _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The set operator is used for assignments when you want both sides of -the assignment statement to be evaluated. -

    -syntax:

    -

    -

    -set(<restricted\_expression>,<expression>) -

    -

    -

    -<expression> can be any REDUCE expression; <restricted\_expression> - -must be an identifier or an expression that evaluates to an identifier. -

    -

    -

    -examples:

    -

    
    -a := y; 
    -
    -  A := Y 
    -
    -
    -set(a,sin(x^2)); 
    -
    -       2
    -  SIN(X ) 
    -
    -
    -a; 
    -
    -       2
    -  SIN(X ) 
    -
    -
    -y; 
    -
    -       2
    -  SIN(X ) 
    -
    -
    -a := b + c; 
    -
    -  A := B + C 
    -
    -
    -set(a-c,z); 
    -
    -  Z 
    -
    -
    -b; 
    -
    -  Z
    -
    -

    Using an -array or -matrix reference as the first -argument to set has -the result of setting the contents of the designated element to -set's second argument. You should be careful to avoid unwanted -side effects when you use this facility. -

    -

    -

    - - - -SETQ -INDEX

    - - - -SETQ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The setq operator is an infix or prefix binary assignment operator. -It is identical to :=. -

    -syntax:

    -

    -

    -setq(<restricted\_expression>,<expression>) or -

    -

    -<restricted\_expression> setq <expression> -

    -

    -

    -<restricted expression> is ordinarily a single identifier, though -simple expressions may be used (see Comments below). <expression> can -be any valid REDUCE expression. If <expression> is a -matrix -identifier, then <restricted\_expression> can be a matrix identifier -(redimensioned if necessary), which has each element set to the -corresponding elements of the identifier on the right-hand side. -

    -

    -

    -examples:

    -

    
    -setq(b,6); 
    -
    -  B := 6 
    -
    -
    -c setq sin(x); 
    -
    -  C := SIN(X) 
    -
    -
    -w + setq(c,x+3) + z; 
    -
    -  W + X + Z + 3 
    -
    -
    -c; 
    -
    -  X + 3 
    -
    -
    -setq(a1 + a2,25); 
    -
    -  A1 + A2 := 25 
    -
    -
    -a1; 
    -
    -  - (A2 - 25)
    -
    -

    Embedding a setq statement in an expression has the side -effect of making -the assignment, as shown in the third example above. -

    -

    -Assignments are generally done for identifiers, but may be done for simple -expressions as well, subject to the following remarks: -

    -

    - _ _ _ (i) -If the left-hand side is an identifier, an operator, or a power, the rule -is added to the rule table. -

    -

    - _ _ _ (ii) -If the operators - + / appear on the left-hand side, all but the first - -term of the expression is moved to the right-hand side. -

    -

    - _ _ _ (iii) -If the operator * appears on the left-hand side, any constant terms are - -moved to the right-hand side, but the symbolic factors remain. -

    -

    -Be careful not to make a recursive setq assignment that is not -controlled inside a loop statement. The process of resubstitution -continues until you get a stack overflow message. setq can be used -to attach functionality to operators, as the := does. -

    -

    -

    - - - -THIRD -INDEX

    - - - -THIRD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The third operator returns the third item of a -list. -

    -syntax:

    -

    -

    -third(<list>) or third <list> -

    -

    -

    -

    -<list> must be a list containing at least three items to avoid an error -message. -

    -

    -

    -examples:

    -

    
    -alist := {a,b,c,d}; 
    -
    -  ALIST := {A,B,C,D} 
    -
    -
    -third alist; 
    -
    -  C 
    -
    -
    -blist := {x,{aa,bb,cc},y,z}; 
    -
    -  BLIST := {X,{AA,BB,CC},Y,Z}; 
    -
    -
    -third second blist; 
    -
    -  CC 
    -
    -
    -third blist; 
    -
    -  Y
    -
    -

    - - -WHEN -INDEX

    - - - -WHEN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The when operator is used inside a rule to make the -execution of the rule depend on a boolean condition which is -evaluated at execution time. For the use see -rule. -

    -

    - - - -Syntax -INDEX

    -Syntax

    -
  • semicolon commandalias= (;)

    -

  • dollar commandalias= ($)

    -

  • percent commandalias= (%)

    -

  • dot operatoralias= (.)

    -

  • assign operatoralias= (: =)

    -

  • equalsign operatoralias= (=)

    -

  • replace operatoralias= (= >)

    -

  • plussign operatoralias= (+)

    -

  • minussign operatoralias= (-)

    -

  • asterisk operatoralias= (*)

    -

  • slash operatoralias= (/)

    -

  • power operatoralias= (* *)

    -

  • caret operatoralias= (^)

    -

  • geqsign operatoralias= (> =)

    -

  • greater operatoralias= (>)

    -

  • leqsign operatoralias= (< =)

    -

  • less operatoralias= (<)

    -

  • tilde operatoralias= (~)

    -

  • group commandalias= (< <)

    -

  • AND operator

    -

  • BEGIN command

    -

  • block command

    -

  • COMMENT command

    -

  • CONS operator

    -

  • END command

    -

  • EQUATION type

    -

  • FIRST operator

    -

  • FOR command

    -

  • FOREACH command

    -

  • GEQ operator

    -

  • GOTO command

    -

  • GREATERP operator

    -

  • IF command

    -

  • LIST operator

    -

  • OR operator

    -

  • PROCEDURE command

    -

  • REPEAT command

    -

  • REST operator

    -

  • RETURN command

    -

  • REVERSE operator

    -

  • RULE type

    -

  • Free Variable type

    -

  • Optional Free Variable type

    -

  • SECOND operator

    -

  • SET operator

    -

  • SETQ operator

    -

  • THIRD operator

    -

  • WHEN operator

    -

  • - - -ARITHMETIC_OPERATIONS -INDEX

    - - - -ARITHMETIC\_OPERATIONS _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -This section considers operations defined in REDUCE that concern numbers, -or operators that can operate on numbers in addition, in most cases, to -more general expressions. -

    -

    - - - -ABS -INDEX

    - - - -ABS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The abs operator returns the absolute value of its argument. -

    -

    -

    -syntax:

    -abs(<expression>) -

    -

    -

    -<expression> can be any REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -abs(-a); 
    -
    -  ABS(A) 
    -
    -
    -abs(-5); 
    -
    -  5 
    -
    -
    -a := -10; 
    -
    -  A := -10 
    -
    -
    -abs(a); 
    -
    -  10 
    -
    -
    -abs(-a); 
    -
    -  10
    -
    -

    If the argument has had no numeric value assigned to it, such as a -n -identifier or polynomial, abs returns an expression involving -abs of its argument, doing as much simplification of the argument -as it can, such as dropping any preceding minus sign. -

    -

    -

    - - - -ADJPREC -INDEX

    - - - -ADJPREC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When a real number is input, it is normally truncated to the - -precision in -effect at the time the number is read. If it is desired to keep the full -precision of all numbers input, the switch adjprec -(for <adjust precision>) can be turned on. While on, adjprec -will automatically increase the precision, when necessary, to match that -of any integer or real input, and a message printed to inform the user of -the precision increase. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -1.23456789012345; 
    -
    -  1.23456789012 
    -
    -
    -on adjprec; 
    -
    -1.23456789012345; 
    -
    -*** precision increased to 15 
    -

    - - -ARG -INDEX

    - - - -ARG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -If -complex and -rounded are on, and arg -evaluates to a complex number, arg returns the polar angle of -arg, measured in radians. Otherwise an expression in arg is -returned. -

    -

    -

    -examples:

    -

    
    -arg(3+4i) 
    -
    -  ARG(3 + 4*I) 
    -
    -
    -on rounded, complex; 
    -
    -ws; 
    -
    -  0.927295218002 
    -
    -
    -arg a; 
    -
    -  ARG(A)
    -
    -

    - - -CEILING -INDEX

    - - - -CEILING _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -ceiling(<expression>) -

    -

    -

    -This operator returns the ceiling (i.e., the least integer greater than or -equal to its argument) if its argument has a numerical value. For -negative numbers, this is equivalent to -fix. For non-numeric -arguments, the value is an expression in the original operator. -

    -

    -

    -examples:

    -

    
    -ceiling 3.4; 
    -
    -  4 
    -
    -
    -fix 3.4; 
    -
    -  3 
    -
    -
    -ceiling(-5.2); 
    -
    -  -5 
    -
    -
    -fix(-5.2); 
    -
    -  -5 
    -
    -
    -ceiling a; 
    -
    -  CEILING(A)
    -
    -

    - - -CHOOSE -INDEX

    - - - -CHOOSE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -choose(<m>,<m>) returns the number of ways of choosing -<m> objects from a collection of <n> distinct objects --- in other -words the binomial coefficient. If <m> and <n> are not positive -integers, or m >n, the expression is returned unchanged. -than or equal to -

    -examples:

    -

    
    -choose(2,3); 
    -
    -  3 
    -
    -
    -choose(3,2); 
    -
    -  CHOOSE(3,2) 
    -
    -
    -choose(a,b); 
    -
    -  CHOOSE(A,B)
    -
    -

    -

    - - - -DEG2DMS -INDEX

    - - - -DEG2DMS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -deg2dms(<expression>) -

    -

    -

    -In -rounded mode, if <expression> is a real number, -the -operator deg2dms will interpret it as degrees, and convert it to a -list containing the equivalent degrees, minutes and seconds. In all other -cases, an expression in terms of the original operator is returned. -

    -

    -

    -examples:

    -

    
    -deg2dms 60; 
    -
    -  DEG2DMS(60) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  {60,0,0} 
    -
    -
    -deg2dms 42.4; 
    -
    -  {42,23,60.0} 
    -
    -
    -deg2dms a; 
    -
    -  DEG2DMS(A)
    -
    -

    - - -DEG2RAD -INDEX

    - - - -DEG2RAD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -deg2rad(<expression>) -

    -

    -

    -In -rounded mode, if <expression> is a real number, -the -operator deg2rad will interpret it as degrees, and convert it to -the equivalent radians. In all other cases, an expression in terms of the -original operator is returned. -

    -

    -

    -examples:

    -

    
    -deg2rad 60; 
    -
    -  DEG2RAD(60) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  1.0471975512 
    -
    -
    -deg2rad a; 
    -
    -  DEG2RAD(A)
    -
    -

    - - -DIFFERENCE -INDEX

    - - - -DIFFERENCE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The difference operator may be used as either an infix or prefix binary - -subtraction operator. It is identical to - as a binary operator. -

    -

    -

    -syntax:

    -difference(<expression>,<expression>) or -

    -

    -<expression> difference <expression> - {difference <expression>}* -

    -

    -

    -<expression> can be a number or any other valid REDUCE expression. Matrix - -expressions are allowed if they are of the same dimensions. -

    -

    -

    -examples:

    -

    
    -
    -difference(10,4); 
    -
    -  6 
    -
    -
    -
    -15 difference 5 difference 2; 
    -
    -  8 
    -
    -
    -
    -a difference b; 
    -
    -  A - B
    -
    -

    The difference operator is left associative, as shown in -the second -example above. -

    -

    -

    -

    - - - -DILOG -INDEX

    - - - -DILOG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The dilog operator is known to the differentiation and integration -operators, but has numeric value attached only at dilog(0). Dilog is -defined by -

    -

    -dilog(x) = -int(log(x),x)/(x-1) -

    -

    -

    -examples:

    -

    
    -df(dilog(x**2),x); 
    -
    -           2
    -    2*LOG(X )*X
    -  - ------------
    -       2
    -      X   - 1
    -
    -
    -
    -int(dilog(x),x); 
    -
    -  DILOG(X)*X - DILOG(X) + LOG(X)*X - X 
    -
    -
    -
    -dilog(0); 
    -
    -    2
    -  PI
    -  ----
    -   6
    -
    -

    - - -DMS2DEG -INDEX

    - - - -DMS2DEG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -dms2deg(<list>) -

    -

    -

    -In -rounded mode, if <list> is a list of three real -numbers, -the operator dms2deg will interpret the list as degrees, minutes -and seconds and convert it to the equivalent degrees. In all other cases, -an expression in terms of the original operator is returned. -

    -

    -

    -examples:

    -

    
    -dms2deg {42,3,7}; 
    -
    -  DMS2DEG({42,3,7}) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  42.0519444444 
    -
    -
    -dms2deg a; 
    -
    -  DMS2DEG(A)
    -
    -

    - - -DMS2RAD -INDEX

    - - - -DMS2RAD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -dms2rad(<list>) -

    -

    -

    -In -rounded mode, if <list> is a list of three real -numbers, -the operator dms2rad will interpret the list as degrees, minutes -and seconds and convert it to the equivalent radians. In all other cases, -an expression in terms of the original operator is returned. -

    -

    -

    -examples:

    -

    
    -dms2rad {42,3,7}; 
    -
    -  DMS2RAD({42,3,7}) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  0.733944887421 
    -
    -
    -dms2rad a; 
    -
    -  DMS2RAD(A)
    -
    -

    - - -FACTORIAL -INDEX

    - - - -FACTORIAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -factorial(<expression>) -

    -

    -

    -If the argument of factorial is a positive integer or zero, its -factorial is returned. Otherwise the result is expressed in terms of the -original operator. For more general operations, the -gamma operator -is available in the -Special Function Package. -

    -

    -

    -examples:

    -

    
    -factorial 4; 
    -
    -  24 
    -
    -
    -factorial 30 ; 
    -
    -  265252859812191058636308480000000 
    -
    -

    - - -FIX -INDEX

    - - - -FIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -fix(<expression>) -

    -

    -

    -The operator fix returns the integer part of its argument, if that -argument has a numerical value. For positive numbers, this is equivalent -to -floor, and, for negative numbers, -ceiling. For -non-numeric arguments, the value is an expression in the original operator. -

    -

    -

    -examples:

    -

    
    -fix 3.4; 
    -
    -  3 
    -
    -
    -floor 3.4; 
    -
    -  3 
    -
    -
    -ceiling 3.4; 
    -
    -  4 
    -
    -
    -fix(-5.2); 
    -
    -  -5 
    -
    -
    -floor(-5.2); 
    -
    -  -6 
    -
    -
    -ceiling(-5.2); 
    -
    -  -5 
    -
    -
    -fix(a); 
    -
    -  FIX(A)
    -
    -

    - - -FIXP -INDEX

    - - - -FIXP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The fixp logical operator returns true if its argument is an integer. -

    -syntax:

    -

    -

    -fixp(<expression>) or fixp <simple\_expression> -

    -

    -

    -<expression> can be any valid REDUCE expression, <simple\_expression -> -must be a single identifier or begin with a prefix operator. -

    -

    -

    -examples:

    -

    
    -if fixp 1.5 then write "ok" else write "not";
    -			 
    -
    -
    -  not 
    -
    -
    -if fixp(a) then write "ok" else write "not";
    -			 
    -
    -
    -  not 
    -
    -
    -a := 15; 
    -
    -  A := 15 
    -
    -
    -if fixp(a) then write "ok" else write "not";
    -			 
    -
    -
    -  ok
    -
    -

    Logical operators can only be used inside conditional expressions -such as -if...then or while...do. -

    -

    -

    - - - -FLOOR -INDEX

    - - - -FLOOR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -floor(<expression>) -

    -

    -

    -This operator returns the floor (i.e., the greatest integer less than or -equal to its argument) if its argument has a numerical value. For -positive numbers, this is equivalent to -fix. For non-numeric -arguments, the value is an expression in the original operator. -

    -

    -

    -examples:

    -

    
    -floor 3.4; 
    -
    -  3 
    -
    -
    -fix 3.4; 
    -
    -  3 
    -
    -
    -floor(-5.2); 
    -
    -  -6 
    -
    -
    -fix(-5.2); 
    -
    -  -5 
    -
    -
    -floor a; 
    -
    -  FLOOR(A)
    -
    -

    - - -EXPT -INDEX

    - - - -EXPT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The expt operator is both an infix and prefix binary exponentiation -operator. It is identical to ^ or **. -

    -syntax:

    -

    -

    -expt(<expression>,<expression>) - or <expression> expt <expression> -

    -

    -

    -

    -examples:

    -

    
    -a expt b; 
    -
    -   B
    -  A  
    -
    -
    -expt(a,b); 
    -
    -   B
    -  A  
    -
    -
    -(x+y) expt 4; 
    -
    -   4      3        2  2        3    4
    -  X  + 4*X *Y + 6*X *Y  + 4*X*Y  + Y
    -
    -

    Scalar expressions may be raised to fractional and floating-point -powers. -Square matrix expressions may be raised to positive powers, and also to -negative powers if non-singular. -

    -

    -exptis left associative. In other words, a expt b expt c is -equivalent to a expt (b*c), not a expt (b expt c), which -would be right associative. -

    -

    -

    - - - -GCD -INDEX

    - - - -GCD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The gcd operator returns the greatest common divisor of two -polynomials. -

    -syntax:

    -

    -

    -gcd(<expression>,<expression>) -

    -

    -

    -<expression> must be a polynomial (or integer), otherwise an error -occurs. -

    -

    -

    -examples:

    -

    
    -gcd(2*x**2 - 2*y**2,4*x + 4*y); 
    -
    -  2*(X + Y) 
    -
    -
    -gcd(sin(x),x**2 + 1); 
    -
    -  1  
    -
    -
    -gcd(765,68); 
    -
    -  17
    -
    -

    The operator gcd described here provides an explicit mean -s to find the -gcd of two expressions. The switch gcd described below simplifies -expressions by finding and canceling gcd's at every opportunity. When -the switch -ezgcd is also on, gcd's are figured using the EZ GCD -algorithm, which is usually faster. -

    -

    -

    - - - -LN -INDEX

    - - - -LN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -ln(<expression>) -

    -

    -

    -<expression> can be any valid scalar REDUCE expression. -

    -

    -The ln operator returns the natural logarithm of its argument. -However, unlike -log, there are no algebraic rules associated -with it; it will only evaluate when -rounded is on, and the -argument is a real number. -

    -

    -

    -examples:

    -

    
    -ln(x); 
    -
    -  LN(X) 
    -
    -
    -ln 4; 
    -
    -  LN(4) 
    -
    -
    -ln(e); 
    -
    -  LN(E) 
    -
    -
    -df(ln(x),x); 
    -
    -  DF(LN(X),X) 
    -
    -
    -on rounded; 
    -
    -ln 4; 
    -
    -  1.38629436112 
    -
    -
    -ln e; 
    -
    -  1
    -
    -

    Because of the restricted algebraic properties of ln, use -rs are -advised to use -log whenever possible. -

    -

    -

    - - - -LOG -INDEX

    - - - -LOG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The log operator returns the natural logarithm of its argument. -

    -syntax:

    -

    -

    -log(<expression>) or log <expression> -

    -

    -

    -<expression> can be any valid scalar REDUCE expression. -

    -

    -

    -examples:

    -

    
    -log(x); 
    -
    -  LOG(X) 
    -
    -
    -log 4; 
    -
    -  LOG(4) 
    -
    -
    -log(e); 
    -
    -  1 
    -
    -
    -on rounded; 
    -
    -log 4; 
    -
    -  1.38629436112
    -
    -

    logreturns a numeric value only when -rounded is on. In that -case, use of a negative argument for log results in an error -message. No error is given on a negative argument when REDUCE is not in -that mode. -

    -

    -

    - - - -LOGB -INDEX

    - - - -LOGB _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -logb(<expression>,<integer>) -

    -

    -

    -<expression> can be any valid scalar REDUCE expression. -

    -

    -The logb operator returns the logarithm of its first argument using -the second argument as base. However, unlike -log, there are no -algebraic rules associated with it; it will only evaluate when - -rounded is on, and the first argument is a real number -. -

    -

    -

    -examples:

    -

    
    -logb(x,2); 
    -
    -  LOGB(X,2) 
    -
    -
    -logb(4,3); 
    -
    -  LOGB(4,3) 
    -
    -
    -logb(2,2); 
    -
    -  LOGB(2,2) 
    -
    -
    -df(logb(x,3),x); 
    -
    -  DF(LOGB(X,3),X) 
    -
    -
    -on rounded; 
    -
    -logb(4,3); 
    -
    -  1.26185950714 
    -
    -
    -logb(2,2); 
    -
    -  1
    -
    -

    - - -MAX -INDEX

    - - - -MAX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator max is an n-ary prefix operator, which returns the largest - -value in its arguments. -

    -syntax:

    -

    -

    -max(<expression>{,<expression>}*) -

    -

    -

    -

    -<expression> must evaluate to a number. max of an empty list -returns 0. -

    -

    -

    -examples:

    -

    
    -max(4,6,10,-1); 
    -
    -  10 
    -
    -
    -<<a := 23;b := 2*a;c := 4**2;max(a,b,c)>>;
    -			 
    -
    -
    -  46 
    -
    -
    -max(-5,-10,-a); 
    -
    -  -5
    -
    -

    - - -MIN -INDEX

    - - - -MIN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator min is an n-ary prefix operator, which returns the -smallest value in its arguments. -

    -syntax:

    -

    -

    -min(<expression>{,<expression>}*) -

    -

    -

    -<expression> must evaluate to a number. min of an empty list -returns 0. -

    -examples:

    -

    
    -min(-3,0,17,2); 
    -
    -  -3 
    -
    -
    -<<a := 23;b := 2*a;c := 4**2;min(a,b,c)>>;
    -			 
    -
    -
    -  16 
    -
    -
    -min(5,10,a); 
    -
    -  5
    -
    -

    -

    - - - -MINUS -INDEX

    - - - -MINUS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The minus operator is a unary minus, returning the negative of its -argument. It is equivalent to the unary -. -

    -syntax:

    -

    -

    -minus(<expression>) -

    -

    -

    -

    -<expression> may be any scalar REDUCE expression. -

    -

    -

    -examples:

    -

    
    -minus(a); 
    -
    -  - A 
    -
    -
    -minus(-1); 
    -
    -  1 
    -
    -
    -minus((x+1)**4); 
    -
    -      4      3      2
    -  - (X  + 4*X  + 6*X  + 4*X + 1)
    -
    -

    - - -NEXTPRIME -INDEX

    - - - -NEXTPRIME _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -nextprime(<expression>) -

    -

    -

    -If the argument of nextprime is an integer, the least prime greater -than that argument is returned. Otherwise, a type error results. -

    -

    -

    -examples:

    -

    
    -nextprime 5001; 
    -
    -  5003  
    -
    -
    -nextprime(10^30); 
    -
    -  1000000000000000000000000000057 
    -
    -
    -nextprime a; 
    -
    -  ***** A invalid as integer
    -
    -

    - - -NOCONVERT -INDEX

    - - - -NOCONVERT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -Under normal circumstances when rounded is on, REDUCE converts the -number 1.0 to the integer 1. If this is not desired, the switch -noconvert can be turned on. -

    -examples:

    -

    
    -on rounded; 
    -
    -1.0000000000001; 
    -
    -  1 
    -
    -
    -on noconvert; 
    -
    -1.0000000000001; 
    -
    -  1.0 
    -
    -

    -

    - - - -NORM -INDEX

    - - - -NORM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -norm(<expression>) -

    -

    -

    -If rounded is on, and the argument is a real number, <norm> -returns its absolute value. If complex is also on, <norm> -returns the square root of the sum of squares of the real and imaginary -parts of the argument. In all other cases, a result is returned in -terms of the original operator. -

    -

    -

    -examples:

    -

    
    -norm (-2); 
    -
    -  NORM(-2) 
    -
    -
    -on rounded;
    -
    -ws; 
    -
    -  2.0 
    -
    -
    -norm(3+4i); 
    -
    -  NORM(4*I+3) 
    -
    -
    -on complex;
    -
    -ws; 
    -
    -  5.0
    -
    -

    - - -PERM -INDEX

    - - - -PERM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -perm(<expression1>,<expression2>) -

    -

    -

    -If <expression1> and <expression2> evaluate to positive integers, -perm returns the number of permutations possible in selecting -<expression1> objects from <expression2> objects. -In other cases, an expression in the original operator is returned. -

    -

    -

    -examples:

    -

    
    -perm(1,1); 
    -
    -  1 
    -
    -
    -perm(3,5); 
    -
    -  60 
    -
    -
    -perm(-3,5); 
    -
    -  PERM(-3,5) 
    -
    -
    -perm(a,b); 
    -
    -  PERM(A,B)
    -
    -

    - - -PLUS -INDEX

    - - - -PLUS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The plus operator is both an infix and prefix n-ary addition -operator. It exists because of the way in which REDUCE handles such -operators internally, and is not recommended for use in algebraic mode -programming. -plussign, which has the identical effect, should be -used instead. -

    -syntax:

    -

    -

    -plus(<expression>,<expression>{,<expression>} -*) or -

    -

    -<expression> plus <expression> {plus <expressio -n>}* -

    -

    -

    -<expression> can be any valid REDUCE expression, including matrix -expressions of the same dimensions. -

    -

    -

    -examples:

    -

    
    -a plus b plus c plus d; 
    -
    -  A + B + C + D 
    -
    -
    -4.5 plus 10; 
    -
    -  29
    -  -- 
    -  2
    -
    -
    -
    -plus(x**2,y**2); 
    -
    -   2    2
    -  X  + Y
    -
    -

    - - -QUOTIENT -INDEX

    - - - -QUOTIENT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The quotient operator is both an infix and prefix binary operator that - -returns the quotient of its first argument divided by its second. It is -also a unary -reciprocal operator. It is identical to / and - - -slash. -

    -syntax:

    -

    -

    -quotient(<expression>,<expression>) or -<expression> quotient <expression> or -quotient(<expression>) or -quotient <expression> -

    -

    -

    -<expression> can be any valid REDUCE scalar expression. Matrix -expressions can also be used if the second expression is invertible and the -matrices are of the correct dimensions. -

    -examples:

    -

    
    -quotient(a,x+1); 
    -
    -    A
    -  ----- 
    -  X + 1
    -
    -
    -7 quotient 17; 
    -
    -  7
    -  -- 
    -  17
    -
    -
    -on rounded; 
    -
    -4.5 quotient 2; 
    -
    -  2.25 
    -
    -
    -quotient(x**2 + 3*x + 2,x+1); 
    -
    -  X + 2 
    -
    -
    -matrix m,inverse; 
    -
    -m := mat((a,b),(c,d)); 
    -
    -  M(1,1) := A;
    -  M(1,2) := B;
    -  M(2,1) := C
    -  M(2,2) := D
    -
    -
    -
    -inverse := quotient m; 
    -
    -                      D
    -  INVERSE(1,1) := ----------
    -                  A*D - B*C
    -                        B
    -  INVERSE(1,2) := - ----------
    -                    A*D - B*C
    -                        C
    -  INVERSE(2,1) := - ----------
    -                    A*D - B*C
    -                      A
    -  INVERSE(2,2) := ----------
    -                  A*D - B*C
    -
    -

    -

    -The quotient operator is left associative: a quotient b quotient c - -is equivalent to (a quotient b) quotient c. -

    -

    -If a matrix argument to the unary quotient is not invertible, or if the - -second matrix argument to the binary quotient is not invertible, an error -message is given. -

    -

    -

    - - - -RAD2DEG -INDEX

    - - - -RAD2DEG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -rad2deg(<expression>) -

    -

    -

    -In -rounded mode, if <expression> is a real number, -the -operator rad2deg will interpret it as radians, and convert it to -the equivalent degrees. In all other cases, an expression in terms of the -original operator is returned. -

    -

    -

    -examples:

    -

    
    -rad2deg 1; 
    -
    -  RAD2DEG(1) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  57.2957795131 
    -
    -
    -rad2deg a; 
    -
    -  RAD2DEG(A)
    -
    -

    - - -RAD2DMS -INDEX

    - - - -RAD2DMS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -rad2dms(<expression>) -

    -

    -

    -In -rounded mode, if <expression> is a real number, -the -operator rad2dms will interpret it as radians, and convert it to a -list containing the equivalent degrees, minutes and seconds. In all other -cases, an expression in terms of the original operator is returned. -

    -

    -

    -examples:

    -

    
    -rad2dms 1; 
    -
    -  RAD2DMS(1) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  {57,17,44.8062470964} 
    -
    -
    -rad2dms a; 
    -
    -  RAD2DMS(A)
    -
    -

    - - -RECIP -INDEX

    - - - -RECIP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -recip is the alphabetical name for the division operator / -or -slash used as a unary operator. The use of / -is preferred. -

    -

    -

    -examples:

    -

    
    -recip a; 
    -
    -  1
    -  - 
    -  A
    -
    -
    -recip 2; 
    -
    -  1
    -  --
    -  2
    -
    -

    - - -REMAINDER -INDEX

    - - - -REMAINDER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The remainder operator returns the remainder after its first -argument is divided by its second argument. -

    -

    -

    -syntax:

    -remainder(<expression>,<expression>) -

    -

    -

    -<expression> can be any valid REDUCE polynomial, and is not limited -to numeric values. -

    -

    -

    -examples:

    -

    
    -remainder(13,6); 
    -
    -  1 
    -
    -
    -remainder(x**2 + 3*x + 2,x+1); 
    -
    -  0  
    -
    -
    -remainder(x**3 + 12*x + 4,x**2 + 1); 
    -
    -
    -  11*X + 4 
    -
    -
    -remainder(sin(2*x),x*y); 
    -
    -  SIN(2*X)
    -
    -

    In the default case, remainders are calculated over the integers. -If you -need the remainder with respect to another domain, it must be declared -explicitly. -

    -

    -If the first argument to remainder contains a denominator not equal to - -1, an error occurs. -

    -

    -

    - - - -ROUND -INDEX

    - - - -ROUND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -round(<expression>) -

    -

    -

    -If its argument has a numerical value, round rounds it to the -nearest integer. For non-numeric arguments, the value is an expression in -the original operator. -

    -

    -

    -examples:

    -

    
    -round 3.4; 
    -
    -  3 
    -
    -
    -round 3.5; 
    -
    -  4 
    -
    -
    -round a; 
    -
    -  ROUND(A)
    -
    -

    - - -SETMOD -INDEX

    - - - -SETMOD _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The setmod command sets the modulus value for subsequent -modular -arithmetic. -

    -syntax:

    -

    -

    -setmod<integer> -

    -

    -

    -<integer> must be positive, and greater than 1. It need not be a prime -number. -

    -

    -

    -examples:

    -

    
    -setmod 6; 
    -
    -  1 
    -
    -
    -on modular; 
    -
    -16; 
    -
    -  4 
    -
    -
    -x^2 + 5x + 7; 
    -
    -   2
    -  X  + 5*X + 1 
    -
    -
    -x/3; 
    -
    -  X
    -  - 
    -  3
    -
    -
    -setmod 2; 
    -
    -  6 
    -
    -
    -(x+1)^4; 
    -
    -   4
    -  X  + 1 
    -
    -
    -x/3; 
    -
    -  X
    -
    -

    setmodreturns the previous modulus, or 1 if none has been - set -before. setmod only has effect when -modular is on. -

    -

    -Modular operations are done only on numbers such as coefficients of -polynomials, not on the exponents. The modulus need not be prime. -Attempts to divide by a power of the modulus produces an error message, since th -e -operation is equivalent to dividing by 0. However, dividing by a factor -of a non-prime modulus does not produce an error message. -

    -

    -

    - - - -SIGN -INDEX

    - - - -SIGN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -sign<expression> -

    -

    -

    -signtries to evaluate the sign of its argument. If this -is possible sign returns one of 1, 0 or -1. Otherwise, the result -is the original form or a simplified variant. -

    -

    -

    -examples:

    -

    
    -        sign(-5) 
    -
    -  -1
    -
    -
    -        sign(-a^2*b) 
    -
    -  -SIGN(B)
    -
    -

    Even powers of formal expressions are assumed to be positive only -as long -as the switch -complex is off. -

    -

    -

    - - - -SQRT -INDEX

    - - - -SQRT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sqrt operator returns the square root of its argument. -

    -syntax:

    -

    -

    -sqrt(<expression>) -

    -

    -

    -<expression> can be any REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -sqrt(16*a^3); 
    -
    -  4*SQRT(A)*A 
    -
    -
    -sqrt(17); 
    -
    -  SQRT(17) 
    -
    -
    -on rounded; 
    -
    -sqrt(17); 
    -
    -  4.12310562562 
    -
    -
    -off rounded; 
    -
    -sqrt(a*b*c^5*d^3*27); 
    -
    -                                             2
    -  3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C *D
    -
    -

    sqrtchecks its argument for squared factors and removes t -hem. -

    -

    -Numeric values for square roots that are not exact integers are given only -when -rounded is on. -

    -

    -Please note that sqrt(a**2) is given as a, which may be -incorrect if a eventually has a negative value. If you are -programming a calculation in which this is a concern, you can turn on the - -precise switch, which causes the absolute value of the - square root -to be returned. -

    -

    -

    - - - -TIMES -INDEX

    - - - -TIMES _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The times operator is an infix or prefix n-ary multiplication -operator. It is identical to *. -

    -syntax:

    -

    -

    -<expression> times <expression> {times <express -ion>}* -

    -

    -or times(<expression>,<expression> {,<expression>}*) - -

    -

    -

    -<expression> can be any valid REDUCE scalar or matrix expression. -Matrix expressions must be of the correct dimensions. Compatible scalar -and matrix expressions can be mixed. -

    -

    -

    -examples:

    -

    
    -var1 times var2; 
    -
    -  VAR1*VAR2 
    -
    -
    -times(6,5); 
    -
    -  30 
    -
    -
    -matrix aa,bb; 
    -
    -aa := mat((1),(2),(x))$ 
    -
    -bb := mat((0,3,1))$ 
    -
    -aa times bb times 5; 
    -
    -  [0   15    5 ]
    -  [            ]
    -  [0   30   10 ]
    -  [            ]
    -  [0  15*X  5*X]
    -
    -

    - - -Arithmetic Operations -INDEX

    -Arithmetic Operations

    -
  • ARITHMETIC\_OPERATIONS introduction

    -

  • ABS operator

    -

  • ADJPREC switch

    -

  • ARG operator

    -

  • CEILING operator

    -

  • CHOOSE operator

    -

  • DEG2DMS operator

    -

  • DEG2RAD operator

    -

  • DIFFERENCE operator

    -

  • DILOG operator

    -

  • DMS2DEG operator

    -

  • DMS2RAD operator

    -

  • FACTORIAL operator

    -

  • FIX operator

    -

  • FIXP operator

    -

  • FLOOR operator

    -

  • EXPT operator

    -

  • GCD operator

    -

  • LN operator

    -

  • LOG operator

    -

  • LOGB operator

    -

  • MAX operator

    -

  • MIN operator

    -

  • MINUS operator

    -

  • NEXTPRIME operator

    -

  • NOCONVERT switch

    -

  • NORM operator

    -

  • PERM operator

    -

  • PLUS operator

    -

  • QUOTIENT operator

    -

  • RAD2DEG operator

    -

  • RAD2DMS operator

    -

  • RECIP operator

    -

  • REMAINDER operator

    -

  • ROUND operator

    -

  • SETMOD command

    -

  • SIGN operator

    -

  • SQRT operator

    -

  • TIMES operator

    -

  • - - -boolean_value -INDEX

    - - - -BOOLEAN VALUE

    -

    - -There are no extra symbols for the truth values true -and false. Instead, -nil and the number zero -are interpreted as truth value false in algebraic -programs (see -false), while any different -value is considered as true (see -true). -

    -

    - - - -EQUAL -INDEX

    - - - -EQUAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator equal is an infix binary comparison -operator. It is identical with =. It returns -true if its two -arguments are equal. -

    -

    -

    -syntax:

    -<expression> equal <expression> -

    -

    -

    -Equality is given between floating point numbers and integers that have -the same value. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -a := 4; 
    -
    -  A := 4 
    -
    -
    -b := 4.0; 
    -
    -  B := 4.0 
    -
    -
    -if a equal b then write "true" else write "false";
    -			 
    -
    -
    -  true 
    -
    -
    -if a equal 5 then write "true" else write "false";
    -			 
    -
    -
    -  false 
    -
    -
    -if a equal sqrt(16) then write "true" else write "false";
    -			 
    -
    -
    -  true
    -
    -

    Comparison operators can only be used as conditions in conditional - commands -such as if...then and repeat...until. -<equal> can also be used as a prefix operator. However, this use -is not encouraged. -

    -

    -

    - - - -EVENP -INDEX

    - - - -EVENP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The evenp logical operator returns -true if its argument is an -even integer, and -nil if its argument is an odd integer. An error -message is returned if its argument is not an integer. -

    -

    -

    -syntax:

    -evenp(<integer>) or evenp <integer> -

    -

    -

    -<integer> must evaluate to an integer. -

    -

    -

    -examples:

    -

    
    -aa := 1782; 
    -
    -  AA := 1782 
    -
    -
    -if evenp aa then yes else no; 
    -
    -  YES 
    -
    -
    -if evenp(-3) then yes else no; 
    -
    -  NO 
    -
    -

    Although you would not ordinarily enter an expression such as the -last -example above, note that the negative term must be enclosed in parentheses -to be correctly parsed. The evenp operator can only be used in -conditional statements such as if...then...else -or while...do. -

    -

    -

    - - - -false -INDEX

    - - - -FALSE

    -

    - -The symbol -nil and the number zero are considered -as -boolean value false if used in a place where -a boolean value is required. Most builtin operators return - -nil as false value. Algebraic programs use better zero -. -Note that nil is not printed when returned as result to -a top level evaluation. -

    -

    - - - -FREEOF -INDEX

    - - - -FREEOF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The freeof logical operator returns - -true if its first argument does -not contain its second argument anywhere in its structure. -

    -syntax:

    -

    -

    -freeof(<expression>,<kernel>) or -<expression> freeof <kernel> -

    -

    -

    -<expression> can be any valid scalar REDUCE expression, <kernel> mus -t -be a kernel expression (see kernel). -

    -

    -

    -examples:

    -

    
    -a := x + sin(y)**2 + log sin z;
    -			 
    -
    -
    -                           2
    -  A := LOG(SIN(Z)) + SIN(Y)   + X 
    -
    -
    -if freeof(a,sin(y)) then write "free" else write "not free";
    -			 
    -
    -
    -  not free 
    -
    -
    -if freeof(a,sin(x)) then write "free" else write "not free";
    -			 
    -
    -
    -  free 
    -
    -
    -if a freeof sin z then write "free" else write "not free";
    -			 
    -
    -
    -  not free
    -
    -

    Logical operators can only be used in conditional expressions such - as -

    -

    -if...then or while...do. -

    -

    -

    - - - -LEQ -INDEX

    - - - -LEQ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The leq operator is a binary infix or prefix logical operator. It -returns -true if its first argument is less than or equal to it -s second -argument. As an infix operator it is identical with <=. -

    -syntax:

    -

    -

    -leq(<expression>,<expression>) or <expression> -leq <expression> -

    -

    -

    -

    -<expression> can be any valid REDUCE expression that evaluates to a -number. -

    -

    -

    -examples:

    -

    
    -a := 15; 
    -
    -  A := 15 
    -
    -
    -if leq(a,25) then write "yes" else write "no";
    -			 
    -
    -
    -  yes 
    -
    -
    -if leq(a,15) then write "yes" else write "no";
    -			 
    -
    -
    -  yes 
    -
    -
    -if leq(a,5) then write "yes" else write "no";
    -			 
    -
    -
    -  no
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    -if...then...else or while...do. -

    -

    -

    - - - -LESSP -INDEX

    - - - -LESSP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The lessp operator is a binary infix or prefix logical operator. It -returns -true if its first argument is strictly less than its s -econd -argument. As an infix operator it is identical with <. -

    -syntax:

    -

    -

    -lessp(<expression>,<expression>) -or <expression> lessp <expression> -

    -

    -

    -

    -<expression> can be any valid REDUCE expression that evaluates to a -number. -

    -

    -

    -examples:

    -

    
    -a := 15; 
    -
    -  A := 15 
    -
    -
    -if lessp(a,25) then write "yes" else write "no";
    -			 
    -
    -
    -  yes 
    -
    -
    -if lessp(a,15) then write "yes" else write "no";
    -			 
    -
    -
    -  no 
    -
    -
    -if lessp(a,5) then write "yes" else write "no";
    -			 
    -
    -
    -  no
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    -if...then...else or while...do. -

    -

    -

    - - - -MEMBER -INDEX

    - - - -MEMBER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -<expression> member <list> -

    -

    -

    -memberis an infix binary comparison operator that evaluates to - -true if <expression> is -equal to a member of -the -list <list>. -

    -

    -

    -examples:

    -

    
    -if a member {a,b} then 1 else 0; 
    -
    -  1 
    -
    -
    -if 1 member(1,2,3) then a else b; 
    -
    -  a 
    -
    -
    -if 1 member(1.0,2) then a else b; 
    -
    -  b
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    -if...then...else or while...do. -<member> can also be used as a prefix operator. However, this use -is not encouraged. Finally, -equal (=) is used for the test -within the list, so expressions must be of the same type to match. -

    -

    -

    - - - -NEQ -INDEX

    - - - -NEQ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator neq is an infix binary comparison -operator. It returns -true if its two -arguments are not -equal. -

    -

    -

    -syntax:

    -<expression> neq <expression> -

    -

    -

    -An inequality is satisfied between floating point numbers and integers -that have the same value. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -a := 4; 
    -
    -  A := 4 
    -
    -
    -b := 4.0; 
    -
    -  B := 4.0 
    -
    -
    -if a neq b then write "true" else write "false";
    -			 
    -
    -
    -  false 
    -
    -
    -if a neq 5 then write "true" else write "false";
    -			 
    -
    -
    -  true
    -
    -

    Comparison operators can only be used as conditions in conditional - commands -such as if...then and repeat...until. -<neq> can also be used as a prefix operator. However, this use -is not encouraged. -

    -

    -

    - - - -NOT -INDEX

    - - - -NOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The not operator returns -true if its argument evaluates to - -nil, and nil if its argument is true -. -

    -syntax:

    -

    -

    -not(<logical expression>) -

    -

    -

    -

    -examples:

    -

    
    -if not numberp(a) then write "indeterminate" else write a;
    -			 
    -
    -
    -  indeterminate; 
    -
    -
    -a := 10; 
    -
    -  A := 10 
    -
    -
    -if not numberp(a) then write "indeterminate" else write a;
    -			 
    -
    -
    -  10 
    -
    -
    -if not(numberp(a) and a < 0) then write "positive number";
    -			 
    -
    -
    -  positive number
    -
    -

    Logical operators can only be used in conditional statements such -as -

    -

    -if...then...else or while...do. -

    -

    -

    - - - -NUMBERP -INDEX

    - - - -NUMBERP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The numberp operator returns -true if its argument is a number, -and -nil otherwise. -

    -syntax:

    -

    -

    -numberp(<expression>) or numberp <expression> -

    -

    -

    -<expression> can be any REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -cc := 15.3; 
    -
    -  CC := 15.3 
    -
    -
    -if numberp(cc) then write "number" else write "nonnumber"; 
    -
    -
    -  number 
    -
    -
    -if numberp(cb) then write "number" else write "nonnumber"; 
    -
    -
    -  nonnumber
    -
    -

    Logical operators can only be used in conditional expressions, suc -h as -

    -

    -if...then...else and while...do. -

    -

    -

    - - - -ORDP -INDEX

    - - - -ORDP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The ordp logical operator returns -true if its first argument is -ordered ahead of its second argument in canonical internal ordering, or is -identical to it. -

    -syntax:

    -

    -

    -ordp(<expression1>,<expression2>) -

    -

    -

    -

    -<expression1> and <expression2> can be any valid REDUCE scalar -expression. -

    -

    -

    -examples:

    -

    
    -if ordp(x**2 + 1,x**3 + 3) then write "yes" else write "no";
    -			 
    -
    -
    -  no 
    -
    -
    -if ordp(101,100) then write "yes" else write "no";
    -			 
    -
    -
    -  yes 
    -
    -
    -if ordp(x,x) then write "yes" else write "no";
    -			 
    -
    -
    -  yes
    -
    -

    Logical operators can only be used in conditional expressions, suc -h as -

    -

    -if...then...else and while...do. -

    -

    -

    - - - -PRIMEP -INDEX

    - - - -PRIMEP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -primep(<expression>) or primep <simple\_expression -> -

    -

    -

    -If <expression> evaluates to a integer, primep returns - -true

    -

    -if <expression> is a prime number (i.e., a number other than 0 and -plus or minus 1 which is only exactly divisible by itself or a unit) -and -nil otherwise. -If <expression> does not have an integer value, a type error occurs. -

    -

    -

    -examples:

    -

    
    -if primep 3 then write "yes" else write "no"; 
    -
    -
    -  YES 
    -
    -
    -if primep a then 1; 
    -
    -  ***** A invalid as integer
    -
    -

    - - -TRUE -INDEX

    - - - -TRUE

    -

    - -

    -

    -Any value of the boolean part of a logical expression which is neither - -nil nor 0 is considered as true. Mos -t -builtin test and compare functions return -t for true -and -nil for false. -

    -

    -

    -examples:

    -

    
    -if member(3,{1,2,3}) then 1 else -1;
    -
    -
    -  1
    -
    -
    -if floor(1.7) then 1 else -1; 
    -
    -  1 
    -
    -
    -if floor(0.7) then 1 else -1; 
    -
    -  -1
    -
    -

    - - -Boolean Operators -INDEX

    -Boolean Operators

    -
  • boolean value concept

    -

  • EQUAL operator

    -

  • EVENP operator

    -

  • false concept

    -

  • FREEOF operator

    -

  • LEQ operator

    -

  • LESSP operator

    -

  • MEMBER operator

    -

  • NEQ operator

    -

  • NOT operator

    -

  • NUMBERP operator

    -

  • ORDP operator

    -

  • PRIMEP operator

    -

  • TRUE concept

    -

  • - - -BYE -INDEX

    - - - -BYE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The bye command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the bye command exits REDUCE. quit is a -synonym for bye. -

    -

    - - - -CONT -INDEX

    - - - -CONT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The command cont returns control to an interactive file after a - -pause command that has been answered with n. - -

    -

    -

    -examples:

    -

    Suppose you are in the middle of an interactive file. -

     
    -
    - 
    -
    -  factorize(x**2 + 17*x + 60); 
    -
    -
    - 
    -
    -  {{X + 12,1},{X + 5,1}} 
    -
    -
    -   pause; 
    -
    -  Cont? (Y or N) 
    -
    -
    -n 
    -
    -saveas results; 
    -
    -factor1 := first results; 
    -
    -  FACTOR1 := {X + 12,1} 
    -
    -
    -factor2 := second results; 
    -
    -  FACTOR2 := {X + 5,1} 
    -
    -
    -cont; 

    the file resumes

    
    -
    -

    -

    -

    -A -pause allows you to enter your own REDUCE commands, ch -ange -switch values, inquire about results, or other such activities. When you -wish to resume operation of the interactive file, use cont. -

    -

    -

    -

    - - - -DISPLAY -INDEX

    - - - -DISPLAY _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -When given a numeric argument <n>, display prints the <n> -most recent input statements, identified by prompt numbers. If an empty -pair of parentheses is given, or if <n> is greater than the current -number of statements, all the input statements since the beginning of -the session are printed. -

    -

    -

    -syntax:

    -display(<n>) or display() -

    -

    -

    -<n> should be a positive integer. However, if it is a real number, the -truncated integer value is used, and if a non-numeric argument is used, all -the input statements are printed. -

    -

    -The statements are displayed in upper case, with lines split at semicolons or -dollar signs, as they are in editing. If long files have been input during -the session, the display command is slow to format these for -printing. -

    -

    -

    - - - -LOAD_PACKAGE -INDEX

    - - - -LOAD\_PACKAGE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The load_package command is used to load REDUCE packages, such as -gentran that are not automatically loaded by the system. -

    -syntax:

    -

    -

    -load_package "<package\_name>" -

    -

    -

    -A package is only loaded once; subsequent calls of load_package -for the same package name are ignored. -

    -

    - - - -PAUSE -INDEX

    - - - -PAUSE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The pause command, given in an interactive file, stops operation and -asks if you want to continue or not. -

    -

    -

    -examples:

    -

    An interactive file is running, and at some point you -see the -question

     
    -
    -				   Cont? (Y or N) 
    -

    If you type

     
    -
    -ykey{Return}
    -

    the file continues to run until the next pause or the end.

    - 
    -

    If you type

     
    -
    -nkey{Return} 
    -

    you will get a numbered REDUCE prompt, and be allowed to -enter and execute any REDUCE statements. If you later wish to continue with -the file, type

     
    -
    -cont; 
    -

    and the file resumes.

    -

    -

    -To use pause in your own interactive files, type -

    -

    -pause;in the file wherever you want it. -

    -

    -pausedoes not allow you to continue without typing either y -or n. Its use is to slow down scrolling of interactive files, or to -let you change parameters or switch settings for the calculations. -

    -

    -If you have stopped an interactive file at a pause, and do not wish to - -resume the file, type end;. This does not end the REDUCE session, but -stops input from the file. A second end; ends the REDUCE session. -However, if you have pauses from more than one file stacked up, an end; - -brings you back to the top level, not the file directly above. -

    -

    -A pause typed from the terminal has no effect. -

    -

    -

    - - - -QUIT -INDEX

    - - - -QUIT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The quit command ends the REDUCE session, returning control to the -program (e.g., the operating system) that called REDUCE. When you are at -the top level, the quit command exits REDUCE. -bye is a -synonym for quit. -

    -

    - - - -RECLAIM -INDEX

    - - - -RECLAIM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -REDUCE's memory is in a storage structure called a heap. As REDUCE -statements execute, chunks of memory are used up. When these chunks are no -longer needed, they remain idle. When the memory is almost full, -the system executes a garbage collection, reclaiming space that is no -longer needed, and putting all the free space at one end. Depending on -the size of the image REDUCE is using, -garbage collection needs to be done more or less often. A -larger image means fewer but longer garbage collections. -Regardless of memory size, -if you ask REDUCE to do something ridiculous, like factorial(2000), it -may -garbage collect many times. -

    -

    -

    - - - -REDERR -INDEX

    - - - -REDERR _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The rederr command allows you to print an error message from inside -a -procedure or a -block statement. -The calculation is gracefully terminated. -

    -syntax:

    -

    -

    -rederr<message> -

    -

    -

    -<message> is an error message, usually inside double quotation marks -(a -string). -

    -

    -

    -examples:

    -

    
    -procedure fac(n);
    -   if not (fixp(n) and n>=0)
    -     then  rederr "Choose nonneg. integer only"
    -    else for i := 0:n-1 product i+1;
    - 
    -
    -  fac 
    -
    -
    -fac a; 
    -
    -  	   ***** Choose nonneg. integer only 
    -
    -
    -fac 5; 
    -
    -  120
    -
    -

    The above procedure finds the factorial of its argument. -If n is not a positive integer or 0, an error message is returned. -

    -

    -If your procedure is executed in a file, the usual error message is -printed, followed by Cont? (Y or N), just as any other error does from - -a file. Although the procedure is gracefully terminated, any switch settings or - -variable assignments you made before the error occurred are not undone. If you -need to clean up such items before exiting, use a group statement, with the -rederr command as its last statement. -

    -

    -

    - - - -RETRY -INDEX

    - - - -RETRY _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The retry command allows you to retry the latest statement that resulte -d -in an error message. -

    -

    -

    -examples:

    -

    
    -matrix a; 
    -
    -det a; 
    -
    -  ***** Matrix A not set 
    -
    -
    -a := mat((1,2),(3,4)); 
    -
    -  A(1,1) := 1
    -  A(1,2) := 2
    -  A(2,1) := 3
    -  A(2,2) := 4
    -
    -
    -retry; 
    -
    -  -2
    -
    -

    retryremembers only the most recent statement that result -ed in an -error message. It allows you to stop and fix something obvious, then -continue on your way without retyping the original command. -

    -

    -

    - - - -SAVEAS -INDEX

    - - - -SAVEAS _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The saveas command saves the current workspace under the name of its -argument. -

    -syntax:

    -

    -

    -saveas<identifier> -

    -

    -

    -<identifier> can be any valid REDUCE identifier. -

    -

    -

    -examples:

    -

    (The numbered prompts are shown below, unlike in most -examples)

    
    -
    -1: solve(x^2-3);
    -
    -  {x=sqrt(3),x= - sqrt(3)}
    -
    -
    -2: saveas rts(0)$
    -
    -3: rts(0);
    -
    -  {x=sqrt(3),x= - sqrt(3)}
    -
    -

    -

    -

    -saveasworks only for the current workspace, the last algebraic -expression produced by REDUCE. This allows you to save a result that you -did not assign to an identifier when you originally typed the input. -For access to previous output use -ws. -

    -

    -

    - - - -SHOWTIME -INDEX

    - - - -SHOWTIME _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The showtime command prints the elapsed system time since the last -call of this command or since the beginning of the session, if it has not -been called before. -

    -

    -

    -examples:

    -

    
    -showtime; 
    -
    -  Time: 1020 ms 
    -
    -
    -factorize(x^4 - 8x^4 + 8x^2 - 136x - 153);
    -			 
    -
    -
    -          2
    -  {X - 9,X  + 17,X + 1} 
    -
    -
    -showtime; 
    -
    -  Time: 920 ms
    -
    -

    The time printed is either the elapsed cpu time or the elapsed wal -l clock -time, depending on your system. showtime allows you to see the -system time resources REDUCE uses in its calculations. Your time readings -will of course vary from this example according to the system you use. -

    -

    -

    - - - -WRITE -INDEX

    - - - -WRITE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The write command explicitly writes its arguments to the output device - -(terminal or file). -

    -syntax:

    -

    -

    -write<item>{,<item>}* -

    -

    -

    -<item> can be an expression, an assignment or a -string -enclosed in double quotation marks ("). -

    -

    -

    -examples:

    -

    
    -write a, sin x, "this is a string"; 
    -
    -
    -  ASIN(X)this is a string 
    -
    -
    -write a," ",sin x," this is a string"; 
    -
    -
    -  A SIN(X) this is a string 
    -
    -
    -if not numberp(a) then write "the symbol ",a;
    -							
    -
    -
    -  the symbol A 
    -
    -
    -array m(10); 
    -
    -for i := 1:5 do write m(i) := 2*i; 
    -
    -
    -  M(1) := 2
    -  M(2) := 4
    -  M(3) := 6
    -  M(4) := 8
    -  M(5) := 10
    -
    -
    -m(4); 
    -
    -  8
    -
    -

    The items specified by a single write statement print on -a single line -unless they are too long. A printed line is always ended with a carriage -return, so the next item printed starts a new line. -

    -

    -When an assignment statement is printed, the assignment is also made. This -allows you to get feedback on filling slots in an array with a -for - statement, as shown in the last example above. -

    -

    -

    - - - -General Commands -INDEX

    -General Commands

    -
  • BYE command

    -

  • CONT command

    -

  • DISPLAY command

    -

  • LOAD\_PACKAGE command

    -

  • PAUSE command

    -

  • QUIT command

    -

  • RECLAIM operator

    -

  • REDERR command

    -

  • RETRY command

    -

  • SAVEAS command

    -

  • SHOWTIME command

    -

  • WRITE command

    -

  • - - -APPEND -INDEX

    - - - -APPEND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The append operator constructs a new -list -from the elements of its two arguments (which must be lists). -

    -

    -

    -syntax:

    -append(<list>,<list>) -

    -

    -

    -<list> must be a list, though it may be the empty list ({}). -Any arguments beyond the first two are ignored. -

    -

    -

    -examples:

    -

    
    -alist := {1,2,{a,b}}; 
    -
    -  ALIST := {1,2,{A,B}} 
    -
    -
    -blist := {3,4,5,sin(y)}; 
    -
    -  BLIST := {3,4,5,SIN(Y)} 
    -
    -
    -append(alist,blist); 
    -
    -  {1,2,{A,B},3,4,5,SIN(Y)} 
    -
    -
    -append(alist,{}); 
    -
    -  {1,2,{A,B}} 
    -
    -
    -append(list z,blist); 
    -
    -  {Z,3,4,5,SIN(Y)}
    -
    -

    The new list consists of the elements of the second list appended -to the -elements of the first list. You can append new elements to the -beginning or end of an existing list by putting the new element in a -list (use curly braces or the operator list). This is -particularly helpful in an iterative loop. -

    -

    -

    - - - -ARBINT -INDEX

    - - - -ARBINT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator arbint is used to express arbitrary integer parts -of an expression, e.g. in the result of -solve when - -allbranch is on. -

    -examples:

    -

    
    -
    -solve(log(sin(x+3)),x); 
    -
    -  {X=2*ARBINT(1)*PI - ASIN(1) - 3,
    -   X=2*ARBINT(1)*PI + ASIN(1) + PI - 3}
    -
    -

    -

    - - - -ARBCOMPLEX -INDEX

    - - - -ARBCOMPLEX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator arbcomplex is used to express arbitrary scalar parts -of an expression, e.g. in the result of -solve when -the solution is parametric in one of the variable. -

    -examples:

    -

    
    -
    -solve({x+3=y-2z,y-3x=0},{x,y,z}); 
    -
    -
    -     2*ARBCOMPLEX(1) + 3
    -  {X=-------------------,
    -              2
    -      3*ARBCOMPLEX(1) + 3
    -    Y=-------------------,
    -               2
    -    Z=ARBCOMPLEX(1)}
    -
    -

    -

    - - - -ARGLENGTH -INDEX

    - - - -ARGLENGTH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator arglength returns the number of arguments of the top-level - -operator in its argument. -

    -

    -

    -syntax:

    -arglength(<expression>) -

    -

    -

    -<expression> can be any valid REDUCE algebraic expression. -

    -

    -

    -examples:

    -

    
    -arglength(a + b + c + d); 
    -
    -  4 
    -
    -
    -arglength(a/b/c); 
    -
    -  2 
    -
    -
    -arglength(log(sin(df(r**3*x,x)))); 
    -
    -
    -  1
    -
    -

    In the first example, + is an n-ary operator, so the numb -er of terms -is returned. In the second example, since / is a binary operator, the -argument is actually (a/b)/c, so there are two terms at the top level. In -the last example, no matter how deeply the operators are nested, there is -still only one argument at the top level. -

    -

    -

    - - - -COEFF -INDEX

    - - - -COEFF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The coeff operator returns the coefficients of the powers of the -specified variable in the given expression, in a -list. -

    -

    -

    -syntax:

    -coeff(<expression>,<variable>) -

    -

    -

    -<expression> is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch - -ratarg is on. <variable> must be a kernel. The r -esults are -returned in a list. -

    -

    -

    -examples:

    -

    
    -coeff((x+y)**3,x); 
    -
    -    3     2
    -  {Y  ,3*Y  ,3*Y,1} 
    -
    -
    -coeff((x+2)**4 + sin(x),x); 
    -
    -  {SIN(X) + 16,32,24,8,1} 
    -
    -
    -high_pow; 
    -
    -  4 
    -
    -
    -low_pow; 
    -
    -  0 
    -
    -
    -ab := x**9 + sin(x)*x**7 + sqrt(y); 
    - 
    -
    -
    -                          7     9
    -  AB := SQRT(Y) + SIN(X)*X   + X
    -
    -
    -coeff(ab,x); 
    -
    -  {SQRT(Y),0,0,0,0,0,0,SIN(X),0,1}
    -
    -

    The variables -high_pow and -low_pow are set to the -highest and lowest powers of the variable, respectively, appearing in the -expression. -

    -

    -The coefficients are put into a list, with the coefficient of the lowest -(constant) term first. You can use the usual list access methods -(first, second, third, rest, length -, and -part) to extract them. If a power does not appear in the -expression, the corresponding element of the list is zero. Terms involving -functions of the specified variable but not including powers of it (for -example in the expression x**4 + 3*x**2 + tan(x)) are placed in the -constant term. -

    -

    -Since the coeff command deals with the expanded form of the expression, - -you may get unexpected results when -exp is off, or when - -factor or -ifactor are on. -

    -

    -If you want only a specific coefficient rather than all of them, use the - -coeffn operator. -

    -

    -

    -

    - - - -COEFFN -INDEX

    - - - -COEFFN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The coeffn operator takes three arguments: an expression, a kernel, and - -a non-negative integer. It returns the coefficient of the kernel to that -integer power, appearing in the expression. -

    -

    -

    -syntax:

    -coeffn(<expression>,<kernel>,<integer>) -

    -

    -

    -<expression> must be a polynomial, unless -ratarg is on which -allows rational expressions. <kernel> must be a kernel, and -<integer> must be a non-negative integer. -

    -

    -

    -examples:

    -

    
    -
    -ff := x**7 + sin(y)*x**5 + y**4 + x + 7; 
    -
    -
    -                5     7         4
    -  FF := SIN(Y)*X   + X   + X + Y   + 7 
    -
    -
    -coeffn(ff,x,5); 
    -
    -  SIN(Y) 
    -
    -
    -coeffn(ff,z,3); 
    -
    -  0 
    -
    -
    -coeffn(ff,y,0); 
    -
    -          5     7
    -  SIN(Y)*X   + X   + X + 7 
    -
    -
    -
    -rr := 1/y**2+y**3+sin(y); 
    -
    -                2     5
    -        SIN(Y)*Y   + Y   + 1
    -  RR := -------------------- 
    -                  2
    -                 Y
    -
    -
    -on ratarg; 
    -
    -
    -coeffn(rr,y,-2); 
    -
    -  ***** -2 invalid as COEFFN index 
    -
    -
    -
    -coeffn(rr,y,5); 
    -
    -  1
    -  ---
    -   2
    -  Y
    -
    -

    If the given power of the kernel does not appear in the expression -, -coeffn returns 0. Negative powers are never detected, even if -they appear in the expression and -ratarg are on. coeffn -with an integer argument of 0 returns any terms in the expression that -do not contain the given kernel. -

    -

    -

    - - - -CONJ -INDEX

    - - - -CONJ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -conj(<expression>) or conj <simple\_expression> -

    -

    -

    -This operator returns the complex conjugate of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators -repart and -impart. -

    -

    -

    -examples:

    -

    
    -conj(1+i); 
    -
    -  1-I 
    -
    -
    -conj(a+i*b); 
    -
    -  REPART(A) - REPART(B)*I - IMPART(A)*I - IMPART(B)
    -
    -

    - - -CONTINUED_FRACTION -INDEX

    - - - -CONTINUED_FRACTION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -continued_fraction(<num>) -or continued_fraction( <num>,<size>) -

    -

    -

    -This operator approximates the real number <num> -( -rational number, -rounded number) -into a continued fraction. The result is a list of two elements: the -first one is the rational value of the approximation, the second one -is the list of terms of the continued fraction which represents the -same value according to the definition t0 +1/(t1 + 1/(t2 + ...)). -Precision: the second optional parameter <size> is an upper bound -for the absolute value of the result denominator. If omitted, the -approximation is performed up to the current system precision. -

    -

    -

    -examples:

    -

    
    -continued_fraction pi;
    - 
    -
    -   1146408
    -  {-------,{3,7,15,1,292,1,1,1,2,1}} 
    -   364913
    -
    -
    -continued_fraction(pi,100);
    - 
    -
    -   22
    -  {--,{3,7}} 
    -   7
    -
    -

    - - -DECOMPOSE -INDEX

    - - - -DECOMPOSE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The decompose operator takes a multivariate polynomial as argument, -and returns an expression and a -list of - -equations from which the -original polynomial can be found by composition. -

    -

    -

    -syntax:

    -decompose(<expression>) or decompose - <simple\_expression> -

    -

    -

    -

    -examples:

    -

    
    -decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4-
    -          218900*x^3+65690*x^2-7700*x+234)
    -
    - 
    -
    -   2                  2            2
    -  U  + 35*U + 234, U=V  + 10*V, V=X  - 22*X 
    -
    -
    -     decompose(u^2+v^2+2u*v+1) 
    -
    -   2
    -  W   + 1, W=U + V
    -
    -

    Unlike factorization, this decomposition is not unique. Further -details can be found in V.S. Alagar, M.Tanh, <Fast Polynomial -Decomposition>, Proc. EUROCAL 1985, pp 150-153 (Springer) and J. von zur -Gathen, <Functional> -<Decomposition of Polynomials: the Tame Case>, J. -Symbolic Computation (1990) 9, 281-299. -

    -

    -

    - - - -DEG -INDEX

    - - - -DEG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator deg returns the highest degree of its variable argument -found in its expression argument. -

    -

    -

    -syntax:

    -deg(<expression>,<kernel>) -

    -

    -

    -<expression> is expected to be a polynomial expression, not a rational -expression. Rational expressions are accepted when the switch - -ratarg is on. <variable> must be a -kernel. The -results are returned in a list. -

    -

    -

    -examples:

    -

    
    -
    -deg((x+y)**5,x); 
    -
    -  5 
    -
    -
    -
    -deg((a+b)*(c+2*d)**2,d); 
    -
    -  2 
    -
    -
    -
    -deg(x**2 + cos(y),sin(x)); 
    -
    -
    -deg((x**2 + sin(x))**5,sin(x)); 
    -
    -  5
    -
    -

    - - -DEN -INDEX

    - - - -DEN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The den operator returns the denominator of its argument. -

    -

    -

    -syntax:

    -den(<expression>) -

    -

    -

    -<expression> is ordinarily a rational expression, but may be any valid -scalar REDUCE expression. -

    -

    -

    -examples:

    -

    
    -
    -a := x**3 + 3*x**2 + 12*x; 
    -
    -           2
    -  A := X*(X   + 3*X + 12) 
    -
    -
    -
    -b := 4*x*y + x*sin(x); 
    -
    -  B := X*(SIN(X) + 4*Y) 
    -
    -
    -
    -den(a/b); 
    -
    -  SIN(X) + 4*Y 
    -
    -
    -
    -den(aa/4 + bb/5); 
    -
    -  20 
    -
    -
    -
    -den(100/6); 
    -
    -  3 
    -
    -
    -
    -den(sin(x)); 
    -
    -  1
    -
    -

    denreturns the denominator of the expression after it has - been -simplified by REDUCE. As seen in the examples, this includes putting -sums of rational expressions over a common denominator, and reducing -common factors where possible. If the expression does not have any -other denominator, 1 is returned. -

    -

    -Switch settings, such as -mcd or -rational, have an -effect on the denominator of an expression. -

    -

    -

    - - - -DF -INDEX

    - - - -DF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The df operator finds partial derivatives with respect to one or -more variables. -

    -

    -

    -syntax:

    -df(<expression>,<var> - [,<number>] - {,<var> [ ,<number>] } ) -

    -

    -

    -<expression> can be any valid REDUCE algebraic expression. <var> -must be a -kernel, and is the differentiation variable. -<number> must be a non-negative integer. -

    -

    -

    -examples:

    -

    
    -
    -df(x**2,x); 
    -
    -  2*X 
    -
    -
    -
    -df(x**2*y + sin(y),y); 
    -
    -            2
    -  COS(Y) + X  
    -
    -
    -
    -df((x+y)**10,z); 
    -
    -  0 
    -
    -
    -
    -
    -df(1/x**2,x,2); 
    -
    -  6
    -  ---
    -   4
    -  X
    -
    -
    -
    -df(x**4*y + sin(y),y,x,3); 
    -
    -  24*X 
    -
    -
    -
    -for all x let df(tan(x),x) = sec(x)**2; 
    -
    -
    -df(tan(3*x),x); 
    -
    -            2
    -  3*SEC(3*X)
    -
    -

    An error message results if a non-kernel is entered as a different -iation -operator. If the optional number is omitted, it is assumed to be 1. -See the declaration -depend to establish dependencies for implicit -differentiation. -

    -

    -You can define your own differentiation rules, expanding REDUCE's -capabilities, using the -let command as shown in the last example -above. Note that once you add your own rule for differentiating a -function, it supersedes REDUCE's normal handling of that function for the -duration of the REDUCE session. If you clear the rule -( -clearrules), you don't get back -to the previous rule. -

    -

    -

    - - - -EXPAND_CASES -INDEX

    - - - -EXPAND\_CASES _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -When a -root_of form in a result of -solve -has been converted to a -one_of form, expand_cases -can be used to convert this into form corresponding to the -normal explicit results of -solve. See -root_of. -

    -

    - - - -EXPREAD -INDEX

    - - - -EXPREAD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -expread() -

    -

    -

    -expreadreads one well-formed expression from the current input -buffer and returns its value. -

    -

    -

    -examples:

    -

    
    -expread(); a+b; 
    -
    -  A + B
    -
    -

    - - -FACTORIZE -INDEX

    - - - -FACTORIZE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The factorize operator factors a given expression into a list of -{factor,power} pairs. -

    -syntax:

    -

    -

    -factorize(<expression>) -

    -

    -

    -<expression> should be a polynomial, otherwise an error will result. -

    -

    -

    -examples:

    -

    
    -
    -fff := factorize(x^3 - y^3); 
    -
    -         2          2
    -  		  {{X  + X*Y + Y ,1},{X - Y,1}} 
    -
    -
    -fac1 := first fff; 
    -
    -             2          2
    -  FAC1 := {{X  + X*Y + Y ,1} 
    -
    -
    -factorize(x^15 - 1); 
    -
    -       8    7    6    5    4
    -   {{ X  - X  + X  - X  + X  - X + 1,1},
    -     4    3    2
    -   {X  + X  + X  + X + 1,1},
    -     2
    -   {X  + X + 1,1},
    -   {X - 1,1}}
    -
    -
    -lastone := part(ws,length ws); 
    -
    -  	LASTONE := {X - 1,1} 
    -
    -
    -setmod 2; 
    -
    -  1 
    -
    -
    -on modular; 
    -
    -factorize(x^15 - 1); 
    -
    -     4    3    2
    -  {{X  + X  + X  + X + 1,1},
    -     4    3
    -   {X  + X  + 1,1},
    -     4
    -   {X  + X + 1,1},
    -      2
    -   { X  + X + 1,1},
    -   {X + 1,1}}
    -
    -

    The factorize command returns the factor,power pairs as a - -list. -You can therefore use the usual list access methods ( -first, - -second, -third, -rest, -length and - -part) to extract these pairs. -

    -

    -If the <expression> given to factorize is an integer, it will be - -factored into its prime components. To factor any integer factor of a -non-numerical expression, the switch -ifactor should be turned on. -Its default is off. -ifactor has effect only when factoring is -explicitly done by factorize, not when factoring is automatically -done with the -factor switch. If full factorization is not -needed the switch -limitedfactors allows you to reduce the -computing time of calls to factorize. -

    -

    -Factoring can be done in a modular domain by calling factorize when - -modular is on. You can set the modulus with the -setmod -command. The last example above shows factoring modulo 2. -

    -

    -For general comments on factoring, see comments under the switch - -factor. -

    -

    -

    - - - -HYPOT -INDEX

    - - - -HYPOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -hypot(<expression>,<expression>) -

    -

    -

    -If rounded is on, and the two arguments evaluate to numbers, this -operator returns the square root of the sums of the squares of the -arguments in a manner that avoids intermediate overflow. In other cases, -an expression in the original operator is returned. -

    -

    -

    -examples:

    -

    
    -hypot(3,4); 
    -
    -  HYPOT(3,4) 
    -
    -
    -on rounded; 
    -
    -ws; 
    -
    -  5.0 
    -
    -
    -hypot(a,b); 
    -
    -  HYPOT(A,B)
    -
    -

    - - -IMPART -INDEX

    - - - -IMPART _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -impart(<expression>) or impart <simple\_expression -> -

    -

    -

    -This operator returns the imaginary part of an expression, if that -argument has an numerical value. A non-numerical argument is returned as -an expression in the operators -repart and impart. -

    -examples:

    -

    
    -impart(1+i); 
    -
    -  1 
    -
    -
    -impart(a+i*b); 
    -
    -  REPART(B) + IMPART(A)
    -
    -

    -

    - - - -INT -INDEX

    - - - -INT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The int operator performs analytic integration on a variety of -functions. -

    -

    -

    -syntax:

    -int(<expression>,<kernel>) -

    -

    -

    -<expression> can be any scalar expression. involving polynomials, log -functions, exponential functions, or tangent or arctangent expressions. -int attempts expressions involving error functions, dilogarithms -and other trigonometric expressions. Integrals involving algebraic -extensions (such as square roots) may not succeed. <kernel> must be a -REDUCE -kernel. -

    -

    -

    -examples:

    -

    
    -int(x**3 + 3,x); 
    -
    -      3
    -  X*(X  + 12)
    -  ----------- 
    -       4
    -
    -
    -
    -int(sin(x)*exp(2*x),x);
    - 
    -
    -     2*X
    -    E   *(COS(X) - 2*SIN(X))
    -  - ------------------------ 
    -               5
    -
    -
    -int(1/(x^2-2),x);
    - 
    -
    -  SQRT(2)*(LOG( - SQRT(2) + X) - LOG(SQRT(2) + X))
    -  ------------------------------------------------ 
    -                         4
    -
    -
    -int(sin(x)/(4 + cos(x)**2),x);
    - 
    -
    -         COS(X)
    -    ATAN(------)
    -           2
    -  - ------------ 
    -         2
    -
    -
    -
    -int(1/sqrt(x^2-x),x); 
    -
    -      SQRT(X)*SQRT(X - 1)
    -  INT(-------------------,X)
    -              2
    -             X -X
    -
    -

    Note that REDUCE couldn't handle the last integral with its defaul -t -integrator, since the integrand involves a square root. However, -the integral can be found using the -algint package. -Alternatively, you could add a rule using the -let statement -to evaluate this integral. -

    -

    -The arbitrary constant of integration is not shown. Definite integrals can -be found by evaluating the result at the limits of integration (use - -rounded) and subtracting the lower from the higher. Ev -aluation can -be easily done by the -sub operator. -

    -

    -When int cannot find an integral it returns an expression -involving formal int expressions unless the switch - -failhard has been set. If not all of the expression -can be integrated, the switch -nolnr controls whether a partially -integrated result should be returned or not. -

    -

    -

    -

    - - - -INTERPOL -INDEX

    - - - -INTERPOL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -interpolgenerates an interpolation polynomial. -

    -syntax:

    -

    -

    -interpol(<values>,<variable>,<points>) -

    -

    -

    -<values> and <points> are -lists of equal length and -<variable> is an algebraic expression (preferably a -kernel). -The interpolation polynomial is generated in the given variable of degree -length(<values>)-1. The unique polynomial f is defined by the -property that for corresponding elements v of <values> and -p of <points> the relation f(p)=v holds. -

    -

    -

    -examples:

    -

    
    -f := for i:=1:4 collect(i**3-1); 
    -
    -  F := 0,7,26,63 
    -
    -
    -p := {1,2,3,4}; 
    -
    -  P := 1,2,3,4 
    -
    -
    -interpol(f,x,p); 
    -
    -   3
    -  X  - 1
    -
    -

    The Aitken-Neville interpolation algorithm is used which guarantee -s a -stable result even with rounded numbers and an ill-conditioned problem. -

    -

    -

    - - - -LCOF -INDEX

    - - - -LCOF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The lcof operator returns the leading coefficient of a given expression - -with respect to a given variable. -

    -syntax:

    -

    -

    -lcof(<expression>,<kernel>) -

    -

    -

    -<expression> is ordinarily a polynomial. If -ratarg is on, -a rational expression may also be used, otherwise an error results. -<kernel> must be a -kernel. -

    -

    -

    -examples:

    -

    
    -lcof((x+2*y)**5,y); 
    -
    -  32 
    -
    -
    -lcof((x + y*sin(x))**2 + cos(x)*sin(x)**2,sin(x));
    -			 
    -
    -
    -        2
    -  COS(X)  + Y 
    -
    -
    -lcof(x**2 + 3*x + 17,y); 
    -
    -   2
    -  X  + 3*X + 17
    -
    -

    If the kernel does not appear in the expression, lcof ret -urns the -expression. -

    -

    -

    - - - -LENGTH -INDEX

    - - - -LENGTH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The length operator returns the number of items in a -list, the -number of -terms in an expression, or the dimensions of an array or matrix. -

    -syntax:

    -

    -

    -length(<expr>) or length <expr> -

    -

    -

    -<expr> can be a list structure, an array, a matrix, or a scalar expression -. -

    -

    -

    -examples:

    -

    
    -alist := {a,b,{ww,xx,yy,zz}}; 
    -
    -  ALIST := {A,B,{WW,XX,YY,ZZ}} 
    -
    -
    -length alist; 
    -
    -  3  
    -
    -
    -length third alist; 
    -
    -  4  
    -
    -
    -dlist := {d}; 
    -
    -  DLIST := {D} 
    -
    -
    -length rest dlist; 
    -
    -  0  
    -
    -
    -matrix mmm(4,5); 
    -
    -length mmm; 
    -
    -  {4,5} 
    -
    -
    -array aaa(5,3,2); 
    -
    -length aaa; 
    -
    -  {6,4,3} 
    -
    -
    -eex := (x+3)**2/(x-y); 
    -
    -          2
    -         X  + 6*X + 9
    -  EEX := ------------ 
    -            X - Y
    -
    -
    -length eex; 
    -
    -  5
    -
    -

    An item in a list that is itself a list only counts as one item. A -n error -message will be printed if length is called on a matrix which has -not had its dimensions set. The length of an array includes the -zeroth element of each dimension, showing the full number of elements -allocated. (Declaring an array A with n elements -allocates A(0),A(1),...,A(n).) The -length of an expression is the total number of additive terms -appearing in the numerator and denominator of the expression. Note that -subtraction of a term is represented internally as addition of a negative -term. -

    -

    -

    - - - -LHS -INDEX

    - - - -LHS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The lhs operator returns the left-hand side of an -equation, -such as those -returned in a list by -solve. -

    -syntax:

    -

    -

    -lhs(<equation>) or lhs <equation> -

    -

    -

    -

    -<equation> must be an equation of the form -

    -

    -left-hand side=right-hand side. -

    -

    -

    -examples:

    -

    
    -polly := (x+3)*(x^4+2x+1); 
    -
    -            5      4      2
    -  POLLY := X  + 3*X  + 2*X  + 7*X + 3 
    -
    -
    -pollyroots := solve(polly,x); 
    -
    -  POLLYROOTS := {X=ROOT F(X3 - X2 + X + 1,X ,
    -                       O                   )
    -                 X=-1,
    -                 X=-3}
    -
    -
    -variable := lhs first pollyroots; 
    -
    -  VARIABLE := X
    -
    -

    - - -LIMIT -INDEX

    - - - -LIMIT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -LIMITS is a fast limit package for REDUCE for functions which are -continuous except for computable poles and singularities, based on -some earlier work by Ian Cohen and John P. Fitch. The Truncated -Power Series package is used for non-critical points, at which -the value of the function is the constant term in the expansion -around that point. l'Hopital's rule is used in critical cases, -with preprocessing of 1-1 forms and reformatting of product forms -in order to apply l'Hopital's rule. A limited amount of bounded -arithmetic is also employed where applicable. -

    -

    -

    -syntax:

    -limit(<expr>,<var>,<limpoint>) or -

    -

    -limit!+(<expr>,<var>,<limpoint>) or -

    -

    -limit!-(<expr>,<var>,<limpoint>) -

    -

    -

    -where <expr> is an expression depending of the variable <var> -(a -kernel) and <limpoint> is the limit point. -If the limit depends upon the direction of approach to the <limpoint>, -the operators limit!+ and limit!- may be used. -

    -

    -

    -examples:

    -

    
    -limit(x*cot(x),x,0);
    -
    -  0
    -
    -
    -limit((2x+5)/(3x-2),x,infinity);
    -
    -  2
    -  --
    -  3
    -
    -

    - - -LPOWER -INDEX

    - - - -LPOWER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The lpower operator returns the leading power of an expression with -respect to a kernel. 1 is returned if the expression does not depend on -the kernel. -

    -syntax:

    -

    -

    -lpower(<expression>,<kernel>) -

    -

    -

    -<expression> is ordinarily a polynomial. If -ratarg is on, -a rational expression may also be used, otherwise an error results. -<kernel> must be a -kernel. -

    -

    -

    -examples:

    -

    
    -lpower((x+2*y)**6,y); 
    -
    -   6
    -  Y  
    -
    -
    -lpower((x + cos(x))**8 + df(x**2,x),cos(x));
    -			 
    -
    -
    -        8
    -  COS(X)  
    -
    -
    -lpower(x**3 + 3*x,y); 
    -
    -  1
    -
    -

    - - -LTERM -INDEX

    - - - -LTERM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The lterm operator returns the leading term of an expression with -respect to a kernel. The expression is returned if it does not depend on -the kernel. -

    -syntax:

    -

    -

    -lterm(<expression>,<kernel>) -

    -

    -

    -<expression> is ordinarily a polynomial. If -ratarg is on, -a rational expression may also be used, otherwise an error results. -<kernel> must be a -kernel. -

    -

    -

    -examples:

    -

    
    -lterm((x+2*y)**6,y); 
    -
    -      6
    -  64*Y  
    -
    -
    -lterm((x + cos(x))**8 + df(x**2,x),cos(x));
    -			 
    -
    -
    -        8
    -  COS(X)  
    -
    -
    -lterm(x**3 + 3*x,y); 
    -
    -   3
    -  X  + 3X
    -
    -

    - - -MAINVAR -INDEX

    - - - -MAINVAR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The mainvar operator returns the main variable (in the system's -internal representation) of its argument. -

    -syntax:

    -

    -

    -mainvar(<expression>) -

    -

    -

    -

    -<expression> is usually a polynomial, but may be any valid REDUCE -scalar expression. In the case of a rational function, the main variable -of the numerator is returned. The main variable returned is a - -kernel. -

    -

    -

    -examples:

    -

    
    -test := (a + b + c)**2; 
    -
    -           2                    2            2
    -  TEST := A  + 2*A*B + 2*A*C + B  + 2*B*C + C  
    -
    -
    -mainvar(test); 
    -
    -  A 
    -
    -
    -korder c,b,a; 
    -
    -mainvar(test); 
    -
    -  C 
    -
    -
    -mainvar(2*cos(x)**2); 
    -
    -  COS(X) 
    -
    -
    -mainvar(17); 
    -
    -  0
    -
    -

    The main variable is the first variable in the canonical ordering -of -kernels. Generally, alphabetically ordered functions come first, then -alphabetically ordered identifiers (variables). Numbers come last, and as -far as mainvar is concerned belong in the family 0. The -canonical ordering can be changed by the declaration -korder, as -shown above. -

    -

    -

    - - - -MAP -INDEX

    - - - -MAP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The map operator applies a uniform evaluation pattern -to all members of a composite structure: a -matrix, -a -list or the arguments of an -operator expression. -The evaluation pattern can be a -unary procedure, an operator, or an algebraic expression with -one free variable. -

    -syntax:

    -

    -

    -map(<function>,<object>) -

    -

    -

    -<object> is a list, a matrix or an operator expression. -

    -

    -<function> is -the name of an operator for a single argument: the operator -is evaluated once with each element of <object> as its single argument, -

    -

    -or an algebraic expression with exactly one -free variable, that is -a variable preceded by the tilde symbol: the expression - is evaluated for each element of <object> where the element is - substituted for the free variable, -

    -

    -or a replacement -rule of the form -

    -syntax:

    -

    -

    -var=> rep -

    -

    -

    -where <var> is a variable (a <kernel> without subscript) - and <rep> is an expression which contains <var>. - Here rep is evaluated for each element of <object> where - the element is substituted for var. var may be - optionally preceded by a tilde. -

    -

    -The rule form for <function> is needed when more than -one free variable occurs. -

    -

    -

    -examples:

    -

    
    -map(abs,{1,-2,a,-a}); 
    -
    -  1,2,abs(a),abs(a) 
    -
    -
    -map(int(~w,x), mat((x^2,x^5),(x^4,x^5))); 
    -
    -
    -          [  3     6 ]
    -          [ x     x  ]
    -          [----  ----]
    -          [ 3     6  ]
    -          [          ]
    -          [  5     6 ]
    -          [ x     x  ]
    -          [----  ----]
    -  	[ 5     6  ]
    -
    -
    -map(~w*6, x^2/3 = y^3/2 -1); 
    -
    -     2     3
    -  2*x =3*(y -2)
    -
    -

    You can use map in nested expressions. It is not allowed -to -apply map for a non-composed object, e.g. an identifier or a number. -

    -

    -

    - - - -MKID -INDEX

    - - - -MKID _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The mkid command constructs an identifier, given a stem and an identifi -er -or an integer. -

    -syntax:

    -

    -

    -mkid(<stem>,<leaf>) -

    -

    -

    -<stem> can be any valid REDUCE identifier that does not include escaped -special characters. <leaf> may be an integer, including one given by a -local variable in a -for loop, or any other legal group of -characters. -

    -

    -

    -examples:

    -

    
    -mkid(x,3); 
    -
    -  X3 
    -
    -
    -factorize(x^15 - 1); 
    -
    -  {X - 1,
    -    2
    -   X  + X + 1,
    -    4    3    2
    -   X  + X  + X  + X + 1,
    -    8    7    5    4    3
    -   X  - X  + X  - X  + X   - X + 1}
    -
    -
    -
    -for i := 1:length ws do write set(mkid(f,i),part(ws,i));
    -	 
    -
    -
    -   8    7    5    4    3
    -  X  - X  + X  - X  + X  - X + 1
    -   4    3    2
    -  X  + X  + X  + X + 1
    -   2
    -  X  + X + 1
    -  X - 1
    -
    -

    You can use mkid to construct identifiers from inside pro -cedures. This -allows you to handle an unknown number of factors, or deal with variable -amounts of data. It is particularly helpful to attach identifiers to the -answers returned by factorize and solve. -

    -

    -

    - - - -NPRIMITIVE -INDEX

    - - - -NPRIMITIVE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -nprimitive(<expression>) or nprimitive - <simple\_expression> -

    -

    -

    -This operator returns the numerically-primitive part of any scalar -expression. In other words, any overall integer factors in the expression -are removed. -

    -

    -

    -examples:

    -

    
    -nprimitive((2x+2y)^2); 
    -
    -   2            2
    -  X  + 2*X*Y + Y  
    -
    -
    -nprimitive(3*a*b*c); 
    -
    -  3*A*B*C
    -
    -

    - - -NUM -INDEX

    - - - -NUM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The num operator returns the numerator of its argument. -

    -syntax:

    -

    -

    -num(<expression>) or num <simple\_expression> -

    -

    -

    -<expression> can be any valid REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -num(100/6); 
    -
    -  50 
    -
    -
    -num(a/5 + b/6); 
    -
    -  6*A + 5*B 
    -
    -
    -num(sin(x)); 
    -
    -  SIN(X)
    -
    -

    numreturns the numerator of the expression after it has b -een simplified -by REDUCE. As seen in the examples, this includes putting sums of rational -expressions over a common denominator, and reducing common factors where -possible. If the expression is not a rational expression, it is returned -unchanged. -

    -

    -

    - - - -ODESOLVE -INDEX

    - - - -ODESOLVE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The odesolve package is a solver for ordinary differential -equations. At the present time it has still limited capabilities: -

    -

    -1. it can handle only a single scalar equation presented as an - algebraic expression or equation, and -

    -

    -2. it can solve only first-order equations of simple types, linear - equations with constant coefficients and Euler equations. -

    -

    -These solvable types are exactly those for which Lie symmetry -techniques give no useful information. -

    -

    -

    -syntax:

    -odesolve(<expr>,<var1>,<var2>) -

    -

    -

    -

    -<expr> is a single scalar expression such that <expr>=0 -is the ordinary differential equation (ODE for short) to be solved, or -is an equivalent -equation. -

    -

    -<var1> is the name of the dependent variable, -<var2> is the name of the independent variable. -

    -

    -A differential in <expr> is expressed using the -df -operator. Note that in most cases you must declare explicitly -<var1> to depend of <var2> using a -depend -declaration -- otherwise the derivative might be evaluated to -zero on input to odesolve. -

    -

    -The returned value is a list containing the equation giving the general -solution of the ODE (for simultaneous equations this will be a -list of equations eventually). It will contain occurrences of -the operator arbconst for the arbitrary constants in the general -solution. The arguments of arbconst should be new. -A counter !!arbconst is used to arrange this. -

    -

    -

    -examples:

    -

    
    -depend y,x;
    -
    -% A first-order linear equation, with an initial condition
    -
    -ode:=df(y,x) + y * sin x/cos x - 1/cos x$
    -
    -odesolve(ode,y,x); 
    -
    -  {y=arbconst(1)*cos(x) + sin(x)}
    -
    -

    - - -ONE_OF -INDEX

    - - - -ONE\_OF _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -The operator one_of is used to represent an indefinite choice -of one element from a finite set of objects. -

    -examples:

    -

    
    -x=one_of{1,2,5}
    -

    this equation encodes that x can take one of the values -1,2 or 5

    
    -

    -REDUCE generates a one_of form in cases when an implicit -root_of expression could be converted to an explicit solution set. -A one_of form can be converted to a solve solution using - -expand_cases. See -root_of. -

    -

    - - - -PART -INDEX

    - - - -PART _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator part permits the extraction of various parts or -operators of expressions and -lists. -

    -syntax:

    -

    -

    -part(<expression,integer>{,<integer>}*) -

    -

    -

    -<expression> can be any valid REDUCE expression or a list, -integer may be an expression that evaluates to a positive or negative -integer or 0. A positive integer <n> picks up the n th term, -counting from the first term toward the end. A negative integer n -picks up the n th term, counting from the back toward the front. The -integer 0 picks up the operator (which is LIST when the expression -is a -list). -

    -

    -

    -examples:

    -

    
    -part((x + y)**5,4); 
    -
    -      2  3
    -  10*X *Y  
    -
    -
    -part((x + y)**5,4,2); 
    -
    -   2
    -  X  
    -
    -
    -part((x + y)**5,4,2,1); 
    -
    -  X 
    -
    -
    -part((x + y)**5,0); 
    -
    -  PLUS 
    -
    -
    -part((x + y)**5,-5); 
    -
    -        4
    -  5*X *Y  
    -
    -
    -part((x + y)**5,4) := sin(x); 
    -
    -   5      4         3  2                 4    5
    -  X  + 5*X *Y + 10*X *Y  + SIN(X) + 5*X*Y  + Y  
    -
    -
    -alist := {x,y,{aa,bb,cc},x**2*sqrt(y)}; 
    -
    -
    -                                        2
    -  			 ALIST := {X,Y,{AA,BB,CC},SQRT(Y)*X } 
    -
    -
    -part(alist,3,2); 
    -
    -  BB 
    -
    -
    -part(alist,4,0); 
    -
    -  TIMES
    -
    -

    Additional integer arguments after the first one examine the -terms recursively, as shown above. In the third line, the fourth term -is picked from the original polynomial, 10x^2y^3, -then the second term from that, x^2, and finally the first -component, x. If an integer's absolute value is too large for -the appropriate expression, a message is given. -

    -

    -partworks on the form of the expression as printed, or as it would -have been printed at that point of the calculation, bearing in mind the -current switch settings. It is important to realize that the switch settings -change the operation of part. -pri must be on when -part is used. -

    -

    -When part is used on a polynomial expression that has minus signs, the - -+ is always returned as the top-level operator. The minus is found -as a unary operator attached to the negative term. -

    -

    -partcan also be used to change the relevant part of the expression or -list as shown in the sixth example line. The part operator returns the - -changed expression, though original expression is not changed. You can -also use part to change the operator. -

    -

    -

    - - - -PF -INDEX

    - - - -PF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -pf(<expression>,<variable>) -

    -

    -

    -pftransforms <expression> into a -list of partial fraction -s -with respect to the main variable, <variable>. pf does a -complete partial fraction decomposition, and as the algorithms used are -fairly unsophisticated (factorization and the extended Euclidean -algorithm), the code may be unacceptably slow in complicated cases. -

    -examples:

    -

    
    -pf(2/((x+1)^2*(x+2)),x); 
    -
    -      2    -2        2
    -  	{-----,-----,------------} 
    -    X + 2 X + 1  2
    -                X  + 2*X + 1
    -
    -
    -off exp; 
    -
    -pf(2/((x+1)^2*(x+2)),x);
    - 
    -
    -     2    - 2     2
    -  {-----,-----,--------} 
    -   X + 2 X + 1        2
    -               (X + 1)
    -
    -
    -for each j in ws sum j; 
    -
    -         2
    -  ----------------
    -                2
    -  ( + 2)*(X + 1)
    -
    -

    -

    -If you want the denominators in factored form, turn -exp off, as -shown in the second example above. As shown in the final example, the - -for each construct can be used to recombine t -he terms. -Alternatively, one can use the operations on lists to extract any desired -term. -

    -

    -

    - - - -PROD -INDEX

    - - - -PROD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator prod returns -the indefinite or definite product of a given expression. -

    -

    -

    -syntax:

    -prod(<expr>,<k>[,<lolim> [,<uplim> ]]) -

    -

    -

    -

    -where <expr> is the expression to be multiplied, <k> is the -control variable (a -kernel), and <lolim> and <uplim> -uplim are the optional lower and upper limits. If <uplim> is -not supplied the upper limit is taken as <k>. The -Gosper algorithm is used. If there is no closed form solution, -the operator returns the input unchanged. -

    -

    -

    -examples:

    -

    
    -prod(k/(k-2),k);
    -
    -  k*( - k + 1)
    -
    -

    - - -REDUCT -INDEX

    - - - -REDUCT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The reduct operator returns the remainder of its expression after the -leading term with respect to the kernel in the second argument is removed. -

    -syntax:

    -

    -

    -reduct(<expression>,<kernel>) -

    -

    -

    -<expression> is ordinarily a polynomial. If -ratarg is on, -a rational expression may also be used, otherwise an error results. -<kernel> must be a -kernel. -

    -

    -

    -examples:

    -

    
    -reduct((x+y)**3,x); 
    -
    -        2            2
    -  Y*(3*X  + 3*X*Y + Y ) 
    -
    -
    -reduct(x + sin(x)**3,sin(x)); 
    -
    -  X 
    -
    -
    -reduct(x + sin(x)**3,y); 
    -
    -  0
    -
    -

    If the expression does not contain the kernel, reduct ret -urns 0. -

    -

    -

    - - - -REPART -INDEX

    - - - -REPART _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -repart(<expression>) or repart <simple\_expression -> -

    -

    -

    -This operator returns the real part of an expression, if that argument has an -numerical value. A non-numerical argument is returned as an expression in -the operators repart and -impart. -

    -examples:

    -

    
    -repart(1+i); 
    -
    -  1 
    -
    -
    -repart(a+i*b); 
    -
    -  REPART(A) - IMPART(B)
    -
    -

    -

    - - - -RESULTANT -INDEX

    - - - -RESULTANT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The resultant operator computes the resultant of two polynomials with -respect to a given variable. If the resultant is 0, the polynomials have -a root in common. -

    -syntax:

    -

    -

    -resultant(<expression>,<expression>,<kernel>) -

    -

    -

    -<expression> must be a polynomial containing <kernel> ; -<kernel> must be a -kernel. -

    -

    -

    -examples:

    -

    
    -resultant(x**2 + 2*x + 1,x+1,x); 
    -
    -  0 
    -
    -
    -resultant(x**2 + 2*x + 1,x-3,x); 
    -
    -  16 
    -
    -
    -resultant(z**3 + z**2 + 5*z + 5,
    -          z**4 - 6*z**3 + 16*z**2 - 30*z + 55,
    -          z);
    - 
    -
    -  0 
    -
    -
    -resultant(x**3*y + 4*x*y + 10,y**2 + 6*y + 4,y); 
    -
    -
    -   6       5        4        3        2
    -  Y  + 18*Y  + 120*Y  + 360*Y  + 480*Y  + 288*Y + 64
    -
    -

    The resultant is the determinant of the Sylvester matrix, formed f -rom the -coefficients of the two polynomials in the following way: -

    -

    -Given two polynomials: -

    -

    -

    
    -    n       n-1 
    - a x  + a1 x     + ... + an
    -
    -

    and -

    -

    -

    
    -    m       m-1 
    - b x  + b1 x     + ... + bm
    -
    -

    form the (m+n)x(m+n-1) Sylvester matrix by the following means: -

    -

    -

    
    -   0.......0 a  a1 .......... an
    -   0....0 a  a1 .......... an  0
    -       .    .   .   .  
    -   a0 a1 .......... an 0.......0
    -   0.......0 b  b1 .......... bm
    -   0....0 b  b1 .......... bm  0
    -       .    .   .   .  
    -   b  b1 .......... bm 0.......0  
    -
    -

    If the determinant of this matrix is 0, the two polynomials have a - common -root. Finding the resultant of large expressions is time-consuming, due -to the time needed to find a large determinant. -

    -

    -The sign conventions resultant uses are those given in the article, -``Computing in Algebraic Extensions,'' by R. Loos, appearing in -<Computer Algebra--Symbolic and Algebraic Computation>, 2nd ed., -edited by B. Buchberger, G.E. Collins and R. Loos, and published by -Springer-Verlag, 1983. -These are: -

    -

    -

    
    -  resultant(p(x),q(x),x) = (-1)^{deg p(x)*deg q(x)} * resultant(q(x),p(x),x),
    -  resultant(a,p(x),x)    = a^{deg p(x)},
    -  resultant(a,b,x)       = 1
    -

    where p(x) and q(x) are polynomials which have x as a variable, an -d -a and b are free of x. -

    -

    -Error messages are given if resultant is given a non-polynomial -expression, or a non-kernel variable. -

    -

    -

    - - - -RHS -INDEX

    - - - -RHS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The rhs operator returns the right-hand side of an -equation, -such as those returned in a -list by -solve. -

    -syntax:

    -

    -

    -rhs(<equation>) or rhs <equation> -

    -

    -

    -<equation> must be an equation of the form left-hand side = right-hand -side. -

    -

    -

    -examples:

    -

    
    -roots := solve(x**2 + 6*x*y + 5x + 3y**2,x); 
    -
    -
    -                              2
    -                     SQRT(24*Y  + 60*Y + 25) + 6*Y + 5
    -      ROOTS := {X= - ---------------------------------,
    -                                     2
    -                             2
    -                    SQRT(24*Y  + 60*Y + 25) - 6*Y - 5
    -                 X= ---------------------------------}
    -                                    2
    -
    -
    -root1 := rhs first roots; 
    -
    -                      2
    -             SQRT(24*Y  + 60*Y + 25) + 6*Y + 5
    -  ROOT1 := - --------------------------------- 
    -                             2
    -
    -
    -root2 := rhs second roots; 
    -
    -                    2
    -           SQRT(24*Y  + 60*Y + 25) - 6*Y - 5
    -  ROOT2 := ----------------------------------
    -                           2
    -
    -

    An error message is given if rhs is applied to something -other than an -equation. -

    -

    -

    - - - -ROOT_OF -INDEX

    - - - -ROOT\_OF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -When the operator -solve is unable to find an explicit solution -or if that solution would be too complicated, the result is presented -as formal root expression using the internal operator root_of -and a new local variable. An expression with a top level root_of -is implicitly a list with an unknown number of elements since we -can't always know how many solutions an equation has. If a -substitution is made into such an expression, closed form solutions -can emerge. If this occurs, the root_of construct is -replaced by an operator -one_of. At this point it is -of course possible to transform the result if the original solve -operator expression into a standard solve solution. To -effect this, the operator -expand_cases can be used. -

    -

    -

    -examples:

    -

    
    -solve(a*x^7-x^2+1,x);
    -
    -                 7     2
    -  {x=root_of(a*x_  - x_  + 1,x_)}
    -
    -
    -sub(a=0,ws);
    -
    -  {x=one_of(1,-1)}
    -
    -
    -expand_cases ws;
    -
    -  x=1,x=-1
    -
    -

    The components of root_of and one_of expressions - can be -processed as usual with operators -arglength and -part. -A higher power of a root_of expression with a polynomial -as first argument is simplified by using the polynomial as a side relation. -

    -

    - - - -SELECT -INDEX

    - - - -SELECT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The select operator extracts from a list -or from the arguments of an n--ary operator elements corresponding -to a boolean predicate. The predicate pattern can be a -unary procedure, an operator or an algebraic expression with -one -free variable. -

    -syntax:

    -

    -

    -select(<function>,<object>) -

    -

    -

    -<object> is a -list. -

    -

    -<function> is -the name of an operator for a single argument: the operator - is evaluated once with each element of <object> as its single argument, -

    -

    -or an algebraic expression with exactly one -free variable, that is -a variable preceded by the tilde symbol: the expression - is evaluated for each element of <object> where the element is - substituted for the free variable, -

    -

    -or a replacement -rule of the form -

    -syntax:

    -

    -

    -var=> rep -

    -

    -

    -where <var> is a variable (a <kernel> without subscript) - and <rep> is an expression which contains <var>. - Here rep is evaluated for each element of <object> where - the element is substituted for var. var may be - optionally preceded by a tilde. -

    -

    -The rule form for <function> is needed when more than -one free variable occurs. The evaluation result of <function> is -interpreted as -boolean value corresponding to the conventions of -REDUCE. The result value is built with the leading operator of the -input expression. -

    -examples:

    -

    
    -  select( ~w>0 , {1,-1,2,-3,3}) 
    -
    -  {1,2,3} 
    -
    -
    -  q:=(part((x+y)^5,0):=list)
    -
    -  select(evenp deg(~w,y),q);
    -
    -    5      3   2       4
    -  {x  ,10*x  *y  ,5*x*y  }
    -
    -
    -  select(evenp deg(~w,x),2x^2+3x^3+4x^4);
    -
    -
    -    2   4
    -  2x +4x
    -
    -

    -

    - - - -SHOWRULES -INDEX

    - - - -SHOWRULES _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -showrules(<expression>) or - showrules <simple\_expression> -

    -

    -

    -showrulesreturns in -rule-list form any - -operator rules associated with its argument. -

    -

    -

    -examples:

    -

    
    -showrules log; 
    -
    -  {LOG(E) => 1,
    -   LOG(1) => 0,
    -        ~X
    -   LOG(E   ) => ~X,
    -                     1
    -   DF(LOG(~X),~X) => --}
    -                     ~X
    -
    -

    Such rules can then be manipulated further as with any -list. For -example -rhs first ws; has the value 1. -

    -

    -An operator may have properties that cannot be displayed in such a form, -such as the fact it is an -odd function, or has a definition defined -as a procedure. -

    -

    -

    - - - -SOLVE -INDEX

    - - - -SOLVE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The solve operator solves a single algebraic -equation or a -system of simultaneous equations. -

    -

    -

    -syntax:

    -solve(<expression> [ , <kernel>]) or -

    -

    -solve({<expression>,...} [ ,{ <kernel> ,...}] ) -

    -

    -

    -

    -If the number of equations equals the number of distinct kernels, the -optional kernel argument(s) may be omitted. <expression> is either a -scalar expression or an -equation. -When more than one expression is given, -the -list of expressions is surrounded by curly braces. -The optional list -of -kernels follows, also in curly braces. -

    -

    -

    -examples:

    -

    
    -sss := solve(x^2 + 7); 
    -
    -  Unknown: X
    -  SSS := {X= - SQRT(7)*I,
    -          X=SQRT(7)*I}
    -
    -
    -rhs first sss; 
    -
    -  - SQRT(7)*I 
    -
    -
    -solve(sin(x^2*y),y); 
    -
    -     2*ARBINT(1)*PI
    -  {Y=---------------
    -            2
    -           X
    -     PI*(2*ARBINT(1) + 1)
    -   Y=--------------------}
    -               2
    -              X
    -
    -
    -off allbranch; 
    -
    -solve(sin(x**2*y),y); 
    -
    -  {Y=0} 
    -
    -
    -solve({3x + 5y = -4,2*x + y = -10},{x,y});
    - 
    -
    -
    -         22   46
    -  {{X= - --,Y=--}} 
    -         7    7
    -
    -
    -solve({x + a*y + z,2x + 5},{x,y});
    - 
    -
    -
    -         5      2*Z - 5
    -  {{X= - -,Y= - -------}} 
    -         2        2*A
    -
    -
    -ab := (x+2)^2*(x^6 + 17x + 1);
    - 
    -
    -         8      7      6       3       2
    -  AB := X  + 4*X  + 4*X  + 17*X  + 69*X  + 72*X + 4 
    -
    -
    -www := solve(ab,x); 
    -
    -  {X=ROOT F(X6 + 17*X + 1),X=-2} 
    -         O            
    -
    -
    -root_multiplicities; 
    -
    -  {1,2}
    -
    -

    Results of the solve operator are returned as -equations -in a -list. -You can use the usual list access methods ( -first, - -second, -third, -rest and -part) to -extract the desired equation, and then use the operators -rhs and - -lhs to access the right-hand or left-hand expression o -f the -equation. When solve is unable to solve an equation, it returns the -unsolved part as the argument of root_of, with the variable renamed -to avoid confusion, as shown in the last example above. -

    -

    -For one equation, solve uses square-free factorization, roots of -unity, and the known inverses of the -log, -sin, - -cos, -acos, -asin, and -exponentiation operators. The quadratic, cubic and quartic formulas are -used if necessary, but these are applied only when the switch - -fullroots is set on; otherwise or when no closed form -is available -the result is returned as - -root_of expression. The switch -trigform -determines which type of cubic and quartic formula is used. -The multiplicity of each solution is given in a list as -the system variable -root_multiplicities. For systems of -simultaneous linear equations, matrix inversion is used. For nonlinear -systems, the Groebner basis method is used. -

    -

    -Linear equation system solving is influenced by the switch -cramer. -

    -

    -Singular systems can be solved when the switch -solvesingular is -on, which is the default setting. An empty list is returned the system of -equations is inconsistent. For a linear inconsistent system with parameters -the variable -requirements constraints -conditions for the system to become consistent. -

    -

    -For a solvable linear and polynomial system with parameters -the variable -assumptions -contains a list side relations for the parameters: the solution is -valid only as long as none of these expressions is zero. -

    -

    -If the switch -varopt is on (default), the system rearranges the -variable sequence for minimal computation time. Without varopt -the user supplied variable sequence is maintained. -

    -

    -If the solution has free variables (dimension of the solution is greater -than zero), these are represented by -arbcomplex expressions -as long as the switch -arbvars is on (default). Without -arbvars no explicit equations are generated for free variables. -

    -

    -

    -

    -related:

    -

    - _ _ _ -allbranchswitch -

    - _ _ _ -arbvars switch -

    - _ _ _ -assumptions variable -

    - _ _ _ -fullroots switch -

    - _ _ _ -requirements variable -

    - _ _ _ -roots operator -

    - _ _ _ -root_of operator -

    - _ _ _ -trigform switch -

    - _ _ _ -varopt switch -

    -

    -

    - - - -SORT -INDEX

    - - - -SORT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sort operator sorts the elements of a list according to -an arbitrary comparison operator. -

    -syntax:

    -

    -

    -sort(<lst>,<comp>) -

    -

    -

    -<lst> is a -list of algebraic expressions. -<comp> is a comparison operator which defines a partial -ordering among the members of <lst>. <comp> may be -one of the builtin comparison operators like -<( -lessp), <=( -leq) -etc., or <comp> may be the name of a comparison procedure. -Such a procedure has two arguments, and it returns - -true if the first argument -ranges before the second one, and 0 or -nil otherwise. -The result of sort is a new list which contains the -elements of <lst> in a sequence corresponding to <comp>. -

    -examples:

    -

    
    - procedure ce(a,b);
    -
    -   if evenp a and not evenp b then 1 else 0;
    -
    -for i:=1:10 collect random(50)$
    -
    -sort(ws,>=); 
    -
    -  {41,38,33,30,28,25,20,17,8,5}
    -
    -
    -sort(ws,<); 
    -
    -  {5,8,17,20,25,28,30,33,38,41}
    -
    -
    -sort(ws,ce); 
    -
    -  {8,20,28,30,38,5,17,25,33,41}
    -
    -
    -  procedure cd(a,b);
    -
    -  if deg(a,x)>deg(b,x) then 1 else
    -
    -  if deg(a,x)<deg(b,x) then 0 else
    -
    -  if deg(a,y)>deg(b,y) then 1 else 0;
    -
    -sort({x^2,y^2,x*y},cd);
    -
    -    2      2
    -  {x ,x*y,y }
    -
    -

    -

    - - - -STRUCTR -INDEX

    - - - -STRUCTR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The structr operator breaks its argument expression into named -subexpressions. -

    -

    -

    -syntax:

    -structr(<expression> [,<identifier>[,<identifier> ... -]]) -

    -

    -

    -<expression> may be any valid REDUCE scalar expression. -<identifier> may be any valid REDUCE identifier. The first -identifier -is the stem for subexpression names, the second is the name to be assigned -to the structured expression. -

    -

    -

    -examples:

    -

    
    -structr(sqrt(x**2 + 2*x) + sin(x**2*z)); 
    -
    -
    -  ANS1 + ANS2
    -      where
    -                       2
    -          ANS2 := SIN(X *Z)
    -                             1/2
    -          ANS1 := ((X + 2)*X)
    -
    -
    -ans3; 
    -
    -  ANS3 
    -
    -
    -on fort; 
    -
    -structr((x+1)**5 + tan(x*y*z),var,aa); 
    -
    -
    -  VAR1=TAN(X*Y*Z)
    -  AA=VAR1+X**5+5.*X**4+10.*X**3+10.X**2+5.*X+1
    -
    -

    The second argument to structr is optional. If it is not -given, the -default stem ANS is used by REDUCE to construct names for the -subexpression. The names are only for display purposes: REDUCE does not -store the names and their values unless the switch -savestructr is -on. -

    -

    -If a third argument is given, the structured expression as a whole is named by -this argument, when -fort is on. The expression is not stored -under this -name. You can send these structured Fortran expressions to a file with the -out command. -

    -

    -

    - - - -SUB -INDEX

    - - - -SUB _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sub operator substitutes a new expression for a kernel in an -expression. -

    -syntax:

    -

    -

    -sub(<kernel>=<expression> - {,<kernel>=<expression>}*, - <expression>) or -

    -

    -sub({<kernel>=<expression>*, - <kernel>=expression},<expression>) -

    -

    -

    -<kernel> must be a -kernel, <expression> can be any REDUCE -scalar expression. -

    -

    -

    -examples:

    -

    
    -sub(x=3,y=4,(x+y)**3); 
    -
    -  343 
    -
    -
    -x; 
    -
    -  X 
    -
    -
    -sub({cos=sin,sin=cos},cos a+sin b) 
    -
    -
    -  COS(B) + SIN(A)
    -
    -

    Note in the second example that operators can be replaced using th -e -sub operator. -

    -

    -

    - - - -SUM -INDEX

    - - - -SUM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator sum returns -the indefinite or definite summation of a given expression. -

    -

    -

    -syntax:

    -sum(<expr>,<k>[,<lolim> [,<uplim> ]]) -

    -

    -

    -

    -where <expr> is the expression to be added, <k> is the -control variable (a -kernel), and <lolim> and <uplim> -are the optional lower and upper limits. If <uplim> is -not supplied the upper limit is taken as <k>. The Gosper -algorithm is used. If there is no closed form solution, the operator -returns the input unchanged. -

    -

    -

    -examples:

    -

    
    -sum(4n**3,n); 
    -
    -   2    2
    -  n  *(n   + 2*n + 1)
    -
    -
    -sum(2a+2k*r,k,0,n-1);
    -
    -  n*(2*a + n*r - r)
    -
    -

    - - -WS -INDEX

    - - - -WS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The ws operator alone returns the last result; ws with a -number argument returns the results of the REDUCE statement executed after -that numbered prompt. -

    -syntax:

    -

    -

    -wsor ws(<number>) -

    -

    -

    -<number> must be an integer between 1 and the current REDUCE prompt number -. -

    -

    -

    -examples:

    -

    (In the following examples, unlike most others, the nu -mbered -prompt is shown.)

     
    -
    -1: df(sin y,y); 
    -
    -  COS(Y) 
    -
    -
    -2: ws^2; 
    -
    -        2
    -  COS(Y)  
    -
    -
    -3: df(ws 1,y); 
    -
    -  -SIN(Y)
    -
    -

    -

    -

    -wsand ws(<number>) can be used anywher -e the -expression they stand for can be used. Calling a number for which no -result was produced, such as a switch setting, will give an error message. -

    -

    -The current workspace always contains the results of the last REDUCE -command that produced an expression, even if several input statements -that do not produce expressions have intervened. For example, if you do -a differentiation, producing a result expression, then change several -switches, the operator ws; returns the results of the differentiation. - -The current workspace (ws) can also be used inside files, though the -numbered workspace contains only the in command that input the file. -

    -

    -There are three history lists kept in your REDUCE session. The first -stores raw input, suitable for the statement editor. The second stores -parsed input, ready to execute and accessible by -input. The -third stores results, when they are produced by statements, which are -accessible by the ws< n> operator. If your session is very -long, storage space begins to fill up with these expressions, so it is a -good idea to end the session once in a while, saving needed expressions to -files with the -saveas and -out commands. -

    -

    -An error message is given if a reference number has not yet been used. -

    -

    -

    - - - -Algebraic Operators -INDEX

    -Algebraic Operators

    -
  • APPEND operator

    -

  • ARBINT operator

    -

  • ARBCOMPLEX operator

    -

  • ARGLENGTH operator

    -

  • COEFF operator

    -

  • COEFFN operator

    -

  • CONJ operator

    -

  • CONTINUED_FRACTION operator

    -

  • DECOMPOSE operator

    -

  • DEG operator

    -

  • DEN operator

    -

  • DF operator

    -

  • EXPAND\_CASES operator

    -

  • EXPREAD operator

    -

  • FACTORIZE operator

    -

  • HYPOT operator

    -

  • IMPART operator

    -

  • INT operator

    -

  • INTERPOL operator

    -

  • LCOF operator

    -

  • LENGTH operator

    -

  • LHS operator

    -

  • LIMIT operator

    -

  • LPOWER operator

    -

  • LTERM operator

    -

  • MAINVAR operator

    -

  • MAP operator

    -

  • MKID command

    -

  • NPRIMITIVE operator

    -

  • NUM operator

    -

  • ODESOLVE operator

    -

  • ONE\_OF type

    -

  • PART operator

    -

  • PF operator

    -

  • PROD operator

    -

  • REDUCT operator

    -

  • REPART operator

    -

  • RESULTANT operator

    -

  • RHS operator

    -

  • ROOT\_OF operator

    -

  • SELECT operator

    -

  • SHOWRULES operator

    -

  • SOLVE operator

    -

  • SORT operator

    -

  • STRUCTR operator

    -

  • SUB operator

    -

  • SUM operator

    -

  • WS operator

    -

  • - - -ALGEBRAIC -INDEX

    - - - -ALGEBRAIC _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The algebraic command changes REDUCE's mode of operation to -algebraic. When algebraic is used as an operator (with an -argument inside parentheses) that argument is evaluated in algebraic -mode, but REDUCE's mode is not changed. -

    -

    -

    -examples:

    -

    
    -algebraic; 
    -
    -symbolic; 
    -
    -  NIL 
    -
    -
    -algebraic(x**2); 
    -
    -   2
    -  X  
    -
    -
    -x**2; 
    -
    -    ***** The symbol X has no value.
    -
    -

    REDUCE's symbolic mode does not know about most algebraic commands -. -Error messages in this mode may also depend on the particular Lisp -used for the REDUCE implementation. -

    -

    -

    - - - -ANTISYMMETRIC -INDEX

    - - - -ANTISYMMETRIC _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -When an operator is declared antisymmetric, its arguments are -reordered to conform to the internal ordering of the system. If an odd -number of argument interchanges are required to do this ordering, -the sign of the expression is changed. -

    -

    -

    -syntax:

    -antisymmetric<identifier>{,<identifier>}* -

    -

    -

    -<identifier> is an identifier that has been declared as an operator. -

    -

    -

    -examples:

    -

    
    -operator m,n; 
    -
    -antisymmetric m,n; 
    -
    -m(x,n(1,2)); 
    -
    -  - M( - N(2,1),X) 
    -
    -
    -operator p; 
    -
    -antisymmetric p; 
    -
    -p(a,b,c); 
    -
    -  P(A,B,C) 
    -
    -
    -p(b,a,c); 
    -
    -  - P(A,B,C)
    -
    -

    If <identifier> has not been declared an operator, the flag - -antisymmetric is still attached to it. When <identifier> is -subsequently used as an operator, the message Declare <identifier -> - operator? (Y or N) is printed. If the user replies y, the -antisymmetric property of the operator is used. -

    -

    -Note in the first example, identifiers are customarily ordered -alphabetically, while numbers are ordered from largest to smallest. -The operators may have any desired number of arguments (less than 128). -

    -

    -

    - - - -ARRAY -INDEX

    - - - -ARRAY _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The array declaration declares a list of identifiers to be of type -array, and sets all their entries to 0. -

    -syntax:

    -

    -

    -array<identifier>(<dimensions>) - {,<identifier>(<dimensions>)}* -

    -

    -

    -<identifier> may be any valid REDUCE identifier. If the identifier -was already an array, a warning message is given that the array has been -redefined. <dimensions> are of form - <integer>{,<integer>}*. -

    -

    -

    -examples:

    -

    
    -array a(2,5),b(3,3,3),c(200); 
    -
    -array a(3,5); 
    -
    -  *** ARRAY A REDEFINED 
    -
    -
    -a(3,4); 
    -
    -  0 
    -
    -
    -length a; 
    -
    -  {4,6}
    -
    -

    Arrays are always global, even if defined inside a procedure or bl -ock -statement. Their status as an array remains until the variable is -reset by -clear. Arrays may not have the same names as operators -, -procedures or scalar variables. -

    -

    -Array elements are referred to by the usual notation: a(i,j) -returns the jth element of the ith row. The -assignment operator -:= is used to put values into the array. Arrays as a whole -cannot be subject to assignment by -let or := ; the -assignment operator := is only valid for individual elements. -

    -

    -When you use -let on an array element, the contents of that -element become the argument to let. Thus, if the element -contains a number or some other expression that is not a valid argument -for this command, you get an error message. If the element contains an -identifier, the identifier has the substitution rule attached to it -globally. The same behavior occurs with -clear. If the array -element contains an identifier or simple_expression, it is cleared. Do -<not> use clear to try to set an array element to 0. Because -of the side effects of either let or clear, it is unwise -to apply either of these to array elements. -

    -

    -Array indices always start with 0, so that the declaration array a(5) -sets aside 6 units of space, indexed from 0 through 5, and initializes -them to 0. The -length command returns a list of the true number of -elements in each dimension. -

    -

    -

    - - - -CLEAR -INDEX

    - - - -CLEAR _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The clear command is used to remove assignments or remove substitution - -rules from any expression. -

    -

    -

    -syntax:

    -clear<identifier>{,<identifier>}+ or -

    -

    -<let-type statement> clear <identifier> -

    -

    -

    -<identifier> can be any scalar, -matrix, -or -array variable or - -procedure name. <let-type statement> can be any -general -or specific -let statement (see below in Comments). -

    -

    -

    -examples:

    -

    
    -array a(2,3); 
    -
    -a(2,2) := 15; 
    -
    -  A(2,2) := 15 
    -
    -
    -clear a; 
    -
    -a(2,2); 
    -
    -  Declare A operator? (Y or N) 
    -
    -
    -let x = y + z; 
    -
    -sin(x); 
    -
    -  SIN(Y + Z) 
    -
    -
    -clear x; 
    -
    -sin(x); 
    -
    -  SIN(X) 
    -
    -
    -let x**5 = 7; 
    -
    -clear x; 
    -
    -x**5; 
    -
    -  7 
    -
    -
    -clear x**5; 
    -
    -x**5; 
    -
    -   5
    -  X
    -
    -

    Although it is not a good idea, operators of the same name but tak -ing -different numbers of arguments can be defined. Using a clear statement - -on any of these operators clears every one with the same name, even if the -number of arguments is different. -

    -

    -The clear command is used to ``forget" matrices, arrays, operators - -and scalar variables, returning their identifiers to the pristine state -to be used for other purposes. When clear is applied to array -elements, the contents of the array element becomes the argument for -clear. Thus, you get an error message if the element contains a -number, or some other expression that is not a legal argument to -clear. If the element contains an identifier, it is cleared. -When clear is applied to matrix elements, an error message is returned -if the element evaluates to a number, otherwise there is no effect. Do - not try to use clear to set array or matrix elements to 0. -You will not be pleased with the results. -

    -

    -If you are trying to clear power or product substitution rules made with -either -let or -forall...let, you must -reproduce the rule, exactly as you typed it with the same arguments, up to -but not including the equal sign, using the word clear instead of -the word let. This is shown in the last example. Any other type of -let or forall...let substitution can be cleared -with just the variable or operator name. -match behaves the same as - -let in this situation. There is a more complicated exa -mple under - -forall. -

    -

    -

    -

    - - - -CLEARRULES -INDEX

    - - - -CLEARRULES _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -

    -syntax:

    -clearrules<list>{,<list>}+ -

    -

    -

    -The operator clearrules is used to remove previously defined - -rule lists from the system. <list> can be an exp -licit rule -list, or evaluate to a rule list. -

    -

    -

    -examples:

    -

    
    -trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2,
    -          cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2,
    -          sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2,
    -          cos(~x)^2       => (1+cos(2*x))/2,
    -          sin(~x)^2       => (1-cos(2*x))/2}$ 
    -
    -let trig1;
    -cos(a)*cos(b); 
    -
    -  COS(A - B) + COS(A + B)
    -  ----------------------- 
    -             2
    -
    -
    -clearrules trig1;
    -cos(a)*cos(b); 
    -
    -  COS(A)*COS(B)
    -
    -

    - - -DEFINE -INDEX

    - - - -DEFINE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The command define allows you to supply a new name for an identifier -or replace it by any valid REDUCE expression. -

    -

    -

    -syntax:

    -define<identifier>=<substitution> - {,<identifier>=<substitution>}* -

    -

    -

    -<identifier> is any valid REDUCE identifier, <substitution> can be a - -number, an identifier, an operator, a reserved word, or an expression. -

    -

    -

    -examples:

    -

    
    -
    -define is= :=, xx=y+z; 
    -
    -
    -a is 10; 
    -
    -  A := 10 
    -
    -
    -
    -xx**2; 
    -
    -   2             2
    -  Y   + 2*Y*Z + Z  
    -
    -
    -
    -xx := 10; 
    -
    -  Y + Z := 10
    -
    -

    The renaming is done at the input level, and therefore takes prece -dence -over any other replacement or substitution declared for the same identifier. -It remains in effect until the end of the REDUCE session. Be careful with -it, since you cannot easily undo it without ending the session. -

    -

    -

    - - - -DEPEND -INDEX

    - - - -DEPEND _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -dependdeclares that its first argument depends on the rest of its -arguments. -

    -

    -

    -syntax:

    -depend<kernel>{,<kernel>}+ -

    -

    -

    -<kernel> must be a legal variable name or a prefix operator (see - -kernel). -

    -

    -

    -examples:

    -

    
    -
    -depend y,x; 
    -
    -
    -df(y**2,x); 
    -
    -  2*DF(Y,X)*Y 
    -
    -
    -
    -depend z,cos(x),y; 
    -
    -
    -df(sin(z),cos(x)); 
    -
    -  COS(Z)*DF(Z,COS(X)) 
    -
    -
    -
    -df(z**2,x); 
    -
    -  2*DF(Z,X)*Z 
    -
    -
    -
    -nodepend z,y; 
    -
    -
    -df(z**2,x); 
    -
    -  2*DF(Z,X)*Z 
    -
    -
    -
    -cc := df(y**2,x); 
    -
    -  CC := 2*DF(Y,X)*Y 
    -
    -
    -
    -y := tan x; 
    -
    -  Y := TAN(X); 
    -
    -
    -
    -cc; 
    -
    -                  2
    -  2*TAN(X)*(TAN(X)   + 1)
    -
    -

    Dependencies can be removed by using the declaration -nodepend. -The differentiation operator uses this information, as shown in the -examples above. Linear operators also use knowledge of dependencies -(see -linear). Note that dependencies can be nested: Having - -declared y to depend on x, and z -to depend on y, we -see that the chain rule was applied to the derivative of a function of -z with respect to x. If the explicit function of the -dependency is later entered into the system, terms with DF(Y,X), -for example, are expanded when they are displayed again, as shown in the -last example. The boolean operator -freeof allows you to -check the dependency between two algebraic objects. -

    -

    -

    - - - -EVEN -INDEX

    - - - -EVEN _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -syntax:

    -

    -

    -even<identifier>{,<identifier>}* -

    -

    -

    -This declaration is used to declare an operator even in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. -

    -examples:

    -

    
    -        even f; 
    -
    -        f(-a) 
    -
    -  F(A) 
    -
    -
    -        f(-a,-b) 
    -
    -  F(A,-B)
    -
    -

    -

    - - - -FACTOR_declaration -INDEX

    - - - -FACTOR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -When a kernel is declared by factor, all terms involving fixed -powers of that kernel are printed as a product of the fixed powers and -the rest of the terms. -

    -syntax:

    -

    -

    -factor<kernel> {,<kernel>}* -

    -

    -

    -<kernel> must be a -kernel or a -list of -kernels. -

    -

    -

    -examples:

    -

    
    -a := (x + y + z)**2; 
    -
    -        2                    2            2
    -  A := X  + 2*X*Y + 2*X*Z + Y  + 2*Y*Z + Z  
    -
    -
    -factor y; 
    -
    -a; 
    -
    -   2                  2            2
    -  Y  + 2*Y*(X + Z) + X  + 2*X*Z + Z  
    -
    -
    -factor sin(x); 
    -
    -c := df(sin(x)**4*x**2*z,x); 
    -
    -               4               3         2
    -  C := 2*SIN(X) *X*Z + 4*SIN(X) *COS(X)*X *Z 
    -
    -
    -remfac sin(x); 
    -
    -c; 
    -
    -          3
    -  2*SIN(X) *X*Z*(2*COS(X)*X + SIN(X))
    -
    -

    Use the factor declaration to display variables of intere -st so that -you can see their powers more clearly, as shown in the example. Remove -this special treatment with the declaration -remfac. The -factor declaration is only effective when the switch -pri -is on. -

    -

    -The factor declaration is not a factoring command; to factor -expressions use the -factor switch or the -factorize command. -

    -

    -The factor declaration is helpful in such cases as Taylor polynomials -where the explicit powers of the variable are expected at the top level, not -buried in various factored forms. -

    -

    -Note that factor does not affect the order of its arguments. You -should also use -order if this is important. -

    -

    -

    - - - -FORALL -INDEX

    - - - -FORALL _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The forall or (preferably) for all command is used as a -modifier for -let statements, indicating the universal applicability - -of the rule, with possible qualifications. -

    -syntax:

    -

    -

    -for all<identifier>{,<identifier>}* let -<let statement> -

    -

    -or -

    -

    -for all<identifier>{,<identifier>}* - such that <condition> let <let statement> -

    -

    -

    -<identifier> may be any valid REDUCE identifier, <let statement> -can be an operator, a product or power, or a group or block statement. -<condition> must be a logical or comparison operator returning true or -false. -

    -

    -

    -examples:

    -

    
    -for all x let f(x) = sin(x**2);
    - 
    -
    -  Declare F operator ? (Y or N) 
    -
    -
    -y 
    -
    -f(a); 
    -
    -       2
    -  SIN(A ) 
    -
    -
    -operator pos; 
    -
    -for all x such that x>=0 let pos(x) = sqrt(x + 1); 
    -
    -pos(5); 
    -
    -  SQRT(6) 
    -
    -
    -pos(-5); 
    -
    -  POS(-5) 
    -
    -
    -clear pos; 
    -
    -pos(5); 
    -
    -  Declare POS operator ? (Y or N) 
    -
    -
    -for all a such that numberp a let x**a = 1; 
    -
    -x**4; 
    -
    -  1 
    -
    -
    -clear x**a; 
    -
    -  *** X**A not found 
    -
    -
    -for all a  clear x**a; 
    -
    -x**4; 
    -
    -  1 
    -
    -
    -for all a such that numberp a clear x**a; 
    -
    -x**4; 
    -
    -   4
    -  X
    -
    -

    Substitution rules defined by for all or for -all...such that commands that involve products or powers are -cleared by reproducing the command, with exactly the same variable names -used, up to but not including the equal sign, with -clear -replacing let, as shown in the last example. Other substitutions -involving variables or operator names can be cleared with just the name, -like any other variable. -

    -

    -The -match command can also be used in product and power su -bstitutions. -The syntax of its use and clearing is exactly like let. A match - -substitution only replaces the term if it is exactly like the pattern, for -example match x**5 = 1 replaces only terms of x**5 and not -terms of higher powers. -

    -

    -It is easier to declare your potential operator before defining the -for all rule, since the system will ask you to declare it an -operator anyway. Names of declared arrays or matrices or scalar -variables are invalid as operator names, to avoid ambiguity. Either -for all...let statements or procedures are often used to defin -e -operators. One difference is that procedures implement ``call by value" -meaning that assignments involving their formal parameters do not change -the calling variables that replace them. If you use assignment statements -on the formal parameters in a for all...let statement, the -effects are seen in the calling variables. Be careful not to redefine a -system operator unless you mean it: the statement for all x let -sin(x)=0; has exactly that effect, and the usual definition for sin(x) has - -been lost for the remainder of the REDUCE session.

    -

    - -

    -

    - - - -INFIX -INDEX

    - - - -INFIX _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -infixdeclares identifiers to be infix operators. -

    -syntax:

    -

    -

    -infix<identifier>{,<identifier>}* -

    -

    -

    -<identifier> can be any valid REDUCE identifier, which has not already -been declared an operator, array or matrix, and is not reserved by the -system. -

    -

    -

    -examples:

    -

    
    -infix aa; 
    -
    -for all x,y let aa(x,y) = cos(x)*cos(y) - sin(x)*sin(y); 
    -
    -x aa y; 
    -
    -  COS(X)*COS(Y) - SIN(X)*SIN(Y) 
    -
    -
    -pi/3 aa pi/2; 
    -
    -    SQRT(3)
    -  - ------- 
    -       2
    -
    -
    -aa(pi,pi); 
    -
    -  1
    -
    -

    A -let statement must be used to attach functionality to - -the operator. Note that the operator is defined in prefix form in -the let statement. -After its definition, the operator may be used in either prefix or infix -mode. The above operator aa finds the cosine of the sum -of two angles by the formula -

    -

    -cos(x+y) = cos(x)*cos(y) - sin(x)*sin(y). -

    -

    -Precedence may be attached to infix operators with the - -precedence declaration. -

    -

    -User-defined infix operators may be used in prefix form. If they are used -in infix form, a space must be left on each side of the operator to avoid -ambiguity. Infix operators are always binary. -

    -

    -

    - - - -INTEGER -INDEX

    - - - -INTEGER _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The integer declaration must be made immediately after a - -begin (or other variable declaration such as -real -and -scalar) and declares local integer variables. They are - -initialized to 0. -

    -syntax:

    -

    -

    -integer<identifier>{,<identifier>}* -

    -

    -

    -<identifier> may be any valid REDUCE identifier, except -t or nil. -

    -

    -Integer variables remain local, and do not share values with variables of -the same name outside the -begin...end block. When the -block is finished, the variables are removed. You may use the words - -real or -scalar in the place of integer. -integer does not indicate typechecking by the -current REDUCE; it is only for your own information. Declaration -statements must immediately follow the begin, without a semicolon -between begin and the first variable declaration. -

    -

    -Any variables used inside begin...end blocks that were not -declared scalar, real or integer are global, and any - -change made to them inside the block affects their global value. Any - -array or -matrix declared inside a block is always global. -

    -

    -

    - - - -KORDER -INDEX

    - - - -KORDER _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The korder declaration changes the internal canonical ordering of -kernels. -

    -syntax:

    -

    -

    -korder<kernel>{,<kernel>}* -

    -

    -

    -<kernel> must be a REDUCE -kernel or a -list of -kernels. -

    -

    -The declaration korder changes the internal ordering, but not the print - -ordering, so the effects cannot be seen on output. However, in some -calculations, the order of the variables can have significant effects on the -time and space demands of a calculation. If you are doing a demanding -calculation with several kernels, you can experiment with changing the -canonical ordering to improve behavior. -

    -

    -The first kernel in the argument list is given the highest priority, the -second gets the next highest, and so on. Kernels not named in a -korder ordering otherwise. A new korder declaration replaces -the previous one. To return to canonical ordering, use the command -korder nil. -

    -

    -To change the print ordering, use the declaration -order. -

    -

    -

    - - - -LET -INDEX

    - - - -LET _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The let command defines general or specific substitution rules. -

    -syntax:

    -

    -

    -let<identifier> = <expression>{,<identifier> - -= <expression>}* -

    -

    -

    -<identifier> can be any valid REDUCE identifier except an array, and in -some cases can be an expression; <expression> can be any valid REDUCE -expression. -

    -

    -

    -examples:

    -

    
    -let a = sin(x); 
    -
    -b := a; 
    -
    -  B := SIN X; 
    -
    -
    -let c = a; 
    -
    -exp(a); 
    -
    -   SIN(X)
    -  E       
    -
    -
    -a := x**2; 
    -
    -        2
    -  A := X  
    -
    -
    -exp(a); 
    -
    -    2
    -   X
    -  E   
    -
    -
    -exp(b); 
    -
    -   SIN(X)
    -  E       
    -
    -
    -exp(c); 
    -
    -    2
    -   X
    -  E   
    -
    -
    -let m + n = p; 
    -
    -(m + n)**5; 
    -
    -   5
    -  P  
    -
    -
    -operator h; 
    -
    -let h(u,v) = u - v; 
    -
    -h(u,v); 
    -
    -  U - V 
    -
    -
    -h(x,y); 
    -
    -  H(X,Y) 
    -
    -
    -array q(10); 
    -
    -let q(1) = 15; 
    -
    -  ***** Substitution for 0 not allowed
    -
    -

    The let command is also used to activate a rule sets -. -

    -syntax:

    -

    -

    -let<list>{,<list>}+ -

    -

    -

    -<list> can be an explicit -rule list, or evaluate -to a rule list. -

    -

    -

    -examples:

    -

    
    -trig1 := {cos(~x)*cos(~y) => (cos(x+y)+cos(x-y))/2,
    -          cos(~x)*sin(~y) => (sin(x+y)-sin(x-y))/2,
    -          sin(~x)*sin(~y) => (cos(x-y)-cos(x+y))/2,
    -          cos(~x)^2       => (1+cos(2*x))/2,
    -          sin(~x)^2       => (1-cos(2*x))/2}$ 
    -
    -let trig1;
    -cos(a)*cos(b); 
    -
    -  COS(A - B) + COS(A + B)
    -  ------------------------
    -             2
    -
    -

    A let command returns no value, though the substitution r -ule is -entered. Assignment rules made by -assign and let -rules are at the -same level, and cancel each other. There is a difference in their -operation, however, as shown in the first example: a let assignment -tracks the changes in what it is assigned to, while a := assignment -is fixed at the value it originally had. -

    -

    -The use of expressions as left-hand sides of let statements is a -little complicated. The rules of operation are: -

    -

    - _ _ _ (i) -Expressions of the form A*B = C do not change A, B or C, but set A*B to C. -

    -

    - _ _ _ (ii) -Expressions of the form A+B = C substitute C - B for A, but do not change -B or C. -

    -

    - _ _ _ (iii) -Expressions of the form A-B = C substitute B + C for A, but do not change -B or C. -

    -

    - _ _ _ (iv) -Expressions of the form A/B = C substitute B*C for A, but do not change B or -C. -

    -

    - _ _ _ (v) -Expressions of the form A**N = C substitute C for A**N in every expression of -a power of A to N or greater. An asymptotic command such as A**N = 0 sets -all terms involving A to powers greater than or equal to N to 0. Finite -fields may be generated by requiring modular arithmetic (the -modular -switch) and defining the primitive polynomial via a let statement. -

    -

    -

    -letsubstitutions involving expressions are cleared by using -the -clear command with exactly the same expression. -

    -

    -Note when a simple let statement is used to assign functionality to an - -operator, it is valid only for the exact identifiers used. For the use of the -let command to attach more general functionality to an operator, -see -forall. -

    -

    -Arrays as a whole cannot be arguments to let statements, but -matrices as a whole can be legal arguments, provided both arguments are -matrices. However, it is important to note that the two matrices are then -linked. Any change to an element of one matrix changes the corresponding -value in the other. Unless you want this behavior, you should not use -let for matrices. The assignment operator -assign can be used -for non-tracking assignments, avoiding the side effects. Matrices are -redimensioned as needed in let statements. -

    -

    -When array or matrix elements are used as the left-hand side of let -statements, the contents of that element is used as the argument. When the -contents is a number or some other expression that is not a valid left-hand -side for let, you get an error message. If the contents is an -identifier or simple expression, the let rule is globally attached -to that identifier, and is in effect not only inside the array or matrix, -but everywhere. Because of such unwanted side effects, you should not -use let with array or matrix elements. The assignment operator -:= can be used to put values into array or matrix elements without -the side effects. -

    -

    -Local variables declared inside begin...end blocks cannot -be used as the left-hand side of let statements. However, - -begin...end blocks themselves can be used as -the -right-hand side of let statements. The construction: -

    -syntax:

    -

    -

    -for all<vars> - let<operator>(<vars>)=<block> -

    -

    -

    -is an alternative to the -

    -syntax:

    -

    -

    -procedure<name>(<vars>);<block> -

    -

    -

    -construction. One important difference between the two constructions is that -the <vars> as formal parameters to a procedure have their global values -protected against change by the procedure, while the <vars> of a -let statement are changed globally by its actions. -

    -

    -Be careful in using a construction such as let x = x + 1 except inside - -a controlled loop statement. The process of resubstitution continues until -a stack overflow message is given. -

    -

    -The let statement may be used to make global changes to variables from - -inside procedures. If x is a formal parameter to a procedure, the -command let x = ... makes the change to the calling variable. -For example, if a procedure was defined by -

    
    -        procedure f(x,y);
    -        let x = 15;
    -

    -

    -and the procedure was called as -

    
    -        f(a,b);
    -

    -

    -awould have its value changed to 15. Be careful when using let - -statements inside procedures to avoid unwanted side effects. -

    -

    -It is also important to be careful when replacing let statements with -other let statements. The overlapping of these substitutions can be -unpredictable. Ordinarily the latest-entered rule is the first to be applied. -Sometimes the previous rule is superseded completely; other times it stays -around as a special case. The order of entering a set of related let -expressions is very important to their eventual behavior. The best -approach is to assume that the rules will be applied in an arbitrary order. -

    -

    -

    - - - -LINEAR -INDEX

    - - - -LINEAR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -An operator can be declared linear in its first argument over powers of -its second argument by the declaration linear. -

    -syntax:

    -

    -

    -linear<operator>{,<operator>}* -

    -

    -

    -<operator> must have been declared to be an operator. Be careful not -to use a system operator name, because this command may change its definition. -The operator being declared must have at least two arguments, and the -second one must be a -kernel. -

    -

    -

    -examples:

    -

    
    -operator f; 
    -
    -linear f; 
    -
    -f(0,x); 
    -
    -  0 
    -
    -
    -f(-y,x); 
    -
    -  - F(1,X)*Y 
    -
    -
    -f(y+z,x); 
    -
    -  F(1,X)*(Y + Z) 
    -
    -
    -f(y*z,x); 
    -
    -  F(1,X)*Y*Z 
    -
    -
    -depend z,x; 
    -
    -f(y*z,x); 
    -
    -  F(Z,X)*Y 
    -
    -
    -f(y/z,x); 
    -
    -    1
    -  F(-,X)*Y 
    -    Z
    -
    -
    -depend y,x; 
    -
    -f(y/z,x); 
    -
    -    Y
    -  F(-,X) 
    -    Z
    -
    -
    -nodepend z,x; 
    -
    -f(y/z,x); 
    -
    -  F(Y,X)
    -  ------ 
    -    Z
    -
    -
    -f(2*e**sin(x),x); 
    -
    -       SIN(X)
    -  2*F(E      ,X)
    -
    -

    Even when the operator has not had its functionality attached, it -exhibits -linear properties as shown in the examples. Notice the difference when -dependencies are added. Dependencies are also in effect when the operator's -first argument contains its second, as in the last line above. -

    -

    -For a fully-developed example of the use of linear operators, refer to the -article in the <Journal of Computational Physics>, Vol. 14 (1974), pp. -301-317, ``Analytic Computation of Some Integrals in Fourth Order Quantum -Electrodynamics," by J.A. Fox and A.C. Hearn. The article includes the -complete listing of REDUCE procedures used for this work. -

    -

    -

    - - - -LINELENGTH -INDEX

    - - - -LINELENGTH _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The linelength declaration sets the length of the output line. Default - -is 80. -

    -syntax:

    -

    -

    -linelength<expression> -

    -

    -

    -To change the linelength, -<expression> must evaluate to a positive integer less than 128 -(although this varies from system to system), and should not be less than -20 or so for proper operation. -

    -

    -linelengthreturns the previous linelength. If you want the current -linelength value, but not change it, say linelength nil. -

    -

    -

    - - - -LISP -INDEX

    - - - -LISP _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The lisp command changes REDUCE's mode of operation to symbolic. When -lisp is followed by an expression, that expression is evaluated in -symbolic mode, but REDUCE's mode is not changed. This command is -equivalent to -symbolic. -

    -

    -

    -examples:

    -

    
    -lisp; 
    -
    -  NIL 
    -
    -
    -car '(a b c d e); 
    -
    -  A  
    -
    -
    -algebraic; 
    -
    -c := (lisp car '(first second))**2; 
    -
    - 
    -
    -            2
    -  C := FIRST
    -
    -

    - - -LISTARGP -INDEX

    - - - -LISTARGP _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -

    -syntax:

    -listargp<operator>{,<operator>}* -

    -

    -

    -If an operator other than those specifically defined for lists is given a -single argument that is a -list, then the result of this -operation will be a list in which that operator is applied to each element -of the list. -This process can be inhibited for a specific operator, or list of operators, -by using the declaration listargp. -

    -

    -

    -examples:

    -

    
    -log {a,b,c}; 
    -
    -  LOG(A),LOG(B),LOG(C) 
    -
    -
    -listargp log; 
    -
    -log {a,b,c}; 
    -
    -  LOG(A,B,C)
    -
    -

    It is possible to inhibit such distribution globally by turning on - the -switch -listargs. In addition, if an operator has more than on -e -argument, no such distribution occurs, so listargp has no effect. -

    -

    -

    - - - -NODEPEND -INDEX

    - - - -NODEPEND _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The nodepend declaration removes the dependency declared with - -depend. -

    -syntax:

    -

    -

    -nodepend<dep-kernel>{,<kernel>}+ -

    -

    -

    -

    -<dep-kernel> must be a kernel that has had a dependency declared upon the - -one or more other kernels that are its other arguments. -

    -

    -

    -examples:

    -

    
    -depend y,x,z; 
    -
    -df(sin y,x); 
    -
    -  COS(Y)*DF(Y,X) 
    -
    -
    -df(sin y,x,z); 
    -
    -  COS(Y)*DF(Y,X,Z) - DF(Y,X)*DF(Y,Z)*SIN(Y) 
    -
    -
    -nodepend y,z; 
    -
    -df(sin y,x); 
    -
    -  COS(Y)*DF(Y,X) 
    -
    -
    -df(sin y,x,z); 
    -
    -  0
    -
    -

    A warning message is printed if the dependency had not been declar -ed by -depend. -

    -

    -

    - - - -MATCH -INDEX

    - - - -MATCH _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The match command is similar to the -let command, except -that it matches only explicit powers in substitution. -

    -syntax:

    -

    -

    -match<expr> = <expression>{,<expr> - =<expression>}* -

    -

    -

    -<expr> is generally a term involving powers, and is limited by -the rules for the -let command. <expression> may be -any valid REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -match c**2*a**2 = d;
    -(a+c)**4; 
    -
    -   4       3          3    4
    -  A   + 4*A *C + 4*A*C  + C  + 6*D 
    -
    -
    -match a+b = c; 
    -
    -a + 2*b; 
    -
    -  B + C 
    -
    -
    -(a + b + c)**2; 
    -
    -   2     2               2
    -  A   - B   + 2*B*C + 3*C  
    -
    -
    -clear a+b; 
    -
    -(a + b + c)**2; 
    -
    -    2                    2            2
    -  A   + 2*A*B + 2*A*C + B  + 2*B*C + C  
    -
    -
    -let p*r = s; 
    -
    -match p*q = ss; 
    -
    -(a + p*r)**2; 
    -
    -   2            2
    -  A  + 2*A*S + S  
    -
    -
    -(a + p*q)**2; 
    -
    -   2              2  2
    -  A   + 2*A*SS + P *Q
    -
    -

    Note in the last example that a + b has been explicitly m -atched -after the squaring was done, replacing each single power of a by -c - b. This kind of substitution, although following the rules, is -confusing and could lead to unrecognizable results. It is better to use -match with explicit powers or products only. match should -not be used inside procedures for the same reasons that let should -not be. -

    -

    -Unlike -let substitutions, match substitutions are ex -ecuted -after all other operations are complete. The last example shows the -difference. match commands can be cleared by using -clear, -with exactly the expression that the original match took. -match commands can also be done more generally with for all -or -forall...such that commands. -

    -

    -

    - - - -NONCOM -INDEX

    - - - -NONCOM _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -noncomdeclares that already-declared operators are noncommutative -under multiplication. -

    -syntax:

    -

    -

    -noncom<operator>{,<operator>}* -

    -

    -

    -<operator> must have been declared an -operator, or a warning -message is given. -

    -

    -

    -examples:

    -

    
    -operator f,h; 
    -
    -noncom f; 
    -
    -f(a)*f(b) - f(b)*f(a); 
    -
    -  F(A)*F(B) - F(B)*F(A) 
    -
    -
    -h(a)*h(b) - h(b)*h(a); 
    -
    -  0 
    -
    -
    -operator comm; 
    -
    -for all x,y such that x neq y and ordp(x,y)
    -        let f(x)*f(y) = f(y)*f(x) + comm(x,y);
    -
    -
    -f(1)*f(2); 
    -
    -  F(1)*F(2) 
    -
    -
    -f(2)*f(1); 
    -
    -  COMM(2,1) + F(1)*F(2)
    -
    -

    The last example introduces the commutator of f(x) and f(y) -for all x and y. The equality check is to prevent an infinite loop. The -operator f can have other functionality attached to it if desired, or it -can remain an indeterminate operator. -

    -

    -

    - - - -NONZERO -INDEX

    - - - -NONZERO _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -

    -syntax:

    -nonzero<identifier>{,<identifier>}* -

    -

    -

    -If an -operator f is declared -odd, then f(0) -is replaced by zero unless f is also declared non zero by the -declaration nonzero. -

    -examples:

    -

    
    -        odd f; 
    -
    -        f(0) 
    -
    -  0 
    -
    -
    -        nonzero f; 
    -
    -        f(0) 
    -
    -  F(0)
    -
    -

    -

    - - - -ODD -INDEX

    - - - -ODD _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -

    -syntax:

    -odd<identifier>{,<identifier>}* -

    -

    -

    -This declaration is used to declare an operator odd in its first -argument. Expressions involving an operator declared in this manner are -transformed if the first argument contains a minus sign. Any other -arguments are not affected. -

    -examples:

    -

    
    -        odd f; 
    -
    -        f(-a) 
    -
    -  -F(A) 
    -
    -
    -        f(-a,-b) 
    -
    -  -F(A,-B) 
    -
    -
    -        f(a,-b) 
    -
    -  F(A,-B)
    -
    -

    -

    -If say f is declared odd, then f(0) is replaced by zero -unless f is also declared non zero by the declaration - -nonzero. -

    -

    -

    - - - -OFF -INDEX

    - - - -OFF _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The off command is used to turn switches off. -

    -syntax:

    -

    -

    -off<switch>{,<switch>}* -

    -

    -

    -<switch> can be any switch name. There is no problem if the -switch is already off. If the switch name is mistyped, an error message is -given. -

    -

    - - - -ON -INDEX

    - - - -ON _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The on command is used to turn switches on. -

    -syntax:

    -

    -

    -on<switch>{,<switch>}* -

    -

    -

    -<switch> can be any switch name. There is no problem if the -switch is already on. If the switch name is mistyped, an error message is -given. -

    -

    - - - -OPERATOR -INDEX

    - - - -OPERATOR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -Use the operator declaration to declare your own operators. -

    -syntax:

    -

    -

    -operator<identifier>{,<identifier>}* -

    -

    -

    -<identifier> can be any valid REDUCE identifier, which is not the name -of a -matrix, -array, scalar variable or previously-defined -operator. -

    -

    -

    -examples:

    -

    
    -operator dis,fac; 
    -
    -let dis(~x,~y) = sqrt(x^2 + y^2); 
    -
    -dis(1,2); 
    -
    -  SQRT(5) 
    -
    -
    -dis(a,10); 
    -
    -        2
    -  SQRT(A  + 100) 
    -
    -
    -on rounded; 
    -
    -dis(1.5,7.2); 
    -
    -  7.35459040329
    -
    -
    -let fac(~n) = if n=0 then 1
    -               else if not(fixp n and n>0)
    -                then rederr "choose non-negative integer"
    -               else for i := 1:n product i;
    - 
    -
    -fac(5); 
    -
    -  120 
    -
    -
    -fac(-2); 
    -
    -  ***** choose non-negative integer
    -
    -

    The first operator is the Euclidean distance metric, the distance -of point -(x,y) from the origin. The second operator is the factorial. -

    -

    -Operators can have various properties assigned to them; they can be -declared -infix, -linear, -symmetric, - -antisymmetric, or -noncommutative. -The default operator is prefix, nonlinear, and commutative. -Precedence can also be assigned to operators using the declaration - -precedence. -

    -

    -Functionality is assigned to an operator by a -let statement or -a -forall...let statement, -(or possibly by a procedure with the name -of the operator). Be careful not to redefine a system operator by -accident. REDUCE permits you to redefine system operators, giving you a -warning message that the operator was already defined. This flexibility -allows you to add mathematical rules that do what you want them to do, but -can produce odd or erroneous behavior if you are not careful. -

    -

    -You can declare operators from inside -procedures, as long as they -are not local variables. Operators defined inside procedures are global. -A formal parameter may be declared as an operator, and has the effect of -declaring the calling variable as the operator. -

    -

    -

    - - - -ORDER -INDEX

    - - - -ORDER _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The order declaration changes the order of precedence of kernels for -display purposes only. -

    -syntax:

    -

    -

    -order<identifier>{,<identifier>}* -

    -

    -

    -<kernel> must be a valid -kernel or -operator name -complete with argument or a -list of such objects. -

    -

    -

    -examples:

    -

    
    -x + y + z + cos(a); 
    -
    -  COS(A) + X + Y + Z 
    -
    -
    -order z,y,x,cos(a); 
    -
    -x + y + z + cos(a); 
    -
    -  Z + Y + X + COS(A) 
    -
    -
    -(x + y)**2; 
    -
    -   2            2
    -  Y  + 2*Y*X + X  
    -
    -
    -order nil; 
    -
    -(z + cos(z))**2; 
    -
    -        2                 2
    -  COS(Z)  + 2*COS(Z)*Z + Z
    -
    -

    orderaffects the printing order of the identifiers only; -internal -order is unchanged. Change internal order of evaluation with the -declaration -korder. You can use order to feature variable -s -or functions you are particularly interested in. -

    -

    -Declarations made with order are cumulative: kernels in new order -declarations are ordered behind those in previous declarations, and -previous declarations retain their relative order. Of course, specific -kernels named in new declarations are removed from previous ones and given -the new priority. Return to the standard canonical printing order with the -statement order nil. -

    -

    -The print order specified by order commands is not in effect if the -switch -pri is off. -

    -

    -

    - - - -PRECEDENCE -INDEX

    - - - -PRECEDENCE _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The precedence declaration attaches a precedence to an infix operator. - -

    -syntax:

    -

    -

    -precedence<operator>,<known\_operator> -

    -

    -

    -<operator> should have been declared an operator but may be a REDUCE -identifier that is not already an operator, array, or matrix. -<known\_operator> must be a system infix operator or have had its -precedence already declared. -

    -

    -

    -examples:

    -

    
    -operator f,h; 
    -
    -precedence f,+; 
    -
    -precedence h,*; 
    -
    -a + f(1,2)*c; 
    -
    -  (1 F 2)*C + A 
    -
    -
    -a + h(1,2)*c; 
    -
    -  1 H 2*C + A 
    -
    -
    -a*1 f 2*c; 
    -
    -  A F 2*C 
    -
    -
    -a*1 h 2*c; 
    -
    -  1 H 2*A*C
    -
    -

    The operator whose precedence is being declared is inserted into t -he infix -operator precedence list at the next higher place than <known\_operator>. - -

    -

    -Attaching a precedence to an operator has the side effect of declaring the -operator to be infix. If the identifier argument for precedence has -not been declared to be an operator, an attempt to use it causes an error -message. After declaring it to be an operator, it becomes an infix operator -with the precedence previously given. Infix operators may be used in prefix -form; if they are used in infix form, a space must be left on each side of -the operator to avoid ambiguity. Declared infix operators are always binary. -

    -

    -To see the infix operator precedence list, enter symbolic mode and type -preclis!*;. The lowest precedence operator is listed first. -

    -

    -All prefix operators have precedence higher than infix operators. -

    -

    -

    - - - -PRECISION -INDEX

    - - - -PRECISION _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The precision declaration sets the number of decimal places used when - -rounded is on. Default is system dependent, and normal -ly about 12. -

    -syntax:

    -

    -

    -precision(<integer>) or precision <integer> -

    -

    -

    -<integer> must be a positive integer. When <integer> is 0, the -current precision is displayed, but not changed. There is no upper limit, -but precision of greater than several hundred causes unpleasantly slow -operation on numeric calculations. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -7/9; 
    -
    -  0.777777777778 
    -
    -
    -precision 20; 
    -
    -  20 
    -
    -
    -7/9; 
    -
    -  0.77777777777777777778 
    -
    -
    -sin(pi/4); 
    -
    -  0.7071067811865475244
    -
    -

    Trailing zeroes are dropped, so sometimes fewer than 20 decimal pl -aces are -printed as in the last example. Turn on the switch -fullprec if -you want to print all significant digits. The -rounded mode -carries calculations to two more places than given by precision, and -rounds off. -

    -

    -

    - - - -PRINT_PRECISION -INDEX

    - - - -PRINT\_PRECISION _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -

    -syntax:

    -print_precision(<integer>) - or print_precision <integer> -

    -

    -

    -In -rounded mode, numbers are normally printed to the spec -ified -precision. If the user wishes to print such numbers with less precision, -the printing precision can be set by the declaration print_precision. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -1/3; 
    -
    -  0.333333333333 
    -
    -
    -print_precision 5; 
    -
    -1/3 
    -
    -  0.33333
    -
    -

    - - -REAL -INDEX

    - - - -REAL _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The real declaration must be made immediately after a - -begin (or other variable declaration such as -integer -and -scalar) and declares local integer variables. They are - -initialized to zero. -

    -syntax:

    -

    -

    -real<identifier>{,<identifier>}* -

    -

    -

    -<identifier> may be any valid REDUCE identifier, except -t or nil. -

    -

    -Real variables remain local, and do not share values with variables of the -same name outside the -begin...end block. When the -block is finished, the variables are removed. You may use the words - -integer or -scalar in the place of real. -real does not indicate typechecking by the current REDUCE; it is -only for your own information. Declaration statements must immediately -follow the begin, without a semicolon between begin and the -first variable declaration. -

    -

    -Any variables used inside a begin...end -block -that were not declared scalar, real or integer are -global, and any change made to them inside the block affects their global -value. Any -array or -matrix declared inside a block is always -global. -

    -

    -

    - - - -REMFAC -INDEX

    - - - -REMFAC _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The remfac declaration removes the special factoring treatment of its -arguments that was declared with -factor. -

    -syntax:

    -

    -

    -remfac<kernel>{,<kernel>}+ -

    -

    -

    -<kernel> must be a -kernel or -operator name that -was declared as special with the -factor declaration. -

    -

    - - - -SCALAR -INDEX

    - - - -SCALAR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The scalar declaration must be made immediately after a - -begin (or other variable declaration such as -integer -and -real) and declares local scalar variables. They are -initialized to 0. -

    -syntax:

    -

    -

    -scalar<identifier>{,<identifier>}* -

    -

    -

    -<identifier> may be any valid REDUCE identifier, except t or -nil. -

    -

    -Scalar variables remain local, and do not share values with variables of -the same name outside the -begin...end -block. -When the block is finished, the variables are removed. You may use the -words -real or -integer in the place of scalar. -real and integer do not indicate typechecking by the current -REDUCE; they are only for your own information. Declaration statements -must immediately follow the begin, without a semicolon between -begin and the first variable declaration. -

    -

    -Any variables used inside begin...end blocks that were not -declared scalar, real or integer are global, and any - -change made to them inside the block affects their global value. Arrays -declared inside a block are always global. -

    -

    -

    - - - -SCIENTIFIC_NOTATION -INDEX

    - - - -SCIENTIFIC\_NOTATION _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -

    -syntax:

    -scientific_notation(<m>) or -scientific_notation({<m>,<n>}) -

    -

    -

    -<m> and <n> are positive integers. -scientific_notation controls the output format of floating point -numbers. At the default settings, any number with five or less digits -before the decimal point is printed in a fixed-point notation, e.g., -12345.6. Numbers with more than five digits are printed in scientific -notation, e.g., 1.234567E+5. Similarly, by default, any number with -eleven or more zeros after the decimal point is printed in scientific -notation. -

    -

    -When scientific_notation is called with the numerical argument - m a number with more than m digits before the decimal point, -or m or more zeros after the decimal point, is printed in scientific -notation. When scientific_notation is called with a list -{<m>,<n>}, a number with more than m digits before the -decimal point, or n or more zeros after the decimal point is -printed in scientific notation. -

    -

    -

    -examples:

    -

    
    -
    -on rounded;
    -
    -
    -12345.6;
    -
    -  12345.6
    -
    -
    -
    -123456.5;
    -
    -  1.234565e+5
    -
    -
    -
    -0.00000000000000012;
    -
    -  1.2e-16
    -
    -
    -
    -scientific_notation 20;
    -
    -  5,11
    -
    -
    -
    -5: 123456.7;
    -
    -  123456.7
    -
    -
    -
    -0.00000000000000012;
    -
    -  0.00000000000000012
    -
    -

    - - -SHARE -INDEX

    - - - -SHARE _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The share declaration allows access to its arguments by both -algebraic and symbolic modes. -

    -syntax:

    -

    -

    -share<identifier>{,<identifier>}* -

    -

    -

    -<identifier> can be any valid REDUCE identifier. -

    -

    -Programming in -symbolic as well as algebraic mode allows -you a wider range -of techniques than just algebraic mode alone. Expressions do not cross the -boundary since they have different representations, unless the share -declaration is used. For more information on using symbolic mode, see -the <REDUCE User's Manual>, and the <Standard Lisp Report>. -

    -

    -You should be aware that a previously-declared array is destroyed by the -share declaration. Scalar variables retain their values. You can -share a declared -matrix that has not yet -been dimensioned so that it can be -used by both modes. Values that are later put into the matrix are -accessible from symbolic mode too, but not by the usual matrix reference -mechanism. In symbolic mode, a matrix is stored as a list whose first -element is -MAT, and whose next elements are the rows of the matri -x -stored as lists of the individual elements. Access in symbolic mode is by -the operators -first, -second, -third and - -rest. -

    -

    -

    - - - -SYMBOLIC -INDEX

    - - - -SYMBOLIC _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The symbolic command changes REDUCE's mode of operation to symbolic. -When symbolic is followed by an expression, that expression is -evaluated in symbolic mode, but REDUCE's mode is not changed. It is -equivalent to the -lisp command. -

    -

    -

    -examples:

    -

    
    -symbolic; 
    -
    -  NIL 
    -
    -
    -cdr '(a b c); 
    -
    -  (B C) 
    -
    -
    -algebraic; 
    -
    -x + symbolic car '(y z); 
    -
    -  X + Y
    -
    -

    - - -SYMMETRIC -INDEX

    - - - -SYMMETRIC _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -When an operator is declared symmetric, its arguments are reordered -to conform to the internal ordering of the system. -

    -syntax:

    -

    -

    -symmetric<identifier>{,<identifier>}* -

    -

    -

    -<identifier> is an identifier that has been declared an operator. -

    -

    -

    -examples:

    -

    
    -operator m,n; 
    -
    -symmetric m,n; 
    -
    -m(y,a,sin(x)); 
    -
    -  M(SIN(X),A,Y) 
    -
    -
    -n(z,m(b,a,q)); 
    -
    -  N(M(A,B,Q),Z)
    -
    -

    If <identifier> has not been declared to be an operator, the - flag -symmetric is still attached to it. When <identifier> is -subsequently used as an operator, the message Declare<identifier> - - operator ? (Y or N) is printed. If the user replies y, the -symmetric property of the operator is used. -

    -

    -

    - - - -TR -INDEX

    - - - -TR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The tr declaration is used to trace system or user-written procedures. - -It is only useful to those with a good knowledge of both Lisp and the -internal formats used by REDUCE. -

    -

    -

    -syntax:

    -tr<name>{,<name>}* -

    -

    -

    -<name> is the name of a REDUCE system procedure or one of your own -procedures. -

    -

    -

    -examples:

    -

    The system procedure prepsq is traced, - which prepares REDUCE standard -forms for printing by converting them to a Lisp prefix form.

     
    -
    -tr prepsq; 
    -
    -  (PREPSQ) 
    -
    -
    -x**2 + y; 
    -
    -  PREPSQ entry:
    -    Arg 1: (((((X . 2) . 1) ((Y . 1) . 1)) . 1)
    -  PREPSQ return value = (PLUS (EXPT X 2) Y)
    -  PREPSQ entry:
    -    Arg 1: (1 . 1)
    -  PREPSQ return value = 1
    -   2
    -  X  + Y
    -
    -
    -untr prepsq; 
    -
    -  (PREPSQ)
    -
    -

    -

    -

    -This example is for a PSL-based system; the above format will vary if -other Lisp systems are used. -

    -

    -When a procedure is traced, the first lines show entry to the procedure and -the arguments it is given. The value returned by the procedure is printed -upon exit. If you are tracing several procedures, with a call to one of -them inside the other, the inner trace will be indented showing procedure -nesting. There are no trace options. However, the format of the trace -depends on the underlying Lisp system used. The trace can be removed with -the command -untr. Note that trace, below, is a matrix -operator, while tr does procedure tracing. -

    -

    -

    - - - -UNTR -INDEX

    - - - -UNTR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -

    -

    -The untr declaration is used to remove a trace from system or -user-written procedures declared with -tr. It is only useful to -those with a good knowledge of both Lisp and the internal formats used by -REDUCE. -

    -

    -

    -syntax:

    -untr<name>{,<name>}* -

    -

    -

    -<name> is the name of a REDUCE system procedure or one of your own -procedures that has previously been the argument of a tr -declaration. -

    -

    - - - -VARNAME -INDEX

    - - - -VARNAME _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The declaration varname instructs REDUCE to use its argument as the -default Fortran (when -fort is on) or -structr identifier -and identifier stem, rather than using ANS. -

    -syntax:

    -

    -

    -varname<identifier> -

    -

    -

    -<identifier> can be any combination of one or more alphanumeric -characters. Try to avoid REDUCE reserved words. -

    -

    -

    -examples:

    -

    
    -varname ident; 
    -
    -  IDENT 
    -
    -
    -on fort; 
    -
    -x**2 + 1; 
    -
    -  IDENT=X**2+1. 
    -
    -
    -off fort,exp; 
    -
    -structr(((x+y)**2 + z)**3); 
    -
    -        3
    -  IDENT2
    -      where
    -                         2
    -         IDENT2 := IDENT1  + Z
    -  IDENT1 := X + Y
    -
    -

    -expwas turned off so that -structr could show the -structure. If exp had been on, the expression would have been -expanded into a polynomial. -

    -

    -

    - - - -WEIGHT -INDEX

    - - - -WEIGHT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The weight command is used to attach weights to kernels for asymptotic - -constraints. -

    -syntax:

    -

    -

    -weight<kernel> =<number> -

    -

    -

    -<kernel> must be a REDUCE -kernel, <number> must be a -positive integer, not 0. -

    -

    -

    -examples:

    -

    
    -a := (x+y)**4; 
    -
    -        4      3        2  2        3    4
    -  A := X  + 4*X *Y + 6*X *Y  + 4*X*Y  + Y  
    -
    -
    -weight x=2,y=3; 
    -
    -wtlevel 8; 
    -
    -a; 
    -
    -   4
    -  X  
    -
    -
    -wtlevel 10; 
    -
    -a; 
    -
    -   2     2             2
    -  X *(6*Y  + 4*X*Y  + X ) 
    -
    -
    -int(x**2,x); 
    -
    -  ***** X invalid as KERNEL
    -
    -

    Weights and -wtlevel are used for asymptotic constraints, where -higher-order terms are considered insignificant. -

    -

    -Weights are originally equivalent to 0 until set by a weight -command. To remove a weight from a kernel, use the -clear -command. Weights once assigned cannot be changed without clearing the -identifier. Once a weight is assigned to a kernel, it is no longer a -kernel and cannot be used in any REDUCE commands or operators that require -kernels, until the weight is cleared. Note that terms are ordered by -greatest weight. -

    -

    -The weight level of the system is set by -wtlevel, initially at -2. Since no kernels have weights, no effect from wtlevel can be -seen. Once you assign weights to kernels, you must set wtlevel -correctly for the desired operation. When weighted variables appear in a -term, their weights are summed for the total weight of the term (powers of -variables multiply their weights). When a term exceeds the weight level -of the system, it is discarded from the result expression. -

    -

    -

    - - - -WHERE -INDEX

    - - - -WHERE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The where operator provides an infix notation for one-time -substitutions for kernels in expressions. -

    -syntax:

    -

    -

    -<expression> where <kernel> - =<expression> - {,<kernel> =<expression>}* -

    -

    -

    -<expression> can be any REDUCE scalar expression, <kernel> must -be a -kernel. Alternatively a -rule or a rule list -can be a member of the right-hand part of a where expression. -

    -

    -

    -examples:

    -

    
    -x**2 + 17*x*y + 4*y**2 where x=1,y=2; 
    -
    -
    -  51 
    -
    -
    -for i := 1:5 collect x**i*q where q= for j := 1:i product j;
    - 
    -
    -
    -        2    3     4      5
    -  {X,2*X ,6*X ,24*X ,120*X } 
    -
    -
    -x**2 + y + z where z=y**3,y=3; 
    -
    -   2    3
    -  X  + Y  + 3
    -
    -

    Substitution inside a where expression has no effect upon - the values -of the kernels outside the expression. The where operator has the -lowest precedence of all the infix operators, which are lower than prefix -operators, so that the substitutions apply to the entire expression -preceding the where operator. However, where is applied -before command keywords such as then, repeat, or do. - -

    -

    -A -rule or a rule set in the right-hand part of -the -where expression act as if the rules were activated by -let -immediately before the evaluation of the expression and deactivated -by -clearrules immediately afterwards. -

    -

    -wheregives you a natural notation for auxiliary variables in -expressions. As the second example shows, the substitute expression can be -a command to be evaluated. The substitute assignments are made in -parallel, rather than sequentially, as the last example shows. The -expression resulting from the first round of substitutions is not -reexamined to see if any further such substitutions can be made. -where can also be used to define auxiliary variables in - -procedure definitions. -

    -

    -

    - - - -WHILE -INDEX

    - - - -WHILE _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The while command causes a statement to be repeatedly executed until a - -given condition is true. If the condition is initially false, the statement -is not executed at all. -

    -syntax:

    -

    -

    -while<condition> do <statement> -

    -

    -

    -<condition> is given by a logical operator, <statement> must be a -single REDUCE statement, or a -group (<<...>>) or - -begin...end -block. -

    -

    -

    -examples:

    -

    
    -a := 10; 
    -
    -  A := 10 
    -
    -
    -while a <= 12 do <<write a; a := a + 1>>;
    - 
    -
    -
    -  10 
    -
    -
    -                                          11 
    -
    -                                          12 
    -
    -while a < 5 do <<write a; a := a + 1>>;
    - 
    -
    -
    -      nothing is printed
    -
    -

    - - -WTLEVEL -INDEX

    - - - -WTLEVEL _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -In conjunction with -weight, wtlevel is used to implement -asymptotic constraints. Its default value is 2. -

    -syntax:

    -

    -

    -wtlevel<expression> -

    -

    -

    -To change the weight level, <expression> must evaluate to a positive -integer that is the greatest weight term to be retained in expressions -involving kernels with weight assignments. wtlevel returns the -new weight level. If you want the current weight level, but not -change it, say wtlevel nil. -

    -

    -

    -examples:

    -

    
    -(x+y)**4;          
    - 
    -
    -   4      3        2  2        3    4
    -  X  + 4*X *Y + 6*X *Y  + 4*X*Y  + Y  
    -
    -
    -weight x=2,y=3; 
    -
    -wtlevel 8; 
    -
    -(x+y)**4; 
    -
    -   4
    -  X  
    -
    -
    -wtlevel 10; 
    -
    -(x+y)**4; 
    -
    -   2     2            2
    -  X *(6*Y  + 4*X*Y + X ) 
    -
    -
    -int(x**2,x); 
    -
    -  ***** X invalid as KERNEL
    -
    -

    wtlevelis used in conjunction with the command -weight to -enable asymptotic constraints. Weight of a term is computed by multiplying -the weights of each variable in it by the power to which it has been -raised, and adding the resulting weights for each variable. If the weight -of the term is greater than wtlevel, the term is dropped from the -expression, and not used in any further computation involving the -expression. -

    -

    -Once a weight has been attached to a -kernel, it is no longer -recognized by the system as a kernel, though still a variable. It cannot -be used in REDUCE commands and operators that need kernels. The weight -attachment can be undone with a -clear command. wtlevel can -be changed as desired. -

    -

    -

    - - - -Declarations -INDEX

    -Declarations

    -
  • ALGEBRAIC command

    -

  • ANTISYMMETRIC declaration

    -

  • ARRAY declaration

    -

  • CLEAR command

    -

  • CLEARRULES command

    -

  • DEFINE command

    -

  • DEPEND declaration

    -

  • EVEN declaration

    -

  • FACTOR declaration

    -

  • FORALL command

    -

  • INFIX declaration

    -

  • INTEGER declaration

    -

  • KORDER declaration

    -

  • LET command

    -

  • LINEAR declaration

    -

  • LINELENGTH declaration

    -

  • LISP command

    -

  • LISTARGP declaration

    -

  • NODEPEND declaration

    -

  • MATCH command

    -

  • NONCOM declaration

    -

  • NONZERO declaration

    -

  • ODD declaration

    -

  • OFF command

    -

  • ON command

    -

  • OPERATOR declaration

    -

  • ORDER declaration

    -

  • PRECEDENCE declaration

    -

  • PRECISION declaration

    -

  • PRINT\_PRECISION declaration

    -

  • REAL declaration

    -

  • REMFAC declaration

    -

  • SCALAR declaration

    -

  • SCIENTIFIC\_NOTATION declaration

    -

  • SHARE declaration

    -

  • SYMBOLIC command

    -

  • SYMMETRIC declaration

    -

  • TR declaration

    -

  • UNTR declaration

    -

  • VARNAME declaration

    -

  • WEIGHT command

    -

  • WHERE operator

    -

  • WHILE command

    -

  • WTLEVEL command

    -

  • - - -IN -INDEX

    - - - -IN _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The in command takes a list of file names and inputs each file into -the system. -

    -syntax:

    -

    -

    -in<filename>{,<filename>}* -

    -

    -

    -<filename> must be in the current directory, or be a valid pathname. -If the file name is not an identifier, double quote marks (") are - -needed around the file name. -

    -

    -A message is given if the file cannot be found, or has a mistake -in it. -

    -

    -Ending the command with a semicolon causes the file to be echoed to the -screen; ending it with a dollar sign does not echo the file. If you want -some but not all of a file echoed, turn the switch -echo on or off -in the file. -

    -

    -An efficient way to develop procedures in REDUCE is to write them into a file -using a system editor of your choice, and then input the -files into an active REDUCE session. REDUCE reparses the procedure as -it takes information from the file, overwriting the previous procedure -definition. When it accepts the procedure, it echoes its name to the screen. -Data can also be input to the system from files. -

    -

    -Files to be read in should always end in -end; to avoid -end-of-file problems. Note that this is an additional end; to any -ending procedures in the file. -

    -

    -

    - - - -INPUT -INDEX

    - - - -INPUT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The input command returns the input expression to the REDUCE numbered -prompt that is its argument. -

    -syntax:

    -

    -

    -input(<number>) or input <number> -

    -

    -

    -

    -<number> must be between 1 and the current REDUCE prompt number. -

    -

    -An expression brought back by input can be reexecuted with new -values or switch settings, or used as an argument in another expression. -The command -ws brings back the results of a numbered REDUCE -statement. Two lists contain every input and every output statement since -the beginning of the session. If your session is very long, storage space -begins to fill up with these expressions, so it is a good idea to end the -session once in a while, saving needed expressions to files with the - -saveas and -out commands. -

    -

    -Switch settings and -let statements can also be reexecuted by using -input. -

    -

    -An error message is given if a number is called for that has not yet been used. - -

    -

    -

    - - - -OUT -INDEX

    - - - -OUT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The out command directs output to the filename that is its argument, -until another out changes the output file, or -shut closes it. -

    -syntax:

    -

    -

    -out<filename> or out "<pathname> " - or out t -

    -

    -

    -<filename> must be in the current directory, or be a valid complete -file description for your system. If the file name is not -in the current directory, quote marks are needed around the file name. -If the file already exists, a message is printed allowing you to decide -whether to supersede the contents of the file with new material. -

    -

    -To restore output to the terminal, type out t, or -shut the -file. When you use out t, the file remains available, and if you -open it again (with another out), new material is appended rather -than overwriting. -

    -

    -To write a file using out that can be input at a later time, the -switch -nat must be turned off, so that the standard linear fo -rm -is saved that can be read in by -in. If nat is on, exponents -are printed on the line above the expression, which causes trouble -when REDUCE tries to read the file. -

    -

    -There is a slight complication if you are using the out command from -inside a file to create another file. The -echo switch is normally -off at the top-level and on while reading files (so you can see what is -being read in). If you create a file using out at the top-level, -the result lines are printed into the file as you want them. But if you -create such a file from inside a file, the echo switch is on, and -every line is echoed, first as you typed it, then as REDUCE parsed it, and -then once more for the file. Therefore, when you create a file from -a file, you need to turn echo off explicitly before the out -command, and turn it back on when you shut the created file, so your -executing file echoes as it should. This behavior also means that as you -watch the file execute, you cannot see the lines that are being put into -the out file. As soon as you turn echo on, you can see -output again. -

    -

    -

    - - - -SHUT -INDEX

    - - - -SHUT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The shut command closes output files. -

    -syntax:

    -

    -

    -shut<filename>{,<filename>}* -

    -

    -

    -<filename> must have been a file opened by -out. -

    -

    -A file that has been opened by -out must be shut before it is -brought in by -in. Files that have been opened by out should - -always be shut before the end of the REDUCE session, to avoid either -loss of information or the printing of extraneous information into the file. -In most systems, terminating a session by -bye closes all open -output files. -

    -

    -

    - - - -Input and Output -INDEX

    -Input and Output

    -
  • IN command

    -

  • INPUT command

    -

  • OUT command

    -

  • SHUT command

    -

  • - - -ACOS -INDEX

    - - - -ACOS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The acos operator returns the arccosine of its argument. -

    -

    -

    -syntax:

    -acos(<expression>) or acos <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -acos(ab); 
    -
    -  ACOS(AB) 
    -
    -
    -acos 15; 
    -
    -  ACOS(15) 
    -
    -
    -df(acos(x*y),x); 
    -
    -           2  2
    -  SQRT( - X *Y  + 1)*Y
    -  -------------------- 
    -        2  2
    -       X *Y  - 1
    -
    -
    -on rounded; 
    -
    -res := acos(sqrt(2)/2); 
    -
    -  RES := 0.785398163397 
    -
    -
    -res-pi/4; 
    -
    -  0
    -
    -

    An explicit numeric value is not given unless the switch -rounded is -on and the argument has an absolute numeric value less than or equal to 1. -

    -

    -

    - - - -ACOSH -INDEX

    - - - -ACOSH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -acoshrepresents the hyperbolic arccosine of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -acosh is known to the system. Numerical values may also be found by -turning on the switch -rounded. -

    -

    -

    -syntax:

    -acosh(<expression>) or acosh <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -acosh a; 
    -
    -  ACOSH(A) 
    -
    -
    -acosh(0); 
    -
    -  ACOSH(0) 
    -
    -
    -df(acosh(a**2),a); 
    -
    -          4
    -  2*SQRT(A  - 1)*A
    -  ---------------- 
    -        4
    -       A  - 1
    -
    -
    -int(acosh(x),x); 
    -
    -  INT(ACOSH(X),X)
    -
    -

    You may attach functionality by defining acosh to be the -inverse of -cosh. This is done by the commands -

    
    -        put('cosh,'inverse,'acosh);
    -        put('acosh,'inverse,'cosh);
    -

    -

    -You can write a procedure to attach integrals or other -functions to acosh. You may wish to add a check to see that its -argument is properly restricted. -

    -

    -

    - - - -ACOT -INDEX

    - - - -ACOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -acotrepresents the arccotangent of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -acot is known to the system. Numerical values may also be found by -turning on the switch -rounded. -

    -

    -

    -syntax:

    -acot(<expression>) or acot <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -You can add functionality yourself with let and procedures. -

    -

    - - - -ACOTH -INDEX

    - - - -ACOTH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -acothrepresents the inverse hyperbolic cotangent of its argument. -It takes an arbitrary scalar expression as its argument. The derivative -of acoth is known to the system. Numerical values may also be found -by turning on the switch -rounded. -

    -

    -

    -syntax:

    -acoth(<expression>) or acoth <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, -matrix or vector expression. <simple\_expression> must be a single -identifier or begin with a prefix operator name. You can add -functionality yourself with let and procedures. -

    -

    - - - -ACSC -INDEX

    - - - -ACSC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The acsc operator returns the arccosecant of its argument. -

    -

    -

    -syntax:

    -acsc(<expression>) or acsc <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -acsc(ab); 
    -
    -  ACSC(AB) 
    -
    -
    -acsc 15; 
    -
    -  ACSC(15) 
    -
    -
    -df(acsc(x*y),x); 
    -
    -         2  2
    -  -SQRT(X *Y  - 1)
    -  ---------------- 
    -       2  2
    -   X*(X *Y  - 1)
    -
    -
    -on rounded; 
    -
    -res := acsc(2/sqrt(3)); 
    -
    -  RES := 1.0471975512 
    -
    -
    -res-pi/3; 
    -
    -  0
    -
    -

    An explicit numeric value is not given unless the switch round -ed is -on and the argument has an absolute numeric value less than or equal to 1. -

    -

    -

    - - - -ACSCH -INDEX

    - - - -ACSCH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The acsch operator returns the hyperbolic arccosecant of its argument. - -

    -

    -

    -syntax:

    -acsch(<expression>) or acsch <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -acsch(ab); 
    -
    -  ACSCH(AB) 
    -
    -
    -acsch 15; 
    -
    -  ACSCH(15) 
    -
    -
    -df(acsch(x*y),x); 
    -
    -         2  2
    -  -SQRT(X *Y  + 1)
    -  ---------------- 
    -       2  2
    -   X*(X *Y  + 1)
    -
    -
    -on rounded; 
    -
    -res := acsch(3); 
    -
    -  RES := 0.327450150237
    -
    -

    An explicit numeric value is not given unless the switch round -ed is -on and the argument has an absolute numeric value less than or equal to 1. -

    -

    -

    - - - -ASEC -INDEX

    - - - -ASEC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The asec operator returns the arccosecant of its argument. -

    -

    -

    -syntax:

    -asec(<expression>) or asec <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -asec(ab); 
    -
    -  ASEC(AB) 
    -
    -
    -asec 15; 
    -
    -  ASEC(15) 
    -
    -
    -df(asec(x*y),x); 
    -
    -        2  2
    -  SQRT(X *Y  - 1)
    -  --------------- 
    -       2  2
    -   X*(X *Y  - 1)
    -
    -
    -on rounded; 
    -
    -res := asec sqrt(2); 
    -
    -  RES := 0.785398163397 
    -
    -
    -res-pi/4; 
    -
    -  0
    -
    -

    An explicit numeric value is not given unless the switch round -ed is -on and the argument has an absolute numeric value greater or equal to 1. -

    -

    -

    - - - -ASECH -INDEX

    - - - -ASECH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -asechrepresents the hyperbolic arccosecant of its argument. It takes -an arbitrary scalar expression as its argument. The derivative of -asech is known to the system. Numerical values may also be found by -turning on the switch -rounded. -

    -

    -

    -syntax:

    -asech(<expression>) or asech <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -asech a; 
    -
    -  ASECH(A) 
    -
    -
    -asech(1); 
    -
    -  0 
    -
    -
    -df(acosh(a**2),a); 
    -
    -            4
    -  2*SQRT(- A  + 1)
    -  ---------------- 
    -         4
    -     A*(A  - 1)
    -
    -
    -int(asech(x),x); 
    -
    -  INT(ASECH(X),X)
    -
    -

    You may attach functionality by defining asech to be the -inverse of -sech. This is done by the commands -

    
    -        put('sech,'inverse,'asech);
    -        put('asech,'inverse,'sech);
    -

    -

    -You can write a procedure to attach integrals or other -functions to asech. You may wish to add a check to see that its -argument is properly restricted. -

    -

    -

    - - - -ASIN -INDEX

    - - - -ASIN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The asin operator returns the arcsine of its argument. -

    -

    -

    -syntax:

    -asin(<expression>) or asin <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -asin(givenangle); 
    -
    -  ASIN(GIVENANGLE) 
    -
    -
    -asin(5); 
    -
    -  ASIN(5) 
    -
    -
    -df(asin(2*x),x); 
    -
    -                 2
    -    2*SQRT( - 4*X  + 1))
    -  - -------------------- 
    -             2
    -          4*X  - 1
    -
    -
    -on rounded; 
    -
    -asin .5; 
    -
    -  0.523598775598 
    -
    -
    -asin(sqrt(3)); 
    -
    -  ASIN(1.73205080757) 
    -
    -
    -asin(sqrt(3)/2); 
    -
    -  1.04719755120 
    -
    -

    A numeric value is not returned by asin unless the switch - -rounded is on and its argument has an absolute value less than or -equal to 1. -

    -

    -

    - - - -ASINH -INDEX

    - - - -ASINH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The asinh operator returns the hyperbolic arcsine of its argument. -The derivative of asinh and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -asinh(<expression>) or asinh <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -asinh d; 
    -
    -  ASINH(D) 
    -
    -
    -asinh(1); 
    -
    -  ASINH(1) 
    -
    -
    -df(asinh(2*x),x); 
    -
    -            2
    -  2*SQRT(4*X  + 1))
    -  ----------------- 
    -         2
    -      4*X  + 1
    -
    -

    You may attach further functionality by defining asinh to - be the -inverse of sinh. This is done by the commands -

    
    -        put('sinh,'inverse,'asinh);
    -        put('asinh,'inverse,'sinh);
    -

    -

    -A numeric value is not returned by asinh unless the switch -rounded is on and its argument evaluates to a number. -

    -

    -

    - - - -ATAN -INDEX

    - - - -ATAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The atan operator returns the arctangent of its argument. -

    -

    -

    -syntax:

    -atan(<expression>) or atan <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -atan(middle); 
    -
    -  ATAN(MIDDLE) 
    -
    -
    -on rounded; 
    -
    -atan 45; 
    -
    -  1.54857776147 
    -
    -
    -off rounded; 
    -
    -int(atan(x),x); 
    -
    -                     2
    -  2*ATAN(X)*X - LOG(X  + 1)
    -  ------------------------- 
    -              2
    -
    -
    -df(atan(y**2),y); 
    -
    -   2*Y
    -  -------
    -   4
    -  Y  + 1
    -
    -

    A numeric value is not returned by atan unless the switch - - -rounded is on and its argument evaluates to a number. - -

    -

    -

    - - - -ATANH -INDEX

    - - - -ATANH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The atanh operator returns the hyperbolic arctangent of its argument. -The derivative of asinh and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -atanh(<expression>) or atanh <simple\_expression> - -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -atanh aa; 
    -
    -  ATANH(AA) 
    -
    -
    -atanh(1); 
    -
    -  ATANH(1) 
    -
    -
    -df(atanh(x*y),y); 
    -
    -     - X
    -  ----------
    -   2  2
    -  X *Y  - 1
    -
    -

    A numeric value is not returned by asinh unless the switc -h -rounded is on and its argument evaluates to a number. -You may attach additional functionality by defining atanh to be the -inverse of tanh. This is done by the commands -

    -

    -

    
    -        put('tanh,'inverse,'atanh);
    -        put('atanh,'inverse,'tanh);
    -

    -

    - - - -ATAN2 -INDEX

    - - - -ATAN2 _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -atan2(<expression>,<expression>) -

    -

    -

    -<expression> is any valid scalar REDUCE expression. In - -rounded mode, if a numerical value exists, atan2 - returns -the principal value of the arc tangent of the second argument divided by -the first in the range [-pi,+pi] radians, using the signs of both -arguments to determine the quadrant of the return value. An expression in -terms of atan2 is returned in other cases. -

    -

    -

    -examples:

    -

    
    -atan2(3,2); 
    -
    -  ATAN2(3,2); 
    -
    -
    -on rounded; 
    -
    -atan2(3,2); 
    -
    -  0.982793723247 
    -
    -
    -atan2(a,b); 
    -
    -  ATAN2(A,B); 
    -
    -
    -atan2(1,0); 
    -
    -  1.57079632679
    -
    -

    atan2returns a numeric value only if -rounded is on. Then -atan2 is calculated to the current degree of floating point precision. - -

    -

    -

    -

    - - - -COS -INDEX

    - - - -COS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The cos operator returns the cosine of its argument. -

    -

    -

    -syntax:

    -cos(<expression>) or cos <simple\_expression> -

    -

    -

    -<expression> is any valid scalar REDUCE expression, -<simple\_expression> is a single identifier or begins with a prefix -operator name. -

    -

    -

    -examples:

    -

    
    -
    -
    -cos abc; 
    -
    -  COS(ABC) 
    -
    -
    -
    -cos(pi); 
    -
    -  -1 
    -
    -
    -
    -cos 4; 
    -
    -  COS(4) 
    -
    -
    -
    -on rounded; 
    -
    -
    -cos(4); 
    -
    -  - 0.653643620864 
    -
    -
    -
    -cos log 5; 
    -
    -  - 0.0386319699339
    -
    -

    cosreturns a numeric value only if -rounded is on. Then the -cosine is calculated to the current degree of floating point precision. -

    -

    -

    -

    - - - -COSH -INDEX

    - - - -COSH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The cosh operator returns the hyperbolic cosine of its argument. -The derivative of cosh and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -cosh(<expression>) or cosh <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -
    -cosh b; 
    -
    -  COSH(B) 
    -
    -
    -
    -cosh(0); 
    -
    -  1 
    -
    -
    -
    -df(cosh(x*y),x); 
    -
    -  SINH(X*Y)*Y 
    -
    -
    -
    -int(cosh(x),x); 
    -
    -  SINH(X)
    -
    -

    You may attach further functionality by defining its inverse (see - - -acosh). -A numeric value is not returned by cosh unless the switch - -rounded is on and its argument evaluates to a number. - -

    -

    -

    -

    - - - -COT -INDEX

    - - - -COT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -cot represents the cotangent of its argument. It takes an arbitrary -scalar expression as its argument. The derivative of acot and some -simple properties are known to the system. -

    -

    -

    -syntax:

    -cot(<expression>) or cot <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression. <simple\_expression -> -must be a single identifier or begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -cot(a)*tan(a); 
    -
    -  COT(A)*TAN(A)) 
    -
    -
    -cot(1); 
    -
    -  COT(1) 
    -
    -
    -df(cot(2*x),x); 
    -
    -               2
    -  - 2*(COT(2*X)   + 1)
    -
    -

    Numerical values of expressions involving cot may be foun -d by -turning on the switch -rounded. -

    -

    -

    -

    - - - -COTH -INDEX

    - - - -COTH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The coth operator returns the hyperbolic cotangent of its argument. -The derivative of coth and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -coth(<expression>) or coth <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression. <simple\_expression -> -must be a single identifier or begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -df(coth(x*y),x); 
    -
    -                2
    -  - Y*(COTH(X*Y)   - 1) 
    -
    -
    -
    -coth acoth z; 
    -
    -  Z
    -
    -

    You can write -let statements and procedures to add further -functionality to coth if you wish. Numerical values of expressions -involving coth may also be found by turning on the switch - -rounded. -

    -

    -

    -

    - - - -CSC -INDEX

    - - - -CSC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The csc operator returns the cosecant of its argument. -The derivative of csc and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -csc(<expression>) or csc <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression. <simple\_expression -> -must be a single identifier or begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -
    -csc(q)*sin(q); 
    -
    -  CSC(Q)*SIN(Q) 
    -
    -
    -
    -df(csc(x*y),x); 
    -
    -  -COT(X*Y)*CSC(X*Y)*Y
    -
    -

    You can write -let statements and procedures to add further -functionality to csc if you wish. Numerical values of expressions -involving csc may also be found by turning on the switch - -rounded. -

    -

    -

    -

    - - - -CSCH -INDEX

    - - - -CSCH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The cosh operator returns the hyperbolic cosecant of its argument. -The derivative of csch and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -csch(<expression>) or csch <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -
    -csch b; 
    -
    -  CSCH(B) 
    -
    -
    -
    -csch(0); 
    -
    -  0 
    -
    -
    -
    -df(csch(x*y),x); 
    -
    -  - COTH(X*Y)*CSCH(X*Y)*Y 
    -
    -
    -
    -int(csch(x),x); 
    -
    -  INT(CSCH(X),X)
    -
    -

    A numeric value is not returned by csch unless the switch - - -rounded is on and its argument evaluates to a number. - -

    -

    -

    - - - -ERF -INDEX

    - - - -ERF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The erf operator represents the error function, defined by -

    -

    -erf(x) = (2/sqrt(pi))*int(e^(-x^2),x) -

    -

    -A limited number of its properties are known to the system, including the -fact that it is an odd function. Its derivative is known, and from this, -some integrals may be computed. However, a complete integration procedure -for this operator is not currently included. -

    -

    -

    -examples:

    -

    
    -erf(0); 
    -
    -  0 
    -
    -
    -erf(-a); 
    -
    -  - ERF(A) 
    -
    -
    -df(erf(x**2),x); 
    -
    -  4*SQRT(PI)*X
    -  ------------ 
    -       4
    -      X
    -     E  *PI
    -
    -
    -
    -int(erf(x),x); 
    -
    -    2
    -   X
    -  E  *ERF(X)*PI*X + SQRT(PI)
    -  ---------------------------
    -              2
    -             X
    -            E  *PI
    -
    -

    - - -EXP -INDEX

    - - - -EXP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The exp operator returns e raised to the power of its argument -. -

    -syntax:

    -

    -

    -exp(<expression>) or exp <simple\_expression> -

    -

    -

    -<expression> can be any valid REDUCE scalar expression. -<simple\_expression> must be a single identifier or begin with a -prefix operator. -

    -

    -

    -examples:

    -

    
    -exp(sin(x)); 
    -
    -   SIN X
    -  E      
    -
    -
    -exp(11); 
    -
    -   11
    -  E   
    -
    -
    -on rounded; 
    -
    -exp sin(pi/3); 
    -
    -  2.37744267524
    -
    -

    Numeric values are returned only when rounded is on. -The single letter e with the exponential operator ^ or -** may be substituted for exp without change of function. -

    -

    -

    - - - -SEC -INDEX

    - - - -SEC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The sec operator returns the secant of its argument. -

    -

    -

    -syntax:

    -sec(<expression>) or sec <simple\_expression> -

    -

    -

    -<expression> is any valid scalar REDUCE expression, -<simple\_expression> is a single identifier or begins with a prefix -operator name. -

    -

    -

    -examples:

    -

    
    -
    -
    -sec abc; 
    -
    -  SEC(ABC) 
    -
    -
    -
    -sec(pi); 
    -
    -  -1 
    -
    -
    -
    -sec 4; 
    -
    -  SEC(4) 
    -
    -
    -
    -on rounded; 
    -
    -
    -sec(4); 
    -
    -  - 1.52988565647 
    -
    -
    -
    -sec log 5; 
    -
    -  - 25.8852966005
    -
    -

    secreturns a numeric value only if -rounded is on. Then the -secant is calculated to the current degree of floating point precision. -

    -

    -

    - - - -SECH -INDEX

    - - - -SECH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sech operator returns the hyperbolic secant of its argument. -

    -

    -

    -syntax:

    -sech(<expression>) or sech <simple\_expression> -

    -

    -

    -<expression> is any valid scalar REDUCE expression, -<simple\_expression> is a single identifier or begins with a prefix -operator name. -

    -

    -

    -examples:

    -

    
    -sech abc; 
    -
    -  SECH(ABC) 
    -
    -
    -
    -sech(0); 
    -
    -  1 
    -
    -
    -
    -sech 4; 
    -
    -  SECH(4) 
    -
    -
    -
    -on rounded; 
    -
    -
    -sech(4); 
    -
    -  0.0366189934737 
    -
    -
    -
    -sech log 5; 
    -
    -  0.384615384615
    -
    -

    sechreturns a numeric value only if -rounded is on. Then the -expression is calculated to the current degree of floating point precision. -

    -

    -

    - - - -SIN -INDEX

    - - - -SIN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sin operator returns the sine of its argument. -

    -syntax:

    -

    -

    -sin(<expression>) or sin <simple\_expression> -

    -

    -

    -<expression> is any valid scalar REDUCE expression, -<simple\_expression> is a single identifier or begins with a prefix -operator name. -

    -

    -

    -examples:

    -

    
    -sin aa; 
    -
    -  SIN(AA) 
    -
    -
    -sin(pi/2); 
    -
    -  1 
    -
    -
    -on rounded; 
    -
    -sin 3; 
    -
    -  0.14112000806 
    -
    -
    -sin(pi/2); 
    -
    -  1.0
    -
    -

    sinreturns a numeric value only if rounded is on -. -Then the sine is calculated to the current degree of floating point precision. -The argument in this case is assumed to be in radians. -

    -

    -

    - - - -SINH -INDEX

    - - - -SINH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The sinh operator returns the hyperbolic sine of its argument. -The derivative of sinh and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -sinh(<expression>) or sinh <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -
    -sinh b; 
    -
    -  SINH(B) 
    -
    -
    -
    -sinh(0); 
    -
    -  0 
    -
    -
    -df(sinh(x**2),x); 
    -
    -          2
    -  2*COSH(X )*X 
    -
    -
    -int(sinh(4*x),x); 
    -
    -  COSH(4*X)
    -  --------- 
    -      4
    -
    -
    -on rounded; 
    -
    -sinh 4; 
    -
    -  27.2899171971
    -
    -

    You may attach further functionality by defining its inverse (see - - -asinh). -A numeric value is not returned by sinh unless the switch - -rounded is on and its argument evaluates to a number. - -

    -

    -

    - - - -TAN -INDEX

    - - - -TAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The tan operator returns the tangent of its argument. -

    -syntax:

    -

    -

    -tan(<expression>) or tan <simple\_expression> -

    -

    -

    -

    -<expression> is any valid scalar REDUCE expression, -<simple\_expression> is a single identifier or begins with a prefix -operator name. -

    -

    -

    -examples:

    -

    
    -tan a; 
    -
    -  TAN(A) 
    -
    -
    -tan(pi/5); 
    -
    -      PI
    -  TAN(--) 
    -      5
    -
    -
    -on rounded;
    -tan(pi/5); 
    -
    -  0.726542528005
    -
    -

    tanreturns a numeric value only if rounded is on -. Then the -tangent is calculated to the current degree of floating point accuracy. -

    -

    -When -rounded is on, -no check is made to see if the argument of tan is a multiple of -pi/2, for which the tangent goes to positive or negative infinity. -(Of course, since REDUCE uses a fixed-point representation of pi/2, -it produces a large but not infinite number.) You need to make a check for -multiples of pi/2 in any program you use that might possibly ask -for the tangent of such a quantity. -

    -

    -

    - - - -TANH -INDEX

    - - - -TANH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The tanh operator returns the hyperbolic tangent of its argument. -The derivative of tanh and some simple transformations are known -to the system. -

    -

    -

    -syntax:

    -tanh(<expression>) or tanh <simple\_expression> -

    -

    -

    -<expression> may be any scalar REDUCE expression, not an array, matrix or - -vector expression. <simple\_expression> must be a single identifier or -begin with a prefix operator name. -

    -

    -

    -examples:

    -

    
    -tanh b; 
    -
    -  TANH(B) 
    -
    -
    -tanh(0); 
    -
    -  0 
    -
    -
    -df(tanh(x*y),x); 
    -
    -                 2
    -  Y*( - TANH(X*Y)  + 1) 
    -
    -
    -int(tanh(x),x); 
    -
    -       2*X
    -  LOG(E    + 1) - X 
    -
    -
    -on rounded; tanh 2; 
    -
    -  0.964027580076
    -
    -

    You may attach further functionality by defining its inverse (see - - -atanh). -A numeric value is not returned by tanh unless the switch - -rounded is on and its argument evaluates to a number. - -

    -

    -

    - - - -Elementary Functions -INDEX

    -Elementary Functions

    -
  • ACOS operator

    -

  • ACOSH operator

    -

  • ACOT operator

    -

  • ACOTH operator

    -

  • ACSC operator

    -

  • ACSCH operator

    -

  • ASEC operator

    -

  • ASECH operator

    -

  • ASIN operator

    -

  • ASINH operator

    -

  • ATAN operator

    -

  • ATANH operator

    -

  • ATAN2 operator

    -

  • COS operator

    -

  • COSH operator

    -

  • COT operator

    -

  • COTH operator

    -

  • CSC operator

    -

  • CSCH operator

    -

  • ERF operator

    -

  • EXP operator

    -

  • SEC operator

    -

  • SECH operator

    -

  • SIN operator

    -

  • SINH operator

    -

  • TAN operator

    -

  • TANH operator

    -

  • - - -SWITCHES -INDEX

    - - - -SWITCHES _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -Switches are set on or off using the commands -on or - -off, respectively. -The default setting of the switches described in this section is - -off unless stated otherwise. -

    -

    - - - -ALGINT -INDEX

    - - - -ALGINT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the algint switch is on, the algebraic integration module (which -must be loaded from the REDUCE library) is used for integration. -

    -

    -Loading algint from the library automatically turns on the -algint switch. An error message will be given if algint is -turned on when the algint has not been loaded from the library. -

    -

    -

    - - - -ALLBRANCH -INDEX

    - - - -ALLBRANCH _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -When allbranch is on, the operator -solve selects all -branches of solutions. -When allbranch is off, it selects only the principal -branches. Default is on. -

    -

    -

    -examples:

    -

    
    -
    -solve(log(sin(x+3)),x); 
    -
    -  {X=2*ARBINT(1)*PI - ASIN(1) - 3,
    -   X=2*ARBINT(1)*PI + ASIN(1) + PI - 3}
    -
    -
    -off allbranch; 
    -
    -solve(log(sin(x+3)),x); 
    -
    -  X=ASIN(1) - 3
    -
    -

    -arbint(1) indicates an arbitrary integer, which is giv -en a -unique identifier by REDUCE, showing that there are infinitely many -solutions of this type. When allbranch is off, the single -canonical solution is given. -

    -

    -

    - - - -ALLFAC -INDEX

    - - - -ALLFAC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The allfac switch, when on, causes REDUCE to factor out automatically -common products in the output of expressions. Default is on. -

    -

    -

    -examples:

    -

    
    -x + x*y**3 + x**2*cos(z); 
    -
    -                 3
    -  X*(COS(Z)*X + Y   + 1) 
    -
    -
    -off allfac; 
    -
    -x + x*y**3 + x**2*cos(z); 
    -
    -          2      3
    -  COS(Z)*X  + X*Y   + X
    -
    -

    The allfac switch has no effect when pri is off. - Although the -switch setting stays as it was, printing behavior is as if it were off. -

    -

    -

    - - - -ARBVARS -INDEX

    - - - -ARBVARS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When arbvars is on, the solutions of singular or underdetermined -systems of equations are presented in terms of arbitrary complex variables -(see -arbcomplex). Otherwise, the solution is parametrized i -n -terms of some of the input variables. Default is on. -

    -

    -

    -examples:

    -

    
    -solve({2x + y,4x + 2y},{x,y}); 
    -
    -         arbcomplex(1)
    -  {{x= - -------------,y=arbcomplex(1)}} 
    -               2
    -
    -
    -solve({sqrt(x)+ y**3-1},{x,y});				
    -
    -
    -                            6       3
    -  		   {{y=arbcomplex(2),x=y   - 2*y   + 1}} 
    -
    -
    -off arbvars; 
    -
    -solve({2x + y,4x + 2y},{x,y}); 
    -
    -         y
    -  {{x= - -}} 
    -         2
    -
    -
    -solve({sqrt(x)+ y**3-1},{x,y});				
    -
    -
    -            6       3
    -  		   {{x=y   - 2*y   + 1}} 
    -
    -

    With arbvars off, the return value {{}} means th -at the -equations given to -solve imply no relation among the input -variables. -

    -

    -

    - - - -BALANCED_MOD -INDEX

    - - - -BALANCED\_MOD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    - -modularnumbers are normally produced in the range [0,. -..<n>), -where -<n> is the current modulus. With balanced_mod on, the range -[-<n>/2,<n>/2], or more precisely -[-floor((<n>-1)/2), ceiling((<n>-1)/2)], is used instead. -

    -

    -

    -examples:

    -

    
    -setmod 7; 
    -
    -  1 
    -
    -
    -on modular; 
    -
    -4; 
    -
    -  4 
    -
    -
    -on balanced_mod; 
    -
    -4; 
    -
    -  -3
    -
    -

    - - -BFSPACE -INDEX

    - - - -BFSPACE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Floating point numbers are normally printed in a compact notation (either -fixed point or in scientific notation if -SCIENTIFIC_NOTATION -has been used). In some (but not all) cases, it helps comprehensibility -if spaces are inserted in the number at regular intervals. The switch -bfspace, if on, will cause a blank to be inserted in the number after -every five characters. -

    -examples:

    -

    
    -on rounded; 
    -
    -1.2345678; 
    -
    -  1.2345678 
    -
    -
    -on bfspace; 
    -
    -1.2345678; 
    -
    -  1.234 5678
    -
    -

    -

    -bfspaceis normally off. -

    -

    -

    - - - -COMBINEEXPT -INDEX

    - - - -COMBINEEXPT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -REDUCE is in general poor at surd simplification. However, when the -switch combineexpt is on, the system attempts to combine -exponentials whenever possible. -

    -

    -

    -examples:

    -

    
    -3^(1/2)*3^(1/3)*3^(1/6); 
    -
    -           1/3  1/6
    -  SQRT(3)*3   *3    
    -
    -
    -on combineexpt; 
    -
    -ws; 
    -
    -  1
    -
    -

    - - -COMBINELOGS -INDEX

    - - - -COMBINELOGS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches -expandlogs and -combinelogs to carry out these operations. -

    -examples:

    -

    
    -on expandlogs; 
    -
    -log(x*y); 
    -
    -  LOG(X) + LOG(Y) 
    -
    -
    -on combinelogs; 
    -
    -ws; 
    -
    -  LOG(X*Y)
    -
    -

    -

    -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. -

    -

    -

    - - - -COMP -INDEX

    - - - -COMP _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When comp is on, any succeeding function definitions are compiled -into a faster-running form. Default is off. -

    -

    -

    -examples:

    -

    The following procedure finds Fibonacci numbers recurs -ively. -Create a new file ``refib" in your current directory with the following -lines in it:

     
    -
    -procedure refib(n);
    -   if fixp n and n >= 0 then
    -     if n <= 1 then 1
    -       else refib(n-1) + refib(n-2)
    -    else rederr "nonnegative integer only";
    -
    -end;
    -
    -

    Now load REDUCE and run the following:

    
    -
    -on time; 
    -
    -  Time: 100 ms 
    -
    -
    -
    -in "refib"$ 
    -
    -  Time: 0 ms 
    -
    -
    -
    - 
    -
    -  REFIB 
    -
    -
    -
    - 
    -
    -  Time: 260 ms 
    -
    -
    -
    - 
    -
    -  Time: 20 ms 
    -
    -
    -
    -refib(80); 
    -
    -  37889062373143906 
    -
    -
    -
    - 
    -
    -  Time: 14840 ms 
    -
    -
    -
    -on comp; 
    -
    -  Time: 80 ms 
    -
    -
    -
    -in "refib"$ 
    -
    -  Time: 20 ms 
    -
    -
    -
    - 
    -
    -  REFIB 
    -
    -
    -
    - 
    -
    -  Time: 640 ms 
    -
    -
    -
    -refib(80); 
    -
    -  37889062373143906 
    -
    -
    -
    - 
    -
    -  Time: 10940 ms
    -
    -

    -

    -

    -Note that the compiled procedure runs faster. Your time messages will -differ depending upon which system you have. Compiled functions remain so -for the duration of the REDUCE session, and are then lost. They must be -recompiled if wanted in another session. With the switch -time on -as shown above, the CPU time used in executing the command is returned in -milliseconds. Be careful not to leave comp on unless you want it, -as it makes the processing of procedures much slower. -

    -

    -

    -

    - - - -COMPLEX -INDEX

    - - - -COMPLEX _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the complex switch is on, full complex arithmetic is used in -simplification, function evaluation, and factorization. Default is off. - -

    -

    -

    -examples:

    -

    
    -
    -factorize(a**2 + b**2); 
    -
    -     2     2
    -  {{A   + B ,1}} 
    -
    -
    -on complex; 
    -
    -
    -factorize(a**2 + b**2); 
    -
    -  {{A + I*B,1},{A - I*B,1}} 
    -
    -
    -
    -(x**2 + y**2)/(x + i*y); 
    -
    -  X - I*Y 
    -
    -
    -
    -on rounded; 
    -
    -      *** Domain mode COMPLEX changed to COMPLEX_FLOAT 
    -
    -
    -
    -sqrt(-17); 
    -
    -  4.12310562562*I 
    -
    -
    -
    -log(7*i); 
    -
    -  1.94591014906 + 1.57079632679*I
    -
    -

    Complex floating-point can be done by turning on -rounded in -addition to complex. With complex off however, REDUCE knows -that i is the square root of -1 but will not -carry out more complicated complex operations. If you want complex -denominators cleared by multiplication by their conjugates, turn on the -switch -rationalize. -

    -

    -

    - - - -CREF -INDEX

    - - - -CREF _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The switch cref invokes the CREF cross-reference program that -processes a set of procedure definitions to produce a summary of their -entry points, undefined procedures, non-local variables and so on. The -program will also check that procedures are called with a consistent -number of arguments, and print a diagnostic message otherwise. -

    -

    -The output is alphabetized on the first seven characters of each function -name. -

    -

    -To invoke the cross-reference program, cref is first turned on. -This causes the program to load and the cross-referencing process to -begin. After all the required definitions are loaded, turning cref -off will cause a cross-reference listing to be produced. -

    -

    -Algebraic procedures in REDUCE are treated as if they were symbolic, so -that algebraic constructs will actually appear as calls to symbolic -functions, such as aeval. -

    -

    -

    - - - -CRAMER -INDEX

    - - - -CRAMER _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the cramer switch is on, -matrix inversion -and linear equation -solving (operator -solve) is done by Cramer's rule, through exterior -multiplication. Default is off. -

    -

    -

    -examples:

    -

    
    -on time; 
    -
    -  Time: 80 ms 
    -
    -
    -off output; 
    -
    -  Time: 100 ms 
    -
    -
    -mm := mat((a,b,c,d,f),(a,a,c,f,b),(b,c,a,c,d), (c,c,a,b,f),
    -          (d,a,d,e,f));
    - 
    -
    -  Time: 300 ms 
    -
    -
    -inverse := 1/mm; 
    -
    -  Time: 18460 ms 
    -
    -
    -on cramer; 
    -
    -  Time: 80 ms 
    -
    -
    -cramersinv := 1/mm; 
    -
    -  Time: 9260 ms
    -
    -

    Your time readings will vary depending on the REDUCE version you u -se. -After you invert the matrix, turn on -output and ask for one of -the elements of the inverse matrix, such as cramersinv(3,2), so that -you can see the size of the expressions produced. -

    -

    -Inversion of matrices and the solution of linear equations with dense -symbolic entries in many variables is generally considerably faster with -cramer on. However, inversion of numeric-valued matrices is -slower. Consider the matrices you're inverting before deciding whether to -turn cramer on or off. A substantial portion of the time in matrix -inversion is given to formatting the results for printing. To save this -time, turn output off, as shown in this example or terminate the -expression with a dollar sign instead of a semicolon. The results are -still available to you in the workspace associated with your prompt -number, or you can assign them to an identifier for further use. -

    -

    -

    - - - -DEFN -INDEX

    - - - -DEFN _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the switch defn is on, the Standard Lisp equivalent of the -input statement or procedure is printed, but not evaluated. Default is -off. -

    -

    -

    -examples:

    -

    
    -
    -on defn; 
    -
    -
    -17/3; 
    -
    -  (AEVAL (LIST 'QUOTIENT 17 3)) 
    -
    -
    -
    -df(sin(x),x,2);          
    - 
    -
    -  (AEVAL (LIST 'DF (LIST 'SIN 'X) 'X 2)) 
    -
    -
    -procedure coshval(a);
    -   begin scalar g;
    -      g := (exp(a) + exp(-a))/2;
    -      return g
    -   end;
    - 
    -
    -  (AEVAL 
    -    (PROGN 
    -      (FLAG '(COSHVAL) 'OPFN) 
    -      (DE COSHVAL (A) 
    -        (PROG (G) 
    -          (SETQ G 
    -            (AEVAL 
    -               (LIST 
    -                  'QUOTIENT 
    -                  (LIST 
    -                     'PLUS 
    -                     (LIST 'EXP A) 
    -                     (LIST 'EXP (LIST 'MINUS A))) 
    -                  2))) 
    -         (RETURN G)))) ) 
    -
    -
    -
    -coshval(1); 
    -
    -  (AEVAL (LIST 'COSHVAL 1)) 
    -
    -
    -
    -off defn; 
    -
    -
    -coshval(1); 
    -
    -  Declare COSHVAL operator? (Y or N) 
    -
    -
    -
    -n 
    -
    -procedure coshval(a);
    -   begin scalar g;
    -      g := (exp(a) + exp(-a))/2;
    -      return g
    -   end;
    - 
    -
    -  COSHVAL 
    -
    -
    -
    -on rounded; 
    -
    -
    -coshval(1); 
    -
    -  1.54308063482
    -
    -

    The above function coshval finds the hyperbolic cosine (c -osh) of its -argument. When defn is on, you can see the Standard Lisp equivalent -of the function, but it is not entered into the system as shown by the -message Declare COSHVAL operator?. It must be reentered with -defn off to be recognized. This procedure is used as an example; a -more efficient procedure would eliminate the unnecessary local variable -with -

    
    -      procedure coshval(a);
    -         (exp(a) + exp(-a))/2;
    -

    -

    -

    -

    - - - -DEMO -INDEX

    - - - -DEMO _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The demo switch is used for interactive files, causing the system -to pause after each command in the file until you type a Return. -Default is off. -

    -

    -The switch demo has no effect on top level interactive -statements. Use it when you want to slow down operations in a file so -you can see what is happening. -

    -

    -You can either include the on demo command in the file, or enter -it from the top level before bringing in any file. Unlike the - -pause command, on demo does not permit you to - interrupt -the file for questions of your own. -

    -

    -

    -

    - - - -DFPRINT -INDEX

    - - - -DFPRINT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When dfprint is on, expressions in the differentiation operator - -df are printed in a more ``natural'' notation, with th -e -differentiation variables appearing as subscripts. In addition, if the -switch -noarg is on (the default), the arguments of the -differentiated operator are suppressed. -

    -

    -

    -examples:

    -

    
    -operator f; 
    -
    -df(f x,x); 
    -
    -  DF(F(X),X); 
    -
    -
    -on dfprint; 
    -
    -ws; 
    -
    -  F  
    -   X
    -
    -
    -df(f(x,y),x,y); 
    -
    -  F  
    -   Y
    -
    -
    -off noarg; 
    -
    -ws; 
    -
    -  F(X,Y)
    -        X
    -
    -

    - - -DIV -INDEX

    - - - -DIV _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When div is on, the system divides any simple factors found in -the denominator of an expression into the numerator. Default is off. -

    -

    -

    -examples:

    -

    
    -
    -on div; 
    -
    -
    -a := x**2/y**2; 
    -
    -        2   -2
    -  A := X  *Y   
    -
    -
    -
    -b := a/(3*z); 
    -
    -       1  2   -2    -1
    -  B := -*X  *Y    *Z   
    -       3
    -
    -
    -
    -off div; 
    -
    -
    -a; 
    -
    -   2
    -  X
    -  ---
    -   2
    -  Y
    -
    -
    -
    -b; 
    -
    -     2
    -    X
    -  -------                                       
    -     2
    -  3*Y  *Z
    -
    -

    The div switch only has effect when the -pri switch is on. -When pri is off, regardless of the setting of div, the -printing behavior is as if div were off. -

    -

    -

    - - - -ECHO -INDEX

    - - - -ECHO _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The echo switch is normally off for top-level entry, and on when files - -are brought in. If echo is turned on at the top level, your input -statements are echoed to the screen (thus appearing twice). Default -off (but note default on for files). -

    -

    -If you want to display certain portions of a file and not others, use the -commands off echo and on echo inside the file. If you want -no display of the file, use the input command -

    -

    - in filename$ -

    -

    -rather than using the semicolon delimiter. -

    -

    -Be careful when you use commands within a file to generate another file. -Since echo is on for files, the output file echoes input statements -(unlike its behavior from the top level). You should explicitly turn off -echo when writing output, and turn it back on when you're done. -

    -

    -

    - - - -ERRCONT -INDEX

    - - - -ERRCONT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the errcont switch is on, error conditions do not stop file -execution. Error messages will be printed whether errcont is on or -off. -

    -

    -Default is off. -

    -

    -The following describes what happens when an error occurs in a file under -each setting of errcont and int: -

    -

    -Both off: Message is printed and parsing continues, but no further -statements are executed; no commands from keyboard accepted except bye or -end; -

    -

    -errcontoff, int on: Message is printed, and you are asked -if you wish to continue. (This is the default behavior); -

    -

    -errconton, int off: Message is printed, and file continues -to execute without pause; -

    -

    -Both on: Message is printed, and file continues to execute without pause. -

    -

    -

    -

    - - - -EVALLHSEQP -INDEX

    - - - -EVALLHSEQP _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Under normal circumstances, the right-hand-side of an -equation -is evaluated but not the left-hand-side. This also applies to any -substitutions made by the -sub operator. If both sides are to be -evaluated, the switch evallhseqp should be turned on. -

    -

    - - - -EXP_switch -INDEX

    - - - -EXP _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the exp switch is on, powers and products of expressions are -expanded. Default is on. -

    -

    -

    -examples:

    -

    
    -(x+1)**3; 
    -
    -   3      2
    -  X  + 3*X  + 3*X + 1 
    -
    -
    -(a + b*i)*(c + d*i); 
    -
    -  A*C + A*D*I + B*C*I - B*D 
    -
    -
    -off exp; 
    -
    -(x+1)**3; 
    -
    -         3
    -  (X + 1)  
    -
    -
    -(a + b*i)*(c + d*i); 
    -
    -  (A + B*I)*(C + D*I) 
    -
    -
    -length((x+1)**2/(y+1)); 
    -
    -  2
    -
    -

    Note that REDUCE knows that i^2 = -1. -When exp is off, equivalent expressions may not simplify to the same -form, although zero expressions still simplify to zero. Several operators -that expect a polynomial argument behave differently when exp is -off, such as -length. Be cautious about leaving exp off. -

    -

    -

    - - - -EXPANDLOGS -INDEX

    - - - -EXPANDLOGS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -In many cases it is desirable to expand product arguments of logarithms, -or collect a sum of logarithms into a single logarithm. Since these are -inverse operations, it is not possible to provide rules for doing both at -the same time and preserve the REDUCE concept of idempotent evaluation. -As an alternative, REDUCE provides two switches expandlogs and - -combinelogs to carry out these operations. Both are of -f by default. -

    -examples:

    -

    
    -on expandlogs; 
    -
    -log(x*y); 
    -
    -  LOG(X) + LOG(Y) 
    -
    -
    -on combinelogs; 
    -
    -ws; 
    -
    -  LOG(X*Y)
    -
    -

    -

    -At the present time, it is possible to have both switches on at once, -which could lead to infinite recursion. However, an expression is -switched from one form to the other in this case. Users should not rely -on this behavior, since it may change in the next release. -

    -

    -

    - - - -EZGCD -INDEX

    - - - -EZGCD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When ezgcd and -gcd are on, greatest common divisors are -computed using the EZ GCD algorithm that uses modular arithmetic (and is -usually faster). Default is off. -

    -

    -As a side effect of the gcd calculation, the expressions involved are -factored, though not the heavy-duty factoring of -factorize. The -EZ GCD algorithm was introduced in a paper by J. Moses and D.Y.Y. Yun in -<Proceedings of the ACM>, 1973, pp. 159-166. -

    -

    -Note that the -gcd switch must also be on for ezgcd to have - -effect. -

    -

    -

    - - - -FACTOR -INDEX

    - - - -FACTOR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the factor switch is on, input expressions and results are -automatically factored. -

    -

    -

    -examples:

    -

    
    -
    -on factor; 
    -
    -
    -aa := 3*x**3*a + 6*x**2*y*a + 3*x**3*b + 6*x**2*y*b
    -
    -+ x*y*a + 2*y**2*a + x*y*b + 2*y**2*b;
    -			 
    -
    -
    -                    2
    -  AA := (A + B)*(3*X  + Y)*(X + 2*Y) 
    -
    -
    -off factor; 
    -
    -aa; 
    -
    -       3        2                  2         3        2
    -  3*A*X  + 6*A*X *Y + A*X*Y + 2*A*Y   + 3*B*X  + 6*B*X *Y
    -
    -
    -+ B*X*Y + 2*B*Y^{2} 
    -
    -on factor; 
    -
    -ab := x**2 - 2; 
    -
    -         2
    -  AB := X  - 2
    -
    -

    REDUCE factors univariate and multivariate polynomials with -integer coefficients, finding any factors that also have integer coefficients. -The factoring is done by reducing multivariate problems to univariate -ones with symbolic coefficients, and then solving the univariate ones modulo -small primes. The results of these calculations are merged to -determine the factors of the original polynomial. The factorizer normally -selects evaluation points and primes using a random number generator. -Thus, the detailed factoring behavior may be different each time any -particular problem is tackled. -

    -

    -When the factor switch is turned on, the -exp switch is -turned off, and when the factor switch is turned off, the - -exp switch is turned on, whether it was on previously -or not. -

    -

    -When the switch -trfac is on, informative messages are generated at -each call to the factorizer. The -trallfac switch causes the -production of a more verbose trace message. It takes precedence over -trfac if they are both on. -

    -

    -To factor a polynomial explicitly and store the results, use the operator - -factorize. -

    -

    -

    - - - -FAILHARD -INDEX

    - - - -FAILHARD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the failhard switch is on, the integration operator -int -terminates with an error message if the integral cannot be done in closed -terms. -Default is off. -

    -

    -Use the failhard switch when you are dealing with complicated integrals - -and want to know immediately if REDUCE was unable to handle them. The -integration operator sometimes returns a formal integration form that is -more complicated than the original expression, when it is unable to -complete the integration. -

    -

    -

    - - - -FORT -INDEX

    - - - -FORT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When fort is on, output is given Fortran-compatible syntax. Default -is off. -

    -

    -

    -examples:

    -

    
    -on fort; 
    -
    -df(sin(7*x + y),x); 
    -
    -  ANS=7.*COS(7*X+Y) 
    -
    -
    -on rounded; 
    -
    -b := log(sin(pi/5 + n*pi)); 
    -
    -  	       B=LOG(SIN(3.14159265359*N+0.628318530718))
    -
    -

    REDUCE results can be written to a file (using -out) and used as data -by Fortran programs when fort is in effect. fort knows about -correct statement length, continuation characters, defining a symbol when -it is first used, and other Fortran details. -

    -

    -The -GENTRAN package offers many more possibilities than th -e -fort switch. It produces Fortran (or C or Ratfor) code from REDUCE -procedures or structured specifications, including facilities for producing -double precision output. -

    -

    -

    - - - -FORTUPPER -INDEX

    - - - -FORTUPPER _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When fortupper is on, any Fortran-style output appears in upper case. -Default is off. -

    -

    -

    -examples:

    -

    
    -on fort; 
    -
    -df(sin(7*x + y),x); 
    -
    -  ans=7.*cos(7*x+y) 
    -
    -
    -on fortupper; 
    -
    -df(sin(7*x + y),x); 
    -
    -  ANS=7.*COS(7*X+Y) 
    -
    -

    - - -FULLPREC -INDEX

    - - - -FULLPREC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Trailing zeroes of rounded numbers to the full system precision are -normally not printed. If this information is needed, for example to get a -more understandable indication of the accuracy of certain data, the switch -fullprec can be turned on. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -1/2; 
    -
    -  0.5 
    -
    -
    -on fullprec; 
    -
    -ws; 
    -
    -  0.500000000000
    -
    -

    This is just an output options which neither influences -the accuracy of the computation nor does it give additional -information about the precision of the results. -See also -scientific_notation. -

    -

    -

    - - - -FULLROOTS -INDEX

    - - - -FULLROOTS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Since roots of cubic and quartic polynomials can often be very -messy, a switch fullroots controls the production -of results in closed form. -solve will apply the -formulas for explicit forms for degrees 3 and 4 only if -fullroots is on. Otherwise the result forms -are built using -root_of. Default is off. -

    -

    - - - -GC -INDEX

    - - - -GC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -With the gc switch, you can turn the garbage collection messages on -or off. The form of the message depends on the particular Lisp used for -the REDUCE implementation. -

    -

    -See -reclaim for an explanation of garbage collection. REDU -CE does -garbage collection when needed even if you have turned the notices off. -

    -

    -

    - - - -GCD_switch -INDEX

    - - - -GCD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When gcd is on, common factors in numerators and denominators of -expressions are canceled. Default is off. -

    -

    -

    -examples:

    -

    
    -
    -(2*(f*h)**2 - f**2*g*h - (f*g)**2 - f*h**3 + f*h*g**2
    -   - h**4 + g*h**3)/(f**2*h - f**2*g - f*h**2 + 2*f*g*h
    -   - f*g**2 - g*h**2 + g**2*h);
    - 
    -
    -   2  2    2          2  2      2        3      3    4
    -  F *G  + F *G*H - 2*F *H  - F*G *H + F*H  - G*H  + H
    -  ---------------------------------------------------- 
    -    2      2        2                2    2        2
    -   F *G - F *H + F*G  - 2*F*G*H + F*H  - G *H + G*H
    -
    -
    -on gcd; 
    -
    -ws; 
    -
    -                 2
    -  F*G + 2*F*H + H
    -  ---------------- 
    -       F + G
    -
    -
    -e2 := a*c + a*d + b*c + b*d; 
    -
    -  E2 := A*C + A*D + B*C + B*D 
    -
    -
    -off exp; 
    -
    -e2; 
    -
    -  (A + B)*(C + D)
    -
    -

    Even with gcd off, a check is automatically made for comm -on variable -and numerical products in the numerators and denominators of expression, -and the appropriate cancellations made. Thus the example demonstrating the -use of gcd is somewhat complicated. Note when -exp is off, -gcd has the side effect of factoring the expression. -

    -

    -

    - - - -HORNER -INDEX

    - - - -HORNER _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the horner switch is on, polynomial expressions are printed -in Horner's form for faster and safer numerical evaluation. Default -is off. The leading variable of the expression is selected as -Horner variable. To select the Horner variable explicitly use the - -korder declaration. -

    -

    -

    -examples:

    -

    
    -on horner;
    -
    -(13p-4q)^3;
    -
    -           3            2
    -  ( - 64)*q   + p*(624*q   + p*(( - 2028)*q + p*2197))
    -
    -
    -korder q;
    -
    -ws;
    -
    -        3                  2
    -  2197*p   + q*(( - 2028)*p   + q*(624*p + q*(-64)))
    -
    -

    - - -IFACTOR -INDEX

    - - - -IFACTOR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the ifactor switch is on, any integer terms appearing as a result - -of the -factorize command are factored themselves into primes. - Default -is off. If the argument of factorize is an integer, -ifactor has no effect, since the integer is always factored. -

    -

    -

    -examples:

    -

    
    -factorize(4*x**2 + 28*x + 48); 
    -
    -  {{4,1},{X + 4,1},{X + 3,1}} 
    -
    -
    -factorize(22587); 
    -
    -  {{3,1},{7529,1}} 
    -
    -
    -on ifactor; 
    -
    -factorize(4*x**2 + 28*x + 48); 
    -
    -  {{2,2},{X + 4,1},{X + 3,1}} 
    -
    -
    -factorize(22587); 
    -
    -  {{3,1},{7529,1}} 
    -
    -

    Constant terms that appear within nonconstant -polynomial factors are not factored. -

    -

    -The ifactor switch affects only factoring done specifically -with -factorize, not on factoring done automatically when th -e - -factor switch is on. -

    -

    -

    - - - -INT_switch -INDEX

    - - - -INT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The int switch specifies an interactive mode of operation. Default -on. -

    -

    -There is no reason to turn int off during interactive calculations, -since there are no benefits to be gained. If you do have int off -while inputting a file, and REDUCE finds an error, it prints the message -``Continuing with parsing only." In this state, REDUCE accepts only - -end; or -bye; from the keyboard; -everything else is ignored, even the command on int. -

    -

    -

    - - - -INTSTR -INDEX

    - - - -INTSTR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -If intstr (for ``internal structure'') is on, arguments of an -operator are printed in a more structured form. -

    -

    -

    -examples:

    -

    
    -operator f; 
    -
    -f(2x+2y); 
    -
    -  F(2*X + 2*Y) 
    -
    -
    -on intstr; 
    -
    -ws; 
    -
    -  F(2*(X + Y))
    -
    -

    - - -LCM -INDEX

    - - - -LCM _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The lcm switch instructs REDUCE to compute the least common multiple -of denominators whenever rational expressions occur. Default is on. -

    -

    -

    -examples:

    -

    
    -off lcm; 
    -
    -z := 1/(x**2 - y**2) + 1/(x-y)**2;  
    -			 
    -
    -
    -              2*X*(X - Y)
    -  Z := ------------------------- 
    -        4      3          3    4
    -       X  - 2*X *Y + 2*X*Y  - Y
    -
    -
    -on lcm; 
    -
    -z; 
    -
    -         2*X*(X - Y)
    -  ------------------------- 
    -   4      3          3    4
    -  X  - 2*X *Y + 2*X*Y  - Y
    -
    -
    -zz := 1/(x**2 - y**2) + 1/(x-y)**2;
    -			 
    -
    -
    -                 2*X
    -  ZZ := --------------------- 
    -         3    2        2    3
    -        X  - X *Y - X*Y  + Y
    -
    -
    -on gcd; 
    -
    -z; 
    -
    -           2*X
    -  ----------------------
    -   3    2        2    3
    -  X  - X *Y - X*Y  + Y
    -
    -

    Note that lcm has effect only when rational expressions a -re first -combined. It does not examine existing structures for simplifications on -display. That is shown above when z is entered with -lcm off. It remains unsimplified even after lcm is turned -back on. However, a new variable containing the same expression is -simplified on entry. The switch -gcd does examine existing -structures, as shown in the last example line above. -

    -

    -Full greatest common divisor calculations become expensive if work with -large rational expressions is required. A considerable savings of time -can be had if a full gcd check is made only when denominators are combined, -and only a partial check for numerators. This is the effect of the lcm - -switch. -

    -

    -

    - - - -LESSSPACE -INDEX

    - - - -LESSSPACE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -You can turn on the switch lessspace if you want fewer -blank lines in your output. -

    -

    - - - -LIMITEDFACTORS -INDEX

    - - - -LIMITEDFACTORS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -To get limited factorization in cases where it is too expensive to use -full multivariate polynomial factorization, the switch -limitedfactors can be turned on. In that case, only ``inexpensive'' -factoring operations, such as square-free factorization, will be used -when -factorize is called. -

    -

    -

    -examples:

    -

    
    -a := (y-x)^2*(y^3+2x*y+5)*(y^2-3x*y+7)$ 
    -
    -factorize a; 
    -
    -              2
    -  {- 3*X*Y + Y  + 7,1}
    -            3
    -  {2*X*Y + Y  + 5,1},
    -  {X - Y,2}}
    -
    -
    -on limitedfactors; 
    -
    -factorize a; 
    -
    -        2  2        4        3          5      3      2
    -  {- 6*X *Y  - 3*X*Y  + 2*X*Y  - X*Y + Y  + 7*Y  + 5*Y  + 35,1},
    -  {X - Y,2}}
    -
    -

    - - -LIST_switch -INDEX

    - - - -LIST _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -The list switch causes REDUCE to print each term in any sum on -separate lines. -

    -

    -

    -examples:

    -

    
    -x**2*(y**2 + 2*y) + x*(y**2 + z)/(2*a);
    -			 
    -
    -
    -            2              2
    -  X*(2*A*X*Y  + 4*A*X*Y + Y  +Z)
    -  ------------------------------ 
    -               2*A
    -
    -
    -on list; 
    -
    -ws; 
    -
    -             2
    -  (X*(2*A*X*Y
    -    + 4*A*X*Y
    -       2
    -    + Y
    -    + Z))/(2*A)
    -
    -

    - - -LISTARGS -INDEX

    - - - -LISTARGS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -If an operator other than those specifically defined for lists is given a -single argument that is a list, then the result of this operation will be -a list in which that operator is applied to each element of the list. -This process can be inhibited globally by turning on the switch -listargs. -

    -

    -

    -examples:

    -

    
    -log {a,b,c}; 
    -
    -  LOG(A),LOG(B),LOG(C) 
    -
    -
    -on listargs; 
    -
    -log {a,b,c}; 
    -
    -  LOG(A,B,C)
    -
    -

    It is possible to inhibit such distribution for a specific operato -r by -using the declaration -listargp. In addition, if an operator has -more than one argument, no such distribution occurs, so listargs -has no effect. -

    -

    -

    - - - -MCD -INDEX

    - - - -MCD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When mcd is on, sums and differences of rational expressions are put -on a common denominator. Default is on. -

    -

    -

    -examples:

    -

    
    -a/(x+1) + b/5; 
    -
    -  5*A + B*X + B
    -  ------------- 
    -    5*(X + 1)
    -
    -
    -off mcd; 
    -
    -a/(x+1) + b/5; 
    -
    -         -1
    -  (X + 1)  *A + 1/5*B 
    -
    -
    -1/6 + 1/7; 
    -
    -  13/42
    -
    -

    Even with mcd off, rational expressions involving only nu -mbers are still -put over a common denominator. -

    -

    -Turning mcd off is useful when explicit negative powers are needed, -or if no greatest common divisor calculations are desired, or when -differentiating complicated rational expressions. Results when mcd -is off are no longer in canonical form, and expressions equivalent to zero -may not simplify to 0. Some operations, such as factoring cannot be done -while mcd is off. This option should therefore be used with some -caution. Turning mcd off is most valuable in intermediate parts of -a complicated calculation, and should be turned back on for the last stage. -

    -

    -

    - - - -MODULAR -INDEX

    - - - -MODULAR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When modular is on, polynomial coefficients are reduced by the -modulus set by -setmod. If no modulus has been set, modular -has no effect. -

    -

    -

    -examples:

    -

    
    -setmod 2; 
    -
    -  1 
    -
    -
    -on modular; 
    -
    -(x+y)**2; 
    -
    -   2    2
    -  X  + Y  
    -
    -
    -145*x**2 + 20*x**3 + 17 + 15*x*y;
    -			 
    -
    -
    -   2
    -  X  + X*Y + 1
    -
    -

    Modular operations are only conducted on the coefficients, not the - -exponents. The modulus is not restricted to being prime. When the modulus -is prime, division by a number not relatively prime to the modulus results -in a <Zero divisor> error message. When the modulus is a composite -number, division by a power of the modulus results in an error message, but -division by an integer which is a factor of the modulus does not. -The representation of modular number can be influenced by - -balanced_mod. -

    -

    -

    - - - -MSG -INDEX

    - - - -MSG _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When msg is off, the printing of warning messages is suppressed. Error - -messages are still printed. -

    -

    -Warning messages include those about redimensioning an -array -or declaring an -operator where one is expected. -

    -

    -

    - - - -MULTIPLICITIES -INDEX

    - - - -MULTIPLICITIES _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When -solve is applied to a set of equations with multiple r -oots, -solution multiplicities are normally stored in the global variable - -root_multiplicities rather than the solution list. If -you want -the multiplicities explicitly displayed, the switch multiplicities -should be turned on. In this case, root_multiplicities has no value. -

    -

    -

    -examples:

    -

    
    -solve(x^2=2x-1,x); 
    -
    -  X=1 
    -
    -
    -root_multiplicities; 
    -
    -  2 
    -
    -
    -on multiplicities; 
    -
    -solve(x^2=2x-1,x); 
    -
    -  X=1,X=1 
    -
    -
    -root_multiplicities; 
    -
    -

    - - -NAT -INDEX

    - - - -NAT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When nat is on, output is printed to the screen in natural form, with -raised exponents. nat should be turned off when outputting expressions - -to a file for future input. Default is on. -

    -

    -

    -examples:

    -

    
    -(x + y)**3; 
    -
    -   3      2          2    3
    -  X  + 3*X *Y + 3*X*Y  + Y  
    -
    -
    -off nat; 
    -
    -(x + y)**3; 
    -
    -  X**3 + 3*X**2*Y + 3*X*Y**2 + Y**3$ 
    -
    -
    -on fort; 
    -
    -(x + y)**3; 
    -
    -  ANS=X**3+3.*X**2*Y+3.*X*Y**2+Y**3
    -
    -

    With nat off, a dollar sign is printed at the end of each - expression. -An output file written with nat off is ready to be read into REDUCE -using the command -in. -

    -

    -

    - - - -NERO -INDEX

    - - - -NERO _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When nero is on, zero assignments (such as matrix elements) are not -printed. -

    -

    -

    -examples:

    -

    
    -matrix a;
    -a := mat((1,0),(0,1)); 
    -
    -  A(1,1) := 1
    -  A(1,2) := 0
    -  A(2,1) := 0
    -  A(2,2) := 1
    -
    -
    -on nero; 
    -
    -a; 
    -
    -  MAT(1,1) := 1
    -  MAT(2,2) := 1
    -
    -
    -a(1,2); 

    nothing is printed.

    
    -
    -
    -b := 0; 

    nothing is printed.

    
    -
    -
    -off nero; 
    -
    -b := 0; 
    -
    -  B := 0
    -
    -

    -

    -

    -nerois often used when dealing with large sparse matrices, to avoid -being overloaded with zero assignments. -

    -

    -

    - - - -NOARG -INDEX

    - - - -NOARG _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When -dfprint is on, expressions in the differentiation oper -ator - -df are printed in a more ``natural'' notation, with th -e -differentiation variables appearing as subscripts. When noarg -is on (the default), the arguments of the differentiated operator are also -suppressed. -

    -

    -

    -examples:

    -

    
    -operator f; 
    -
    -df(f x,x); 
    -
    -  DF(F(X),X); 
    -
    -
    -on dfprint; 
    -
    -ws; 
    -
    -  F  
    -   X
    -
    -
    -off noarg; 
    -
    -ws; 
    -
    -  F(X)
    -      X
    -
    -

    - - -NOLNR -INDEX

    - - - -NOLNR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When nolnr is on, the linear properties of the integration operator - -int are suppressed if the integral cannot be found in -closed terms. -

    -

    -REDUCE uses the linear properties of integration to attempt to break down -an integral into manageable pieces. If an integral cannot be found in -closed terms, these pieces are returned. When the nolnr switch is off, - -as many of the pieces as possible are integrated. When it is on, if any piece -fails, the rest of them remain unevaluated. -

    -

    -

    - - - -NOSPLIT -INDEX

    - - - -NOSPLIT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Under normal circumstances, the printing routines try to break an expression -across lines at a natural point. This is a fairly expensive process. If -you are not overly concerned about where the end-of-line breaks come, you -can speed up the printing of expressions by turning off the switch -nosplit. This switch is normally on. -

    -

    - - - -NUMVAL -INDEX

    - - - -NUMVAL _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -With -rounded on, elementary functions with numerical argume -nts -will return a numerical answer where appropriate. If you wish to inhibit -this evaluation, numval should be turned off. It is normally on. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -cos 3.4; 
    -
    -  - 0.966798192579 
    -
    -
    -off numval; 
    -
    -cos 3.4; 
    -
    -  COS(3.4)
    -
    -

    - - -OUTPUT -INDEX

    - - - -OUTPUT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When output is off, no output is printed from any REDUCE calculation. -The calculations have their usual effects other than printing. Default is -on. -

    -

    -Turn output off if you do not wish to see output when executing -large files, or to save the time REDUCE spends formatting large expressions -for display. Results are still available with -ws, or in their -assigned variables. -

    -

    -

    - - - -OVERVIEW -INDEX

    - - - -OVERVIEW _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When overview is on, the amount of detail reported by the factorizer -switches -trfac and -trallfac is reduced. -

    -

    - - - -PERIOD -INDEX

    - - - -PERIOD _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When period is on, periods are added after integers in -Fortran-compatible output (when -fort is on). There is no effect -when fort is off. Default is on. -

    -

    - - - -PRECISE -INDEX

    - - - -PRECISE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the precise switch is on, simplification of roots of even -powers returns absolute values, a more precise answer mathematically. -Default is on. -

    -

    -

    -examples:

    -

    
    -sqrt(x**2); 
    -
    -  X 
    -
    -
    -(x**2)**(1/4); 
    -
    -  SQRT(X) 
    -
    -
    -on precise; 
    -
    -sqrt(x**2); 
    -
    -  ABS(X) 
    -
    -
    -(x**2)**(1/4); 
    -
    -  SQRT(ABS(X))
    -
    -

    In many types of mathematical work, simplification of powers and s -urds can -proceed by the fastest means of simplifying the exponents arithmetically. -When it is important to you that the positive root be returned, turn -precise on. One situation where this is important is when graphing -square-root expressions such as sqrt(x^2+y^2) to -avoid a spike caused by REDUCE simplifying -sqrt(y^2) to y when x is -zero. -

    -

    -

    - - - -PRET -INDEX

    - - - -PRET _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When pret is on, input is printed in standard REDUCE format and then -evaluated. -

    -

    -

    -examples:

    -

    
    -on pret; 
    -
    - (x+1)^3; 
    -
    -   (x + 1)**3;
    -   3      2
    -  X  + 3*X  + 3*X + 1
    -
    -
    -
    -procedure fac(n);
    -   if not (fixp(n) and n>=0)
    -     then rederr "Choose nonneg. integer only"
    -    else for i := 0:n-1 product i+1;
    - 
    -
    -  procedure fac n;
    -     if not (fixp n and n>=0)
    -       then rederr "Choose nonneg. integer only"
    -      else for i := 0:n - 1 product i + 1;
    -  FAC
    -
    -
    -
    -fac 5; 
    -
    -  fac 5;
    -  120
    -
    -

    Note that all input is converted to lower case except strings (whi -ch keep -the same case) all operators with a single argument have had the -parentheses removed, and all infix operators have had a space added on each -side. In addition, syntactical constructs like -if...then...else are printed in a standard format. -

    -

    -

    - - - -PRI -INDEX

    - - - -PRI _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When pri is on, the declarations -order and -factor can -be used, and the switches -allfac, -div, -rat, -and -revpri take effect when they are on. Default is on -. -

    -

    -Printing of expressions is faster with pri off. The expressions are -then returned in one standard form, without any of the display options that -can be used to feature or display various parts of the expression. You can -also gain insight into REDUCE's representation of expressions with -pri off. -

    -

    -

    - - - -RAISE -INDEX

    - - - -RAISE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When raise is on, lower case letters are automatically converted to -upper case on input. raise is normally on. -

    -

    -This conversion affects the internal representation of the letter, and is -independent of the case with which a letter is printed, which is normally -lower case. -

    -

    -

    - - - -RAT -INDEX

    - - - -RAT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the rat switch is on, and kernels have been selected to display -with the -factor declaration, the denominator is printed with ea -ch -term rather than one common denominator at the end of an expression. -

    -

    -

    -examples:

    -

    
    -(x+1)/x + x**2/sin y;        
    - 
    -
    -                       3
    -  SIN(Y)*X + SIN(Y) + X
    -  ---------------------- factor x; 
    -         SIN(Y)*X
    -
    -
    -(x+1)/x + x**2/sin y;        
    - 
    -
    -   3
    -  X  + X*SIN(Y) + SIN(Y)
    -  ---------------------- on rat;  
    -         X*SIN(Y)
    -
    -
    -(x+1)/x + x**2/sin y;       
    - 
    -
    -     2
    -    X           -1
    -  ------ + 1 + X
    -  SIN(Y)
    -
    -

    The rat switch only has effect when the -pri switch is on. -When pri is off, regardless of the setting of rat, the -printing behavior is as if rat were off. rat only has -effect upon the display of expressions, not their internal form. -

    -

    -

    - - - -RATARG -INDEX

    - - - -RATARG _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When ratarg is on, rational expressions can be given to operators -such as -coeff and -lterm that normally require -polynomials in one of their arguments. When ratarg is off, rational -expressions cause an error message. -

    -

    -

    -examples:

    -

    
    -aa := x/y**2 + 1/x + y/x**2; 
    - 
    -
    -         3      2    3
    -        X  + X*Y  + Y
    -  AA := -------------- 
    -             2  2
    -            X *Y
    -
    -
    -coeff(aa,x); 
    -
    -         3      2    3
    -        X  + X*Y  + Y
    -  ***** -------------- invalid as POLYNOMIAL
    -             2  2
    -            X *Y
    -
    -
    -on ratarg; 
    -
    -coeff(aa,x);                
    - 
    -
    -   Y  1      1
    -  {--,--,0,-----}
    -    2  2    2  2
    -   X  X    X *Y
    -
    -

    - - -RATIONAL -INDEX

    - - - -RATIONAL _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When rational is on, polynomial expressions with rational coefficients - -are produced. -

    -

    -

    -examples:

    -

    
    -x/2 + 3*y/4; 
    -
    -  2*X + 3*Y
    -  --------- 
    -      4
    -
    -
    -(x**2 + 5*x + 17)/2; 
    -
    -   2
    -  X  + 5*X + 17
    -  ------------- 
    -        2
    -
    -
    -on rational; 
    -
    -x/2 + 3y/4; 
    -
    -  1      3
    -  -*(X + -*Y) 
    -  2      2
    -
    -
    -(x**2 + 5*x + 17)/2; 
    -
    -  1   2
    -  -*(X  + 5*X + 17)
    -  2
    -
    -

    By using rational, polynomial expressions with rational -coefficients can be used in some commands that expect polynomials. With -rational off, such a polynomial becomes a rational expression, with -denominator the least common multiple of the denominators of the rational -number coefficients.

    -

    - -

    -

    - - - -RATIONALIZE -INDEX

    - - - -RATIONALIZE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the rationalize switch is on, denominators of rational expressions - -that contain complex numbers or root expressions are simplified by -multiplication by their conjugates. -

    -

    -

    -examples:

    -

    
    -qq := (1+sqrt(3))/(sqrt(3)-7); 
    -
    -        SQRT(3) + 1
    -  QQ := ----------- 
    -        SQRT(3) - 7
    -
    -
    -on rationalize; 
    -
    -qq; 
    -
    -  - 4*SQRT(3) - 5
    -  --------------- 
    -        23
    -
    -
    -2/(4 + 6**(1/3)); 
    -
    -   2/3      1/3
    -  6    - 4*6    + 16
    -  ------------------ 
    -          35
    -
    -
    -(i-1)/(i+3); 
    -
    -  2*I - 1
    -  ------- 
    -     5
    -
    -
    -off rationalize; 
    -
    -(i-1)/(i+3); 
    -
    -  I - 1
    -  ------
    -  I + 3
    -
    -

    - - -RATPRI -INDEX

    - - - -RATPRI _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the ratpri switch is on, rational expressions and fractions are -printed as two lines separated by a fraction bar, rather than in a linear -style. Default is on. -

    -

    -

    -examples:

    -

    
    -3/17; 
    -
    -  3
    -  -- 
    -  17
    -
    -
    -2/b + 3/y; 
    -
    -  3*B + 2*Y
    -  --------- 
    -     B*Y
    -
    -
    -off ratpri; 
    -
    -3/17; 
    -
    -  3/17 
    -
    -
    -2/b + 3/y; 
    -
    -  (3*B + 2*Y)/(B*Y)
    -
    -

    - - -REVPRI -INDEX

    - - - -REVPRI _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When the revpri switch is on, terms are printed in reverse order from -the normal printing order. -

    -

    -

    -examples:

    -

    
    -x**5 + x**2 + 18 + sqrt(y); 
    -
    -             5    2
    -  SQRT(Y) + X  + X  + 18 
    -
    -
    -a + b + c + w; 
    -
    -  A + B + C + W 
    -
    -
    -on revpri; 
    -
    -x**5 + x**2 + 18 + sqrt(y); 
    -
    -        2    5
    -  17 + X  + X  + SQRT(Y) 
    -
    -
    -a + b + c + w; 
    -
    -  W + C + B + A
    -
    -

    Turn revpri on when you want to display a polynomial in a -scending -rather than descending order. -

    -

    -

    - - - -RLISP88 -INDEX

    - - - -RLISP88 _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Rlisp '88 is a superset of the Rlisp that has been traditionally used for -the support of REDUCE. It is fully documented in the book Marti, J.B., -``RLISP '88: An Evolutionary Approach to Program Design and Reuse'', -World Scientific, Singapore (1993). It supports different looping -constructs from the traditional Rlisp, and treats ``-'' as a letter unless -separated by spaces. Turning on the switch rlisp88 converts to -Rlisp '88 parsing conventions in symbolic mode, and enables the use of -Rlisp '88 extensions. Turning off the switch reverts to the traditional -Rlisp and the previous mode ( ( -symbolic or -algebraic) -in force before rlisp88 was turned on. -

    -

    - - - -ROUNDALL -INDEX

    - - - -ROUNDALL _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -In -rounded mode, rational numbers are normally converted -to a -floating point representation. If roundall is off, this conversion -does not occur. roundall is normally on. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -1/2; 
    -
    -  0.5 
    -
    -
    -off roundall; 
    -

    - - -ROUNDBF -INDEX

    - - - -ROUNDBF _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -When -rounded is on, the normal defaults cause underflows to - be -converted to zero. If you really want the small number that results in -such cases, roundbf can be turned on. -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -exp(-100000.1^2); 
    -
    -  0 
    -
    -
    -on roundbf; 
    -
    -exp(-100000.1^2); 
    -
    -  1.18441281937E-4342953505
    -
    -

    If a polynomial is input in -rounded mode at the default -precision into any -roots function, and it is not possible to -represent any of the coefficients of the polynomial precisely in the -system floating point representation, the switch roundbf will be -automatically turned on. All rounded computation will use the internal -bigfloat representation until the user subsequently turns roundbf -off. (A message is output to indicate that this condition is in effect.) -

    -

    -

    - - - -ROUNDED -INDEX

    - - - -ROUNDED _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When rounded is on, floating-point arithmetic is enabled, with -precision initially at a system default value, which is usually 12 digits. -The precise number can be found by the command -precision(0). -

    -examples:

    -

    
    -pi; 
    -
    -  PI 
    -
    -
    -35/217; 
    -
    -  5
    -  -- 
    -  31
    -
    -
    -on rounded; 
    -
    -pi; 
    -
    -  3.14159265359 
    -
    -
    -35/217; 
    -
    -  0.161 
    -
    -
    -sqrt(3); 
    -
    -  1.73205080756
    -
    -

    -

    -If more than the default number of decimal places are required, use the - -precision command to set the required number. -

    -

    -

    - - - -SAVESTRUCTR -INDEX

    - - - -SAVESTRUCTR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When savestructr is on, results of the -structr command are -returned as a list whose first element is the representation for the -expression and the remaining elements are equations showing the -relationships of the generated variables. -

    -

    -

    -examples:

    -

    
    -off exp; 
    -
    -structr((x+y)^3 + sin(x)^2); 
    -
    -  ANS3
    -     where
    -                    3       2
    -        ANS3 := ANS1  + ANS2
    -        ANS2 := SIN(X)
    -        ANS1 := X + Y
    -
    -
    -ans3; 
    -
    -  ANS3 
    -
    -
    -on savestructr; 
    -
    -structr((x+y)^{3} + sin(x)^{2}); 
    -
    -                3       2
    -  ANS3,ANS3=ANS1  + ANS2 ,ANS2=SIN(X),ANS1=X + Y 
    -
    -
    -ans3 where rest ws; 
    -
    -         3         2
    -  (X + Y)  + SIN(X)
    -
    -

    In normal operation, -structr is only a display command. With -savestructr on, you can access the various parts of the expression -produced by structr. -

    -

    -The generic system names use the stem ANS. You can change this to your - -own stem by the command -varname. REDUCE adds integers to this stem -to make unique identifiers. -

    -

    -

    - - - -SOLVESINGULAR -INDEX

    - - - -SOLVESINGULAR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When solvesingular is on, singular or underdetermined systems of -linear equations are solved, using arbitrary real, complex or integer -variables in the answer. Default is on. -

    -

    -

    -examples:

    -

    
    -solve({2x + y,4x + 2y},{x,y}); 
    -
    -         ARBCOMPLEX(1)
    -  {{X= - -------------,Y=ARBCOMPLEX(1)}} 
    -               2
    -
    -
    -solve({7x + 15y - z,x - y - z},{x,y,z}); 
    -
    -
    -      8*ARBCOMPLEX(3)
    -  {{X=----------------
    -            11
    -         3*ARBCOMPLEX(3)
    -    Y= - ----------------
    -               11
    -    Z=ARBCOMPLEX(3)}}
    -
    -
    -off solvesingular; 
    -
    -solve({2x + y,4x + 2y},{x,y}); 
    -
    -  ***** SOLVE given singular equations 
    -
    -
    -solve({7x + 15y - z,x - y - z},{x,y,z}); 
    -
    -
    -  ***** SOLVE given singular equations
    -
    -

    The integer following the identifier -arbcomplex above is assigned by -the system, and serves to identify the variable uniquely. It has no other -significance. -

    -

    -

    - - - -TIME -INDEX

    - - - -TIME _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When time is on, the system time used in executing each REDUCE -statement is printed after the answer is printed. -

    -

    -

    -examples:

    -

    
    -on time; 
    -
    -  Time: 4940 ms 
    -
    -
    -df(sin(x**2 + y),y); 
    -
    -            2
    -  COS(X  + Y )
    -  Time: 180 ms
    -
    -
    -solve(x**2 - 6*y,x); 
    -
    -  {X= - SQRT(Y)*SQRT(6),
    -   X=SQRT(Y)*SQRT(6)}
    -  Time: 320 ms
    -
    -

    When time is first turned on, the time since the beginnin -g of the -REDUCE session is printed. After that, the time used in computation, -(usually in milliseconds, though this is system dependent) is printed after -the results of each command. Idle time or time spent typing in commands is -not counted. If time is turned off, the first reading after it is -turned on again gives the time elapsed since it was turned off. The time -printed is CPU or wall clock time, depending on the system. -

    -

    -

    - - - -TRALLFAC -INDEX

    - - - -TRALLFAC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When trallfac is on, a more detailed trace of factorizer calls is -generated. -

    -

    -The trallfac switch takes precedence over -trfac if they are -both on. trfac gives a factorization trace with less detail in it. -When the -factor switch is on also, all input polynomials are se -nt to -the factorizer automatically and trace information is generated. The - -out command saves the results of the factoring, but no -t the trace. -

    -

    -

    - - - -TRFAC -INDEX

    - - - -TRFAC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When trfac is on, a narrative trace of any calls to the factorizer is -generated. Default is off. -

    -

    -When the switch -factor is on, and trfac is on, every input -polynomial is sent to the factorizer, and a trace generated. With -factor off, only polynomials that are explicitly factored with the -command -factorize generate trace information. -

    -

    -The -out command saves the results of the factoring, but no -t -the trace. The -trallfac switch gives trace information to a -greater level of detail. -

    -

    -

    - - - -TRIGFORM -INDEX

    - - - -TRIGFORM _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When -fullroots is on, -solve will compute the -roots of a cubic or quartic polynomial is closed form. When -trigform is on, the roots will be expressed by trigonometric -forms. Otherwise nested surds are used. Default is on. -

    -

    - - - -TRINT -INDEX

    - - - -TRINT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When trint is on, a narrative tracing various steps in the -integration process is produced. -

    -

    -The -out command saves the results of the integration, but -not the -trace. -

    -

    -

    - - - -TRNONLNR -INDEX

    - - - -TRNONLNR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When trnonlnr is on, a narrative tracing various steps in -the process for solving non-linear equations is produced. -

    -

    -trnonlnrcan only be used after the solve package has been loaded -(e.g., by an explicit call of -load_package). The -out -command saves the results of the equation solving, but not the trace. -

    -

    -

    - - - -VAROPT -INDEX

    - - - -VAROPT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -When varopt is on, the sequence of variables is optimized by - -solve with respect to execution speed. Otherwise, the -sequence -given in the call to -solve is preserved. Default is on. -

    -

    -In combination with the switch -arbvars, varopt can be used -to control variable elimination. -

    -

    -

    -examples:

    -

    
    -off arbvars; 
    -
    -solve({x+2z,x-3y},{x,y,z});				
    -
    -           x      x
    -  		   {{y=-,z= - -}} 
    -           3      2
    -
    -
    -solve({x*y=1,z=x},{x,y,z});				
    -
    -               1
    -  		   {{z=x,y=-}} 
    -               x
    -
    -
    -off varopt; 
    -
    -solve({x+2z,x-3y},{x,y,z});				
    -
    -                       2*z
    -  		   {{x= - 2*z,y= - ---}} 
    -                        3
    -
    -
    -solve({x*y=1,z=x},{x,y,z});				
    -
    -           1
    -  		   {{y=-,x=z}} 
    -           z
    -
    -

    - - -General Switches -INDEX

    -General Switches

    -
  • SWITCHES introduction

    -

  • ALGINT switch

    -

  • ALLBRANCH switch

    -

  • ALLFAC switch

    -

  • ARBVARS switch

    -

  • BALANCED\_MOD switch

    -

  • BFSPACE switch

    -

  • COMBINEEXPT switch

    -

  • COMBINELOGS switch

    -

  • COMP switch

    -

  • COMPLEX switch

    -

  • CREF switch

    -

  • CRAMER switch

    -

  • DEFN switch

    -

  • DEMO switch

    -

  • DFPRINT switch

    -

  • DIV switch

    -

  • ECHO switch

    -

  • ERRCONT switch

    -

  • EVALLHSEQP switch

    -

  • EXP switch

    -

  • EXPANDLOGS switch

    -

  • EZGCD switch

    -

  • FACTOR switch

    -

  • FAILHARD switch

    -

  • FORT switch

    -

  • FORTUPPER switch

    -

  • FULLPREC switch

    -

  • FULLROOTS switch

    -

  • GC switch

    -

  • GCD switch

    -

  • HORNER switch

    -

  • IFACTOR switch

    -

  • INT switch

    -

  • INTSTR switch

    -

  • LCM switch

    -

  • LESSSPACE switch

    -

  • LIMITEDFACTORS switch

    -

  • LIST switch

    -

  • LISTARGS switch

    -

  • MCD switch

    -

  • MODULAR switch

    -

  • MSG switch

    -

  • MULTIPLICITIES switch

    -

  • NAT switch

    -

  • NERO switch

    -

  • NOARG switch

    -

  • NOLNR switch

    -

  • NOSPLIT switch

    -

  • NUMVAL switch

    -

  • OUTPUT switch

    -

  • OVERVIEW switch

    -

  • PERIOD switch

    -

  • PRECISE switch

    -

  • PRET switch

    -

  • PRI switch

    -

  • RAISE switch

    -

  • RAT switch

    -

  • RATARG switch

    -

  • RATIONAL switch

    -

  • RATIONALIZE switch

    -

  • RATPRI switch

    -

  • REVPRI switch

    -

  • RLISP88 switch

    -

  • ROUNDALL switch

    -

  • ROUNDBF switch

    -

  • ROUNDED switch

    -

  • SAVESTRUCTR switch

    -

  • SOLVESINGULAR switch

    -

  • TIME switch

    -

  • TRALLFAC switch

    -

  • TRFAC switch

    -

  • TRIGFORM switch

    -

  • TRINT switch

    -

  • TRNONLNR switch

    -

  • VAROPT switch

    -

  • - - -COFACTOR -INDEX

    - - - -COFACTOR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator cofactor returns the cofactor of the element in row -<row> and column <column> of a -matrix. Errors occur -if <row> or <column> do not evaluate to integer expressions or if -the matrix is not square. -

    -

    -

    -syntax:

    -cofactor(<matrix\_expression>,<row>,<column>) -

    -

    -

    -

    -examples:

    -

    
    -cofactor(mat((a,b,c),(d,e,f),(p,q,r)),2,2); 
    -
    -
    -  A*R - C*P 
    -
    -
    -cofactor(mat((a,b,c),(d,e,f)),1,1); 
    -
    -
    -  ***** non-square matrix
    -
    -

    - - -DET -INDEX

    - - - -DET _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The det operator returns the determinant of its -(square -matrix) argument. -

    -

    -

    -syntax:

    -det(<expression>) or det <expression> -

    -

    -

    -<expression> must evaluate to a square matrix. -

    -

    -

    -examples:

    -

    
    -
    -matrix m,n; 
    -
    -
    -m := mat((a,b),(c,d)); 
    -
    -  M(1,1) := A
    -  M(1,2) := B
    -  M(2,1) := C
    -  M(2,2) := D
    -                                 
    -
    -
    -det m; 
    -
    -  A*D - B*C 
    -
    -
    -n := mat((1,2),(1,2)); 
    -
    -  N(1,1) := 1
    -  N(1,2) := 2
    -  N(2,1) := 1
    -  N(2,2) := 2
    -                                 
    -
    -
    -
    -det(n); 
    -
    -  0 
    -
    -
    -
    -det(5); 
    -
    -  5
    -
    -

    Given a numerical argument, det returns the number. Howev -er, given a -variable name that has not been declared of type matrix, or a non-square -matrix, det returns an error message. -

    -

    -

    - - - -MAT -INDEX

    - - - -MAT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The mat operator is used to represent a two-dimensional - -matrix. -

    -syntax:

    -

    -

    -mat((<expr>{,<expr>}*) {(<expr>{,<expr ->}*)}*) -

    -

    -

    -<expr> may be any valid REDUCE scalar expression. -

    -

    -

    -examples:

    -

    
    -mat((1,2),(3,4)); 
    -
    -  MAT(1,1) := 1
    -  MAT(2,3) := 2
    -  MAT(2,1) := 3
    -  MAT(2,2) := 4
    -
    -
    -mat(2,1); 
    -
    -  ***** Matrix mismatch
    -  Cont? (Y or N) 
    -
    -
    -matrix qt; 
    -
    -qt := ws; 
    -
    -  QT(1,1) := 1
    -  QT(1,2) := 2
    -  QT(2,1) := 3
    -  QT(2,2) := 4 
    -
    -
    -matrix a,b; 
    -
    -a := mat((x),(y),(z)); 
    -
    -  A(1,1) := X
    -  A(2,1) := Y
    -  A(3,1) := Z 
    -
    -
    -b := mat((sin x,cos x,1)); 
    -
    -  B(1,1) := SIN(X)
    -  B(1,2) := COS(X)
    -  B(1,3) := 1
    -
    -

    Matrices need not have a size declared (unlike arrays). mat - -redimensions a matrix variable as needed. It is necessary, of course, -that all rows be the same length. An anonymous matrix, as shown in the -first example, must be named before it can be referenced (note error -message). When using mat to fill a 1 x n -matrix, the row of values must be inside a second set of parentheses, to -eliminate ambiguity. -

    -

    -

    - - - -MATEIGEN -INDEX

    - - - -MATEIGEN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The mateigen operator calculates the eigenvalue equation and the -corresponding eigenvectors of a -matrix. -

    -syntax:

    -

    -

    -mateigen(<matrix-id>,<tag-id>) -

    -

    -

    -<matrix-id> must be a declared matrix of values, and <tag-id> must b -e -a legal REDUCE identifier. -

    -

    -

    -examples:

    -

    
    -aa := mat((2,5),(1,0))$ 
    -
    -mateigen(aa,alpha); 
    -
    -         2
    -  {{ALPHA  - 2*ALPHA - 5,
    -    1,
    -                5*ARBCOMPLEX(1)
    -    MAT(1,1) := ---------------,
    -                   ALPHA - 2
    -    MAT(2,1) := ARBCOMPLEX(1)
    -    }}
    -
    -
    -charpoly := first first ws; 
    -
    -                   2
    -  CHARPOLY := ALPHA  - 2*ALPHA - 5 
    -
    -
    -bb := mat((1,0,1),(1,1,0),(0,0,1))$ 
    -
    -mateigen(bb,lamb); 
    -
    -  {{LAMB - 1,3,
    -    [      0      ]
    -    [ARBCOMPLEX(2)]
    -    [      0      ]
    -    }}
    -
    -

    The mateigen operator returns a list of lists of three -elements. The first element is a square free factor of the characteristic -polynomial; the second element is its multiplicity; and the third element -is the corresponding eigenvector. If the characteristic polynomial can be -completely factored, the product of the first elements of all the sublists -will produce the minimal polynomial. You can access the various parts of -the answer with the usual list access operators. -

    -

    -If the matrix is degenerate, more than one eigenvector can be produced for -the same eigenvalue, as shown by more than one arbitrary variable in the -eigenvector. The identification numbers of the arbitrary complex variables -shown in the examples above may not be the same as yours. Note that since -lambda is a reserved word in REDUCE, you cannot use it as a -tag-id for this operator. -

    -

    -

    - - - -MATRIX -INDEX

    - - - -MATRIX _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -Identifiers are declared to be of type matrix. -

    -syntax:

    -

    -

    -matrix<identifier> _ _ _ option (<index>,<index>) -

    -

    -{,<identifier> _ _ _ option - (<index>,<index>)}* -

    -

    -

    -<identifier> must not be an already-defined operator or array or -the name of a scalar variable. Dimensions are optional, and if used appear -inside parentheses. <index> must be a positive integer. -

    -

    -

    -examples:

    -

    
    -matrix a,b(1,4),c(4,4); 
    -
    -b(1,1); 
    -
    -  0 
    -
    -
    -a(1,1); 
    -
    -  ***** Matrix A not set 
    -
    -
    -a := mat((x0,y0),(x1,y1)); 
    -
    -  A(1,1) := X0
    -  A(1,2) := Y0
    -  A(2,1) := X0
    -  A(2,2) := X1
    -
    -
    -length a; 
    -
    -  {2,2} 
    -
    -
    -b := a**2; 
    -
    -              2
    -  B(1,1) := X0  + X1*Y0
    -  B(1,2) := Y0*(X0 + Y1)
    -  B(2,1) := X1*(X0 + Y1)
    -                      2
    -  B(2,2) := X1*Y0 + Y1
    -
    -

    When a matrix variable has not been dimensioned, matrix elements c -annot be -referenced until the matrix is set by the -mat operator. When a -matrix is dimensioned in its declaration, matrix elements are set to 0. -Matrix elements cannot stand for themselves. When you use -let on -a matrix element, there is no effect unless the element contains a -constant, in which case an error message is returned. The same behavior -occurs with -clear. Do <not> use -clear to try to -set a matrix element to 0. -let statements can be applied to -matrices as a whole, if the right-hand side of the expression is a matrix -expression, and the left-hand side identifier has been declared to be a matrix. - -

    -

    -Arithmetical operators apply to matrices of the correct dimensions. The -operators + and - can be used with matrices of the same -dimensions. The operator * can be used to multiply -m x n matrices by n x p -matrices. Matrix multiplication is non-commutative. Scalars can also be -multiplied with matrices, with the result that each element of the matrix -is multiplied by the scalar. The operator / applied to two -matrices computes the first matrix multiplied by the inverse of the -second, if the inverse exists, and produces an error message otherwise. -Matrices can be divided by scalars, which results in dividing each element -of the matrix. Scalars can also be divided by matrices when the matrices -are invertible, and the result is the multiplication of the scalar by the -inverse of the matrix. Matrix inverses can by found by 1/A or -/A, where A is a matrix. Square matrices can be raised to -positive integer powers, and also to negative integer powers if they are -nonsingular. -

    -

    -When a matrix variable is assigned to the results of a calculation, the -matrix is redimensioned if necessary. -

    -

    -

    - - - -NULLSPACE -INDEX

    - - - -NULLSPACE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -nullspace(<matrix\_expression>) -

    -

    -

    -<nullspace> calculates for its -matrix argument, -a, a list of -linear independent vectors (a basis) whose linear combinations satisfy the -equation a x = 0. The basis is provided in a form such that as many -upper components as possible are isolated. -

    -

    -

    -examples:

    -

    
    -nullspace mat((1,2,3,4),(5,6,7,8)); 
    -
    -
    -         {
    -           [ 1  ]
    -           [    ]
    -           [ 0  ]
    -           [    ]
    -           [ - 3]
    -           [    ]
    -           [ 2  ]
    -           ,
    -           [ 0  ]
    -           [    ]
    -           [ 1  ]
    -           [    ]
    -           [ - 2]
    -           [    ]
    -           [ 1  ]
    -          }
    -
    -

    Note that with b := nullspace a, the expression lengt -h b is -the nullity/ of A, and that second length a - length b -calculates the rank/ of A. The rank of a matrix expression can -also be found more directly by the -rank operator. -

    -

    -In addition to the REDUCE matrix form, nullspace accepts as input a -matrix given as a -list of lists, that is interpreted as a row matrix. If - -that form of input is chosen, the vectors in the result will be -represented by lists as well. This additional input syntax facilitates -the use of nullspace in applications different from classical linear -algebra. -

    -

    -

    - - - -RANK -INDEX

    - - - -RANK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -rank(<matrix\_expression>) -

    -

    -

    -rankcalculates the rank of its matrix argument. -

    -

    -

    -examples:

    -

    
    -rank mat((a,b,c),(d,e,f)); 
    -
    -  2
    -
    -

    The argument to rank can also be a -list of lists, interpreted -either as a row matrix or a set of equations. If that form of input is -chosen, the vectors in the result will be represented by lists as well. -This additional input syntax facilitates the use of rank in -applications different from classical linear algebra. -

    -

    -

    - - - -TP -INDEX

    - - - -TP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The tp operator returns the transpose of its -matrix - argument. -

    -syntax:

    -

    -

    -tp<identifier> or tp(<identifier>) -

    -

    -

    -<identifier> must be a matrix, which either has had its dimensions set -in its declaration, or has had values put into it by mat. -

    -

    -

    -examples:

    -

    
    -matrix m,n; 
    -
    -m := mat((1,2,3),(4,5,6))$ 
    -
    -n := tp m; 
    -
    -  N(1,1) := 1
    -  N(1,2) := 4
    -  N(2,1) := 2
    -  N(2,2) := 5
    -  N(3,1) := 3
    -  N(3,2) := 6
    -
    -

    In an assignment statement involving tp, the matrix ident -ifier on the -left-hand side is redimensioned to the correct size for the transpose. -

    -

    -

    - - - -TRACE -INDEX

    - - - -TRACE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The trace operator finds the trace of its -matrix argument. -

    -syntax:

    -

    -

    -trace(<expression>) or trace <simple\_expression> - -

    -

    -

    -<expression> or <simple\_expression> must evaluate to a square -matrix. -

    -

    -

    -examples:

    -

    
    -matrix a; 
    -
    -a := mat((x1,y1),(x2,y2))$ 
    -
    -trace a; 
    -
    -  X1 + Y2
    -
    -

    The trace is the sum of the entries along the diagonal of a square - matrix. -Given a non-matrix expression, or a non-square matrix, trace returns -an error message. -

    -

    -

    - - - -Matrix Operations -INDEX

    -Matrix Operations

    -
  • COFACTOR operator

    -

  • DET operator

    -

  • MAT operator

    -

  • MATEIGEN operator

    -

  • MATRIX declaration

    -

  • NULLSPACE operator

    -

  • RANK operator

    -

  • TP operator

    -

  • TRACE operator

    -

  • - - -Groebner_bases -INDEX

    - - - -GROEBNER BASES _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -The GROEBNER package calculates Groebner bases using the - Buchberger algorithm and provides related algorithms -for arithmetic with ideal bases, such as ideal quotients, -Hilbert polynomials ( Hollmann algorithm), -basis conversion ( - Faugere-Gianni-Lazard-Mora algorithm), independent -variable set ( Kredel-Weispfenning algorithm). -

    -

    -Some routines of the Groebner package are used by -solve - in -that context the package is loaded automatically. However, if you -want to use the package by explicit calls you must load it by -

    
    -    load_package groebner;
    -

    -

    -For the common parameter setting of most operators in this package -see -ideal parameters. -

    -

    - - - -Ideal_Parameters -INDEX

    - - - -IDEAL PARAMETERS

    -

    - -

    -

    -Most operators of the Groebner package compute expressions in a -polynomial ring which given as <R>[<var>,<var>,...] where -<R> is the current REDUCE coefficient domain. All algebraically -exact domains of REDUCE are supported. The package can operate over rings -and fields. The operation mode is distinguished automatically. In -general the ring mode is a bit faster than the field mode. The factoring -variant can be applied only over domains which allow you factoring of -multivariate polynomials. -

    -

    -The variable sequence <var> is either declared explicitly as argument -in form of a -list in -torder, or it is extracted -automatically from the expressions. In the second case the current REDUCE -system order is used (see -korder) for arranging the variables. -If some kernels should play the role of formal parameters (the ground -domain <R> then is the polynomial ring over these), the variable -sequences must be given explicitly. -

    -

    -All REDUCE -kernels can be used as variables. But please note, -that all variables are considered as independent. E.g. when using -sin(a) and cos(a) as variables, the basic relation -sin(a)^2+cos(a)^2-1=0 must be explicitly added to an equation set -because the Groebner operators don't include such knowledge automatically. -

    -

    -The terms (monomials) in polynomials are arranged according to the current - -term order. Note that the algebraic properties of the -computed -results only are valid as long as neither the ordering nor the variable -sequence changes. -

    -

    -The input expressions <exp> can be polynomials <p>, rational -functions <n>/<d> or equations <lh>=<rh> built from -polynomials or rational functions. Apart from the tracing -algorithms -groebnert and -preducet, where the equations -have a specific meaning, equations are converted to simple expressions by -taking the difference of the left-hand and right-hand sides -<lh>-<rh>=><p>. Rational functions are converted to -polynomials by converting the expression to a common denominator form -first, and then using the numerator only <n>=><p>. So eventual -zeros of the denominators are ignored. -

    -

    -A basis on input or output of an algorithm is coded as -list of -expressions {<exp>,<exp>,...} . -

    -

    - - - -Term_order -INDEX

    - - - -TERM ORDER _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -

    -

    -For all Groebner operations the polynomials are -represented in distributive form: a sum of terms (monomials). -The terms are ordered corresponding to the actual term order -which is set by the -torder operator, and to the -actual variable sequence which is either given as explicit -parameter or by the system -kernel order. -

    -

    - - - -torder -INDEX

    - - - -TORDER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator torder sets the actual variable sequence and term order. -

    -

    -1. simple term order: -

    -syntax:

    -

    -

    -torder(<vl>, <m>) -

    -

    -

    -where <vl> is a -list of variables ( -kernels) and -<m> is the name of a simple -term order mode - -lex term order, -gradlex term order, - -revgradlex term order or another implemented parameter -less mode. -

    -

    -2. stepped term order: -

    -syntax:

    -

    -

    -torder(<vl>,<m>,<n>) -

    -

    -

    -

    -where <m> is the name of a two step term order, one of - -gradlexgradlex term order, -gradlexrevgradlex term order, - -lexgradlex term order or -lexrevgradlex term order, and -<n> is a positive integer. -

    -

    -3. weighted term order -

    -syntax:

    -

    -

    -torder(<vl>, weighted, <n>,<n>,...); -

    -

    -

    -where the <n> are positive integers, see -weighted term order. -

    -

    -4. matrix term order -

    -syntax:

    -

    -

    -torder(<vl>, matrix, <m>); -

    -

    -

    -where <m> is a matrix with integer elements, see - -torder_compile. -

    -

    -5. compiled term order -

    -syntax:

    -

    -

    -torder(<vl>, co); -

    -

    -

    -where <co> is the name of a routine generated by - -torder_compile. -

    -

    -tordersets the variable sequence and the term order mode. If the -an empty list is used as variable sequence, the automatic variable extraction -is activated. The defaults are the empty variable list an the - -lex term order. -The previous setting is returned as a list. -

    -

    -Alternatively to the above syntax the arguments of torder may be -collected in a -list and passed as one argument to -torder. -

    -

    - - - -torder_compile -INDEX

    - - - -TORDER_COMPILE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -A matrix can be converted into -a compilable LISP program for faster execution by using -

    -syntax:

    -

    -

    -torder_compile(<name>,<mat>) -

    -

    -

    -where <name> is an identifier for the new term order and <mat> -is an integer matrix to be used as -matrix term order. Afterwards -the term order can be activated by using <name> in a -torder -expression. The resulting program is compiled if the switch -comp -is on, or if the torder_compile expression is part of a compiled -module. -

    -

    - - - -lex_term_order -INDEX

    - - - -LEX TERM ORDER

    -

    - -

    -

    -The terms are ordered lexicographically: two terms t1 t2 -are compared for their degrees -along the fixed variable sequence: t1 is higher than t2 -if the first different degree is higher in t1. -This order has the elimination property -for groebner basis calculations. -If the ideal has a univariate polynomial in the last -variable the groebner basis will contain -such polynomial. Lex is best -suited for solving of polynomial equation systems. -

    -

    - - - -gradlex_term_order -INDEX

    - - - -GRADLEX TERM ORDER

    -

    - -

    -

    -The terms are ordered first with their total -degree, and if the total degree is identical -the comparison is -lex term order. -With groebner basis calculations this term order -produces polynomials of lowest degree. -

    -

    - - - -revgradlex_term_order -INDEX

    - - - -REVGRADLEX TERM ORDER

    -

    - -

    -

    -The terms are ordered first with their total -degree (degree sum), and if the total degree is identical -the comparison is the inverse of -lex term order. -With -groebner and -groebnerf -calculations this term order -is similar to -gradlex term order; it is known -as most efficient ordering with respect to computing time. -

    -

    - - - -gradlexgradlex_term_order -INDEX

    - - - -GRADLEXGRADLEX TERM ORDER

    -

    - -

    -

    -The terms are separated into two groups where the -second parameter of the -torder call determines -the length of the first group. For a comparison first -the total degrees of both variable groups are compared. -If both are equal - -gradlex term order comparison is applied to the first - -group, and if that does not decide -gradlex term order -is applied for the second group. This order has the elimination -property for the variable groups. It can be used e.g. for -separating variables from parameters. -

    -

    - - - -gradlexrevgradlex_term_order -INDEX

    - - - -GRADLEXREVGRADLEX TERM ORDER

    -

    - -

    -

    -Similar to -gradlexgradlex term order, but using - -revgradlex term order for the second group. -

    -

    - - - -lexgradlex_term_order -INDEX

    - - - -LEXGRADLEX TERM ORDER

    -

    - -

    -

    -Similar to -gradlexgradlex term order, but using - -lex term order for the first group. -

    -

    - - - -lexrevgradlex_term_order -INDEX

    - - - -LEXREVGRADLEX TERM ORDER

    -

    - -

    -

    -Similar to -gradlexgradlex term order, but using - -lex term order for the first group - -revgradlex term order for the second group. -

    -

    - - - -weighted_term_order -INDEX

    - - - -WEIGHTED TERM ORDER

    -

    - -

    -

    -establishes a graduated ordering -similar to -gradlex term order, where the exponents first are -multiplied by the given weights. If there are less weight values than -variables, the weight list is extended by ones. If the weighted degree -comparison is not decidable, the - -lex term order is used. -

    -

    - - - -graded_term_order -INDEX

    - - - -GRADED TERM ORDER

    -

    - -

    -

    -establishes a cascaded term ordering: first a graduated ordering -similar to -gradlex term order is used, where the exponents first -are -multiplied by the given weights. If there are less weight values than -variables, the weight list is extended by ones. If the weighted degree -comparison is not decidable, the term ordering described in the following -parameters of the -torder command is used. -

    -

    - - - -matrix_term_order -INDEX

    - - - -MATRIX TERM ORDER

    -

    - -

    -

    -Any arbitrary term order mode can be installed by a matrix with -integer elements where the row length corresponds to the variable -number. The matrix must have at least as many rows as columns. -It must have full rank, and the top nonzero element of each column -must be positive. -

    -

    -The matrix term order mode -defines a term order where the exponent vectors of the monomials are -first multiplied by the matrix and the resulting vectors are compared -lexicographically. -

    -

    -If the switch -comp is on, the matrix is converted into -a compiled LISP program for faster execution. A matrix can also be -compiled explicitly, see -torder_compile. -

    -

    - - - -Term order -INDEX

    -Term order

    -
  • Term order introduction

    -

  • torder operator

    -

  • torder_compile operator

    -

  • lex term order concept

    -

  • gradlex term order concept

    -

  • revgradlex term order concept

    -

  • gradlexgradlex term order concept

    -

  • gradlexrevgradlex term order concept

    -

  • lexgradlex term order concept

    -

  • lexrevgradlex term order concept

    -

  • weighted term order concept

    -

  • graded term order concept

    -

  • matrix term order concept

    -

  • - - -gvars -INDEX

    - - - -GVARS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -gvars({<exp>,<exp>,... }) -

    -

    -

    -

    -where <exp> are expressions or -equations. -

    -

    -gvarsextracts from the expressions the -kernels -which can -play the role of variables for a -groebner or -groebnerf -calculation. -

    -

    - - - -groebner -INDEX

    - - - -GROEBNER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -groebner({exp, ...}) -

    -

    -

    -

    -where {exp, ... } is a list of -expressions or equations. -

    -

    -The operator groebner implements the Buchberger algorithm -for computing Groebner bases for a given set of -expressions with respect to the given set of variables in the order -given. As a side effect, the sequence of variables is stored as a REDUCE list -in the shared variable -gvarslast - this is important in cases -where the algorithm rearranges the variable sequence because -groebopt -is on. -

    -

    -

    -examples:

    -

    
    -   groebner({x**2+y**2-1,x-y}) 
    -
    -  {X - Y,2*Y**2 -1}
    -
    -

    -related:

    -

    - _ _ _ -groebnerfoperator -

    - _ _ _ -gvarslast variable -

    - _ _ _ -groebopt switch -

    - _ _ _ -groebprereduce switch -

    - _ _ _ -groebfullreduction switch -

    - _ _ _ -gltbasis switch -

    - _ _ _ -gltb variable -

    - _ _ _ -glterms variable -

    - _ _ _ -groebstat switch -

    - _ _ _ -trgroeb switch -

    - _ _ _ -trgroebs switch -

    - _ _ _ -groebprot switch -

    - _ _ _ -groebprotfile variable -

    - _ _ _ -groebnert operator -

    -

    -

    - - - -groebner_walk -INDEX

    - - - -GROEBNER\_WALK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator groebner_walk computes a lex basis -from a given graded (or weighted) one. -

    -syntax:

    -

    -

    -groebner_walk(<g>) -

    -

    -

    -where <g> is a graded basis (or weighted basis -with a weight vector with one repeated element) of the polynomial ideal. -Groebner_walk computes a sequence of monomial bases, each -time lifting the full system to a complete basis. Groebner_walk -should be called only in cases, where a normal kex computation -would take too much computer time. -

    -

    -The operator -torder has to be called before in order to -define the variable sequence and the term order mode of <g>. -

    -

    -The variable -gvarslast is not set. -

    -

    -Do not call groebner_walk with on -groebopt. -

    -

    -Groebner_walkincludes some overhead (such as e. g. -computation with division). On the other hand, sometimes -groebner_walk is faster than a direct lex computation. -

    -

    - - - -groebopt -INDEX

    - - - -GROEBOPT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -If groebopt is set ON, the sequence of variables is optimized -with respect to execution speed of groebner calculations; -note that the final list of variables is available in -gvarslast. -By default groebopt is off, conserving the original variable -sequence. -

    -

    -An explicitly declared dependency using the -depend -declaration supersedes the variable optimization. -

    -examples:

    -

    -

    -guarantees that a will be placed in front of x and y. -

    -

    - - - -gvarslast -INDEX

    - - - -GVARSLAST _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -After a -groebner or -groebnerf calculation -the actual variable sequence is stored in the variable -gvarslast. If -groebopt is on -gvarslast shows the variable sequence after reordering. -

    -

    - - - -groebprereduce -INDEX

    - - - -GROEBPREREDUCE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -If groebprereduce set ON, -groebner -and -groebnerf try to simplify the -input expressions: if the head term of an input expression is a -multiple of the head term of another expression, it can be reduced; -these reductions are done cyclicly as long as possible in order to -shorten the main part of the algorithm. -

    -

    -By default groebprereduce is off. -

    -

    - - - -groebfullreduction -INDEX

    - - - -GROEBFULLREDUCTION _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -If groebfullreduction set off, the polynomial reduction steps during - -groebner and -groebnerf are limited to the pure head -term reduction; subsequent terms are reduced otherwise. -

    -

    -By default groebfullreduction is on. -

    -

    - - - -gltbasis -INDEX

    - - - -GLTBASIS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -If gltbasis set on, the leading terms of the result basis -of a -groebner or -groebnerf calculation are -extracted. They are collected as a basis of monomials, which is -available as value of the global variable -gltb. -

    -

    - - - -gltb -INDEX

    - - - -GLTB _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -See -gltbasis -

    -

    - - - -glterms -INDEX

    - - - -GLTERMS _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -If the expressions in a -groebner or -groebnerf -call contain parameters (symbols -which are not member of the variable list), the share variable -glterms is set to a list of expression which during the -calculation were assumed to be nonzero. The calculated bases -are valid only under the assumption that all these expressions do -not vanish. -

    -

    - - - -groebstat -INDEX

    - - - -GROEBSTAT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -if groebstat is on, a summary of the - -groebner or -groebnerf computation is printed -at the end -including the computing time, the number of intermediate -H polynomials and the counters for the criteria hits. -

    -

    - - - -trgroeb -INDEX

    - - - -TRGROEB _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -if trgroeb is on, intermediate H polynomials are -printed during a -groebner -or -groebnerf calculation. -

    -

    - - - -trgroebs -INDEX

    - - - -TRGROEBS _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -if trgroebs is on, intermediate H and S polynomials are -printed during a -groebner or -groebnerf calculation. -

    -

    - - - -gzerodim_ -INDEX

    - - - -GZERODIM? _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -gzerodim!?(<basis>) -

    -

    -

    -

    -where <bas> is a Groebner basis in the current - -term order with the actual setting -(see -ideal parameters). -

    -

    -gzerodim!?tests whether the ideal spanned by the given basis -has dimension zero. If yes, the number of zeros is returned, - -nil otherwise. -

    -

    - - - -gdimension -INDEX

    - - - -GDIMENSION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gdimension(<bas>) -

    -

    -

    -

    -where <bas> is a -groebner basis in the current -term order (see -ideal parameters). -gdimension computes the dimension of the ideal -spanned by the given basis and returns the dimension as an integer -number. The Kredel-Weispfenning algorithm is used: the dimension -is the length of the longest independent variable set, -see -gindependent_sets -

    -

    - - - -gindependent_sets -INDEX

    - - - -GINDEPENDENT\_SETS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gindependent_sets(<bas>) -

    -

    -

    -

    -where <bas> is a -groebner basis in any term order -(which must be the current term order) with the specified -variables (see -ideal parameters). -

    -

    -Gindependent_setscomputes the maximal -left independent variable sets of the ideal, that are -the variable sets which play the role of free parameters in the -current ideal basis. Each set is a list which is a subset of the -variable list. The result is a list of these sets. For an -ideal with dimension zero the list is empty. -The Kredel-Weispfenning algorithm is used. -

    -

    - - - -dd_groebner -INDEX

    - - - -DD_GROEBNER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -For a homogeneous system of polynomials under - -graded term order, -gradlex term order, - -revgradlex term order

    -

    -or -weighted term order -a Groebner Base can be computed with limiting the grade -of the intermediate S polynomials: -

    -syntax:

    -

    -

    -dd_groebner(<d1>,<d2>,<plist>) -

    -

    -

    -where <d1> is a non negative integer and <d2> is an integer -or ``infinity". A pair of polynomials is considered -only if the grade of the lcm of their head terms is between -<d1> and <d2>. -For the term orders graded or weighted the (first) weight -vector is used for the grade computation. Otherwise the total -degree of a term is used. -

    -

    - - - -glexconvert -INDEX

    - - - -GLEXCONVERT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -glexconvert(<bas>[,<vars>][,MAXDEG=<mx>] -[,NEWVARS=<nv>]) -

    -

    -

    -

    -where <bas> is a -groebner basis -in the current term order, <mx> (optional) is a positive -integer and <nvl> (optional) is a list of variables -(see -ideal parameters). -

    -

    -The operator glexconvert converts the basis -of a zero-dimensional ideal (finite number -of isolated solutions) from arbitrary ordering into a basis under - -lex term order. -

    -

    -The parameter <newvars> defines the new variable sequence. -If omitted, the -original variable sequence is used. If only a subset of variables is -specified here, the partial ideal basis is evaluated. -

    -

    -If <newvars> is a list with one element, the minimal - univariate polynomial is computed. -

    -

    -<maxdeg> is an upper limit for the degrees. The algorithm stops with -an error message, if this limit is reached. -

    -

    -A warning occurs, if the ideal is not zero dimensional. -

    -

    -During the call the term order of the input basis must -be active. -

    -

    -

    - - - -greduce -INDEX

    - - - -GREDUCE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -greduce(exp, {exp1, exp2, ... , expm}) -

    -

    -

    -

    -where exp is an expression, and {exp1, exp2, ... , expm} is -a list of expressions or equations. -

    -

    -greduceis functionally equivalent with a call to - -groebner and then a call to -preduce. -

    -

    - - - -preduce -INDEX

    - - - -PREDUCE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -preduce(<p>, {<exp>, ... }) -

    -

    -

    -

    -where <p> is an expression, and {<exp>, ... } is -a list of expressions or equations. -

    -

    -Preducecomputes the remainder of exp -modulo the given set of polynomials resp. equations. -This result is unique (canonical) only if the given set -is a groebner basis under the current -term order -

    -

    -see also: -preducet operator. -

    -

    - - - -idealquotient -INDEX

    - - - -IDEALQUOTIENT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -idealquotient({<exp>, ...}, <d>) -

    -

    -

    -

    -where {<exp>,...} is a list of -expressions or equations, <d> is a single expression or equation. -

    -

    -Idealquotientcomputes the ideal quotient: -ideal spanned by the expressions {<exp>,...} -divided by the single polynomial/expression <f>. The result -is the -groebner basis of the quotient ideal. -

    -

    - - - -hilbertpolynomial -INDEX

    - - - -HILBERTPOLYNOMIAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -hilbertpolynomial(<bas>) -

    -

    -

    -

    -where <bas> is a -groebner basis in the -current -term order. -

    -

    -The degree of the Hilbert polynomial is the -dimension of the ideal spanned by the basis. For an -ideal of dimension zero the Hilbert polynomial is a -constant which is the number of common zeros of the -ideal (including eventual multiplicities). -The Hollmann algorithm is used. -

    -

    - - - -saturation -INDEX

    - - - -SATURATION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -saturation({<exp>, ...}, <p>) -

    -

    -

    -

    -where {<exp>,...} is a list of -expressions or equations, <p> is a single polynomial. -

    -

    -Saturationcomputes the quotient of the polynomial <p> -and a power (with unknown but finite exponent) of the ideal built from -{<exp>, ...}. The result is the computed quotient. Saturation -calls -idealquotient several times until the result does not -change -any more. -

    -

    - - - -Basic Groebner operators -INDEX

    -Basic Groebner operators

    -
  • gvars operator

    -

  • groebner operator

    -

  • groebner\_walk operator

    -

  • groebopt switch

    -

  • gvarslast variable

    -

  • groebprereduce switch

    -

  • groebfullreduction switch

    -

  • gltbasis switch

    -

  • gltb variable

    -

  • glterms variable

    -

  • groebstat switch

    -

  • trgroeb switch

    -

  • trgroebs switch

    -

  • gzerodim? operator

    -

  • gdimension operator

    -

  • gindependent\_sets operator

    -

  • dd_groebner operator

    -

  • glexconvert operator

    -

  • greduce operator

    -

  • preduce operator

    -

  • idealquotient operator

    -

  • hilbertpolynomial operator

    -

  • saturation operator

    -

  • - - -groebnerf -INDEX

    - - - -GROEBNERF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -groebnerf({<exp>, ...}[,{},{<nz>, ... }]); -

    -

    -

    -

    -where {<exp>, ... } is a list of expressions or -equations, and {<nz>,... } is -an optional list of polynomials to be considered as non zero -for this calculation. An empty list must be passed as second argument -if the non-zero list is specified. -

    -

    -groebnerftries to separate polynomials into individual factors and -to branch the computation in a recursive manner (factorization tree). -The result is a list of partial Groebner bases. -Multiplicities (one factor with a higher power, the same partial basis -twice) are deleted as early as possible in order to speed up the -calculation. -

    -

    -The third parameter of groebnerf declares some polynomials -nonzero. If any of these is found in a branch of the calculation -the branch is canceled. -

    -

    -

    -example:

    -

    
    -groebnerf({ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3,  
    -            2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3, 
    -            x**3*y+x**2*y+3*x**3+2*x**2 }, {y,x});
    -
    -       {{Y - 3,X},
    -
    -                      2
    -    {2*Y + 2*X - 1,2*X  - 5*X - 5}}
    -

    -related:

    -

    - _ _ _ -groebresmaxvariable -

    - _ _ _ -groebmonfac variable -

    - _ _ _ -groebrestriction variable -

    - _ _ _ -groebner operator -

    - _ _ _ -gvarslast variable -

    - _ _ _ -groebopt switch -

    - _ _ _ -groebprereduce switch -

    - _ _ _ -groebfullreduction switch -

    - _ _ _ -gltbasis switch -

    - _ _ _ -gltb variable -

    - _ _ _ -glterms variable -

    - _ _ _ -groebstat switch -

    - _ _ _ -trgroeb switch -

    - _ _ _ -trgroebs switch -

    - _ _ _ -groebnert operator -

    -

    -

    - - - -groebmonfac -INDEX

    - - - -GROEBMONFAC _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -The variable groebmonfac is connected to -the handling of monomial factors. A monomial factor is a product -of variable powers as a factor, e.g. x**2*y in x**3*y - -2*x**2*y**2. A monomial factor represents a solution of the type - x = 0 or y = 0 with a certain multiplicity. With - -groebnerf the multiplicity of monomial factors is lowe -red -to the value of the shared variable groebmonfac -which by default is 1 (= monomial factors remain present, but their -multiplicity is brought down). With -groebmonfac:= 0 -the monomial factors are suppressed completely. -

    -

    - - - -groebresmax -INDEX

    - - - -GROEBRESMAX _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -The variable groebresmax -controls during -groebnerf calculations -the number of partial results. Its default value is 300. If -more partial results are calculated, the calculation is -terminated. -

    -

    - - - -groebrestriction -INDEX

    - - - -GROEBRESTRICTION _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -During -groebnerf calculations -irrelevant branches can be excluded -by setting the variable groebrestriction. The -following restrictions are implemented: -

    -syntax:

    -

    -

    -groebrestriction:= nonnegative -

    -

    -groebrestriction:= positive -

    -

    -groebrestriction:= zeropoint -

    -

    -

    -With nonnegative branches are excluded where one -polynomial has no nonnegative real zeros; with positive -the restriction is sharpened to positive zeros only. -The restriction zeropoint excludes all branches -which do not have the origin (0,0,...0) in their solution -set. -

    -

    - - - -Factorizing Groebner bases -INDEX

    -Factorizing Groebner bases

    -
  • groebnerf operator

    -

  • groebmonfac variable

    -

  • groebresmax variable

    -

  • groebrestriction variable

    -

  • - - -groebprot -INDEX

    - - - -GROEBPROT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -If groebprot is ON the computation steps during - -preduce, -greduce and -groebner -are collected in a list which is assigned to the variable - -groebprotfile. -

    -

    - - - -groebprotfile -INDEX

    - - - -GROEBPROTFILE _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -See -groebprot switch. -

    -

    - - - -groebnert -INDEX

    - - - -GROEBNERT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -groebnert({<v>=<exp>,...}) -

    -

    -

    -

    -where <v> are -kernels (simple or indexed variables), -<exp> are polynomials. -

    -

    -groebnertis functionally equivalent to a -groebner -call for {<exp>,...}, but the result is a set of -equations where the left-hand sides are the basis elements while -the right-hand sides are the same values expressed as combinations -of the input formulas, expressed in terms of the names <v> -

    -example:

    -

    
    -    groebnert({p1=2*x**2+4*y**2-100,p2=2*x-y+1});
    -
    -   GB1 := {2*X - Y + 1=P2,
    -
    -           2
    -        9*Y  - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2}
    -

    -

    - - - -preducet -INDEX

    - - - -PREDUCET _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -syntax:

    -

    -

    -preduce(<p>,{<v>=<exp>...}) -

    -

    -

    -where <p> is an expression, <v> are kernels -(simple or indexed variables), -exp are polynomials. -

    -

    -preducetcomputes the remainder of <p> modulo {<exp>,...} -similar to -preduce, but the result is an equation -which expresses the remainder as combination of the polynomials. -

    -example:

    -

    
    -                             
    -   GB2 := {G1=2*X - Y + 1,G2=9*Y**2  - 2*Y - 199}
    -   preducet(q=x**2,gb2);
    -
    - - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2
    -

    -

    - - - -Tracing Groebner bases -INDEX

    -Tracing Groebner bases

    -
  • groebprot switch

    -

  • groebprotfile variable

    -

  • groebnert operator

    -

  • preducet operator

    -

  • - - -Module -INDEX

    - - - -MODULE

    -

    - -Given a polynomial ring, e.g. R=Z[x,y,...] and an integer n>1. -The vectors with n elements of R form a free MODULE under -elementwise addition and multiplication with elements of R. -

    -

    -For a submodule given by a finite basis a Groebner basis -can be computed, and the facilities of the GROEBNER package -are available except the operators -groebnerf -and groesolve. The vectors are encoded using auxiliary -variables which represent the unit vectors in the module. -These are declared in the share variable -gmodule. -

    -

    - - - -gmodule -INDEX

    - - - -GMODULE _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -The vectors of a free -module over a polynomial ring R -are encoded as linear combinations with unit vectors of -M which are represented by auxiliary variables. These -must be collected in the variable gmodule before -any call to an operator of the Groebner package. -

    -

    -

    
    -   torder({x,y,v1,v2,v3})$
    -   gmodule := {v1,v2,v3}$
    -   g:=groebner({x^2*v1 + y*v2,x*y*v1 - v3,2y*v1 + y*v3});
    -

    compute the Groebner basis of the submodule -

    -

    -

    
    -      ([x^2,y,0],[xy,0,-1],[0,2y,y])
    -

    The members of the list gmodule are automatically -appended to the end of the variable list, if they are not -yet members there. They take part in the actual term ordering. -

    -

    - - - -Groebner Bases for Modules -INDEX

    -Groebner Bases for Modules

    -
  • Module concept

    -

  • gmodule variable

    -

  • - - -gsort -INDEX

    - - - -GSORT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gsort(<p>) -

    -

    -

    -where <p> is a polynomial or a list of polynomials. -

    -

    -The polynomials are reordered and sorted corresponding to -the current -term order. -

    -examples:

    -

    
    -
    -  torder lex;
    -  
    -  gsort(x**2+2x*y+y**2,{y,x}); 
    -
    -  y**2+2y*x+x**2
    -
    -

    -

    - - - -gsplit -INDEX

    - - - -GSPLIT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gsplit(<p>[,<vars>]); -

    -

    -

    -where <p> is a polynomial or a list of polynomials. -

    -

    -The polynomial is reordered corresponding to the -the current -term order and then -separated into leading term and reductum. Result is -a list with the leading term as first and the reductum -as second element. -

    -examples:

    -

    
    -
    -  torder lex;
    -  
    -  gsplit(x**2+2x*y+y**2,{y,x}); 
    -
    -  {y**2,2y*x+x**2}
    -
    -

    -

    - - - -gspoly -INDEX

    - - - -GSPOLY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gspoly(<p1>,<p2>); -

    -

    -

    -

    -where <p1> and <p2> are polynomials. -

    -

    -The subtraction polynomial of p1 and p2 is computed -corresponding to the method of the Buchberger algorithm for -computing groebner bases: p1 and p2 are multiplied -with terms such that when subtracting them the leading terms -cancel each other. -

    -

    - - - -Computing with distributive polynomials -INDEX

    -Computing with distributive polynomials

    -
  • gsort operator

    -

  • gsplit operator

    -

  • gspoly operator

    -

  • - - -Groebner package -INDEX

    -Groebner package

    -
  • Groebner bases introduction

    -

  • Ideal Parameters concept

    -

  • Term order

    -

  • Basic Groebner operators

    -

  • Factorizing Groebner bases

    -

  • Tracing Groebner bases

    -

  • Groebner Bases for Modules

    -

  • Computing with distributive polynomials

    -

  • - - -HEPHYS -INDEX

    - - - -HEPHYS _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -The High-energy Physics package is historic for REDUCE, since REDUCE -originated as a program to aid in computations with Dirac expressions. -The commutation algebra of the gamma matrices is independent of their -representation, and is a natural subject for symbolic mathematics. Dirac -theory is applied to beta decay and the computation of -cross-sections and scattering. The high-energy physics operators are -available in the REDUCE main program, rather than as a module which must -be loaded. -

    -

    - - - -HE_dot -INDEX

    - - - -. _ _ _ HE-DOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The . operator is used to denote the scalar product of two Lorentz -four-vectors. -

    -syntax:

    -

    -

    -<vector> . <vector> -

    -

    -

    -<vector> must be an identifier declared to be of type vector to h -ave -the scalar product definition. When applied to arguments that are not -vectors, the -cons operator is used, -whose symbol is also ``dot.'' -

    -

    -

    -examples:

    -

    
    -vector aa,bb,cc; 
    -
    -let aa.bb = 0; 
    -
    -aa.bb; 
    -
    -  0 
    -
    -
    -aa.cc; 
    -
    -  AA.CC 
    -
    -
    -q := aa.cc; 
    -
    -  Q := AA.CC 
    -
    -
    -q; 
    -
    -  AA.CC
    -
    -

    Since vectors are special high-energy physics entities that do not - contain -values, the . product will not return a true scalar product. You can -assign a scalar identifier to the result of a . operation, or assign a . -operation to have the value of the scalar you supply, as shown above. Note -that the result of a . operation is a scalar, not a vector. -

    -

    -The metric tensor g(u,v) can be represented by u.v. If contraction -over the indices is required, u and v should be declared to -be of type -index. -

    -

    -The dot operator has the highest precedence of the infix operators, so -expressions involving . and other operators have the scalar product -evaluated first before other operations are done. -

    -

    -

    - - - -EPS -INDEX

    - - - -EPS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The eps operator denotes the completely antisymmetric tensor of -order 4 and its contraction with Lorentz four-vectors, as used in -high-energy physics calculations. -

    -syntax:

    -

    -

    -eps(<vector-expr>,<vector-expr>,<vector-expr>, -<vector-expr>) -

    -

    -

    -<vector-expr> must be a valid vector expression, and may be an index. -

    -

    -

    -examples:

    -

    
    -vector g0,g1,g2,g3; 
    -
    -eps(g1,g0,g2,g3); 
    -
    -  - EPS(G0,G1,G2,G3); 
    -
    -
    -eps(g1,g2,g0,g3); 
    -
    -  EPS(G0,G1,G2,G3); 
    -
    -
    -eps(g1,g2,g3,g1); 
    -
    -  0
    -
    -

    Vector identifiers are ordered alphabetically by REDUCE. When an o -dd number -of transpositions is required to restore the canonical order to the four -arguments of eps, the term is ordered and carries a minus sign. When an - -even number of transpositions is required, the term is returned ordered and -positive. When one of the arguments is repeated, the value 0 is returned. -A contraction of the form -eps(_i j mu nu p_mu q_nu) -is represented by eps(i,j,p,q) when i and j have been - -declared to be of type -index. -

    -

    -

    - - - -G -INDEX

    - - - -G _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -g is an n-ary operator used to denote a product of gamma matrices -contracted with Lorentz four-vectors, in high-energy physics. -

    -syntax:

    -

    -

    -g(<identifier>,<vector-expr> -{,<vector-expr>}*) -

    -

    -

    -<identifier> is a scalar identifier representing a fermion line -identifier, <vector-expr> can be any valid vector expression, -representing a vector or a gamma matrix. -

    -

    -

    -examples:

    -

    
    -vector aa,bb,cc; 
    -
    -vector a; 
    -
    -g(line1,aa,bb); 
    -
    -  AA.BB 
    -
    -
    -g(line2,aa,a); 
    -
    -  0 
    -
    -
    -g(id,aa,bb,cc); 
    -
    -  0 
    -
    -
    -g(li1,aa,bb) + k; 
    -
    -  AA.BB + K 
    -
    -
    -let aa.bb = m*k; 
    -
    -g(ln1,aa)*g(ln1,bb); 
    -
    -  K*M 
    -
    -
    -g(ln1,aa)*g(ln2,bb); 
    -
    -  0
    -
    -

    The vector A is reserved in arguments of g to de -note the -special gamma matrix gamma_5. It must be declared to -be a vector before you use it. -

    -

    -Gamma matrix expressions are associated with fermion lines in a Feynman -diagram. If more than one line occurs in an expression, the gamma -matrices involved are separate (operating in independent spin space), as -shown in the last two example lines above. A product of gamma matrices -associated with a single line can be entered either as a single g -command with several vector arguments, or as products of separate g -commands each with a single argument. -

    -

    -While the product of vectors is not defined, the product, sum and -difference of several gamma expressions are defined, as is the product of -a gamma expression with a scalar. If an expression involving gamma -matrices includes a scalar, the scalar is treated as if it were the -product of itself with a unit 4 x 4 matrix. -

    -

    -Dirac expressions are evaluated by computing the trace of the expression -using the commutation algebra of gamma matrices. The algorithms used are -described in articles by J. S. R. Chisholm in <Il Nuovo Cimento X,> Vol. -30, p. 426, 1963, and J. Kahane, <Journal of Mathematical Physics>, -Vol. 9, p. 1732, 1968. The trace is then divided by 4 to distinguish -between the trace of a scalar and the trace of an expression that is the -product of a scalar with a unit 4 x 4 matrix. -

    -

    -Trace calculations may be prevented over any line identifier by declaring it -to be -nospur. If it is later desired to evaluate these trace -s, -the declaration can be undone with the -spur declaration. -

    -

    -The notation of Bjorken and Drell, <Relativistic Quantum Mechanics,> -1964, is assumed in all operations involving gamma matrices. For an -example of the use of g in a calculation, see the <REDUCE -User's Manual>. -

    -

    -

    - - - -INDEX -INDEX

    - - - -INDEX _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The declaration index flags a four-vector as an index for subsequent -high-energy physics calculations. -

    -syntax:

    -

    -

    -index<vector-id>{,<vector-id>}* -

    -

    -

    -<vector-id> must have been declared of type vector. -

    -

    -

    -examples:

    -

    
    -vector aa,bb,cc; 
    -
    -index uu; 
    -
    -let aa.bb = 0; 
    -
    -(aa.uu)*(bb.uu); 
    -
    -  0 
    -
    -
    -(aa.uu)*(cc.uu); 
    -
    -  AA.CC
    -
    -

    Index variables are used to represent contraction over components -of -vectors when scalar products are taken by the . operator, as well as -indicating contraction for the -eps operator or metric tensor. -

    -

    -The special status of a vector as an index can be revoked with the -declaration -remind. The object remains a vector, however. -

    -

    -

    - - - -MASS -INDEX

    - - - -MASS _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The mass command associates a scalar variable as a mass with -the corresponding vector variable, in high-energy physics calculations. -

    -syntax:

    -

    -

    -mass<vector-var>=<scalar-var> -{,<vector-var>=<scalar-var>}* -

    -

    -

    -<vector-var> can be a declared vector variable; mass will declare - -it to be of type vector if it is not. This may override an existing -matrix variable by that name. <scalar-var> must be a scalar variable. -

    -

    -

    -examples:

    -

    
    -vector bb,cc; 
    -
    -mass cc=m; 
    -
    -mshell cc; 
    -
    -cc.cc; 
    -
    -   2
    -  M
    -
    -

    Once a mass has been attached to a vector with a mass dec -laration, -the -mshell declaration puts the associated particle ``on t -he mass -shell.'' Subsequent scalar (.) products of the vector with itself will be -replaced by the square of the mass expression. -

    -

    -

    - - - -MSHELL -INDEX

    - - - -MSHELL _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The mshell command puts particles on the mass shell in high-energy -physics calculations. -

    -syntax:

    -

    -

    -mshell<vector-var>{,<vector-var>}* -

    -

    -

    -<vector-var> must have had a mass attached to it by a -mass -declaration. -

    -

    -

    -examples:

    -

    
    -vector v1,v2; 
    -
    -mass v1=m,v2=q; 
    -
    -mshell v1; 
    -
    -v1.v1; 
    -
    -   2
    -  M  
    -
    -
    -v2.v2; 
    -
    -  V2.V2 
    -
    -
    -mshell v2; 
    -
    -v1.v1*v2.v2; 
    -
    -   2  2
    -  M *Q
    -
    -

    Even though a mass is attached to a vector variable representing a - -particle, the replacement does not take place until the mshell -declaration is given for that vector variable. -

    -

    -

    - - - -NOSPUR -INDEX

    - - - -NOSPUR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The nospur declaration prevents the trace calculation over the given -line identifiers in high-energy physics calculations. -

    -syntax:

    -

    -

    -nospur<line-id>{,<line-id>}* -

    -

    -

    -<line-id> is a scalar identifier that will be used as a line identifier. -

    -

    -

    -examples:

    -

    
    -vector a1,b1,c1; 
    -
    -g(line1,a1,b1)*g(line2,b1,c1); 
    -
    -  A1.B1*B1.C1 
    -
    -
    -nospur line2; 
    -
    -g(line1,a1,b1)*g(line2,b1,c1); 
    -
    -  A1.B1*G(LINE2,B1,C1)
    -
    -

    Nospur declarations can be removed by making the declaration -spur. -

    -

    -

    - - - -REMIND -INDEX

    - - - -REMIND _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The remind declaration removes the special status of its arguments -as indices, which was set in the -index declaration, in -high-energy physics calculations. -

    -syntax:

    -

    -

    -remind<identifier>{,<identifier>}* -

    -

    -

    -<identifier> must have been declared to be of type -index. -

    -

    - - - -SPUR -INDEX

    - - - -SPUR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The spur declaration removes the special exemption from trace -calculations that was declared by -nospur, in high-energy physics -calculations. -

    -syntax:

    -

    -

    -spur<line-id>{,<line-id>}* -

    -

    -

    -<line-id> must be a line-identifier that has previously been declared -nospur. -

    -

    - - - -VECDIM -INDEX

    - - - -VECDIM _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The command vecdim changes the vector dimension from 4 to an arbitrary - -integer or symbol. Used in high-energy physics calculations. -

    -syntax:

    -

    -

    -vecdim<dimension> -

    -

    -

    -<dimension> must be either an integer or a valid scalar identifier that -does not have a floating-point value. -

    -

    -The -eps operator and the gamma_5 -symbol (A) are not properly defined in anything except four -dimensions and will print an error message if you use them that way. The -other high-energy physics operators should work without problem. -

    -

    -

    - - - -VECTOR -INDEX

    - - - -VECTOR _ _ _ _ _ _ _ _ _ _ _ _ declaration

    -

    - -The vector declaration declares that its arguments are of type vect -or. -

    -syntax:

    -

    -

    -vector<identifier>{,<identifier>}* -

    -

    -

    -<identifier> must be a valid REDUCE identifier. It may have already been -used for a matrix, array, operator or scalar variable. After an identifier -has been declared to be a vector, it may not be used as a scalar variable. -

    -

    -Vectors are special entities for high-energy physics calculations. You -cannot put values into their coordinates; they do not have coordinates. -They are legal arguments for the high-energy physics operators - -eps, -g and . (dot). Vector variables are -used to represent gamma matrices and gamma matrices contracted with Lorentz -4-vectors, since there are no Dirac variables per se in the system. -Vectors do follow the usual vector rules for arithmetic operations: -+ and - operate upon two or more vectors, producing a -vector; * and / cannot be used between vectors; the -scalar product is represented by the . operator; and the product of a -scalar and vector expression is well defined, and is a vector. -

    -

    -You can represent components of vectors by including representations of unit -vectors in your system. For instance, letting E0 represent the unit -vector (1,0,0,0), the command -

    -

    -V1.E0 := 0;would set up the substitution of zero for the first componen -t of the vector -V1. -

    -

    -Identifiers that are declared by the index and mass declaratio -ns are -automatically declared to be vectors. -

    -

    -The following errors can occur in calculations using the high energy -physics package: -

    -

    -A represents only gamma5 in vector expressionsYou have tried to use A i -n some way other than gamma5 in a -high-energy physics expression. -

    -

    -

    -Gamma5 not allowed unless vecdim is 4You have used gamma_5 in a high-en -ergy physics -computation involving a vector dimension other than 4. -

    -

    -

    -<ID> has no mass -

    -

    -One of the arguments to -mshell has had no mass assigned to it, in -high-energy physics calculations. -

    -

    -

    -Missing arguments for G operatorA line symbol is missing in a gamma mat -rix expression in high-energy physics -calculations. -

    -

    -

    -Unmatched index<list> -

    -

    -The parser has found unmatched indices during the evaluation of a -gamma matrix expression in high-energy physics calculations. -

    -

    -

    -

    -

    - - - -High Energy Physics -INDEX

    -High Energy Physics

    -
  • HEPHYS introduction

    -

  • HE-dot operator

    -

  • EPS operator

    -

  • G operator

    -

  • INDEX declaration

    -

  • MASS command

    -

  • MSHELL command

    -

  • NOSPUR declaration

    -

  • REMIND declaration

    -

  • SPUR declaration

    -

  • VECDIM command

    -

  • VECTOR declaration

    -

  • - - -Numeric_Package -INDEX

    - - - -NUMERIC PACKAGE _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -The numeric package supplies algorithms based on approximation -techniques of numerical mathematics. The algorithms use -the -rounded mode arithmetic of REDUCE, including -the variable precision feature which is exploited in some -algorithms in an adaptive manner in order to reach the -desired accuracy. -

    -

    - - - -Interval -INDEX

    - - - -INTERVAL _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -Intervals are generally coded as lower bound and -upper bound connected by the operator .., usually -associated to a variable in an -equation. -

    -

    -

    -syntax:

    -<var> = (<low> .. <high>) -

    -

    -

    -where <var> is a -kernel and <low>, <high> are -numbers or expression which evaluate to numbers with <low><=<high ->. -

    -

    -

    -examples:

    -

    means that the variable x is taken in the range from 2 -.5 up to -3.5. -

    -

    - - - -numeric_accuracy -INDEX

    - - - -NUMERIC ACCURACY

    -

    - -The keyword parameters accuracy=a and iterations=i, -where aand i must be positive integer numbers, control the -iterative algorithms: the iteration is continued until -the local error is below 10**-a; if that is impossible -within i steps, the iteration is terminated with an -error message. The values reached so far are then returned -as the result. -

    -

    - - - -TRNUMERIC -INDEX

    - - - -TRNUMERIC _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -Normally the algorithms produce only a minimum of printed -output during their operation. In cases of an unsuccessful -or unexpected long operation a trace of the iteration can be -printed by setting trnumeric on. -

    -

    - - - -num_min -INDEX

    - - - -NUM_MIN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Fletcher Reeves version of the steepest descent -algorithms is used to find the minimum of a -function of one or more variables. The -function must have continuous partial derivatives with respect to all -variables. The starting point of the search can be -specified; if not, random values are taken instead. -The steepest descent algorithms in general find only local -minima. -

    -

    -

    -syntax:

    -num_min(<exp>, - <var>[=<val>] [,<var>[=<val>] ... - [,accuracy=<a>] [,iterations=<i>]) -

    -

    -or -

    -

    -num_min(exp, { - <var>[=<val>] [,<var>[=<val>] ...] } - [,accuracy=<a>] [,iterations=<i>]) -

    -

    -

    -where <exp> is a function expression, -<var> are the variables in <exp> and -<val> are the (optional) start values. -For <a> and <i> see -numeric accuracy. -

    -

    -Num_mintries to find the next local minimum along the descending -path starting at the given point. The result is a -list -with the minimum function value as first element followed by a list -of -equations, where the variables are equated to - the coordinates -of the result point. -

    -

    -

    -examples:

    -

    
    -num_min(sin(x)+x/5, x)
    -
    -  {4.9489585606,{X=29.643767785}}
    -
    -
    -num_min(sin(x)+x/5, x=0)
    -
    -  { - 1.3342267466,{X= - 1.7721582671}}
    -
    -

    - - -num_solve -INDEX

    - - - -NUM_SOLVE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -An adaptively damped Newton iteration is used to find -an approximative root of a function (function vector) or the -solution of an -equation (equation system). The expressions -must have continuous derivatives for all variables. -A starting point for the iteration can be given. If not given -random values are taken instead. When the number of -forms is not equal to the number of variables, the -Newton method cannot be applied. Then the minimum -of the sum of absolute squares is located instead. -

    -

    -With -complex on, solutions with imaginary parts can be -found, if either the expression(s) or the starting point -contain a nonzero imaginary part. -

    -

    -

    -syntax:

    -num_solve(<exp>, <var>[=<val>][,accuracy=<a>][, -iterations=<i>]) -

    -

    -or -

    -

    -num_solve({<exp>,...,<exp>}, <var>[=<val>],..., -<var>[=<val>] - [,accuracy=<a>][,iterations=<i>]) -

    -

    -or -

    -

    -num_solve({<exp>,...,<exp>}, {<var>[=<val>],... -,<var>[=<val>]} - [,accuracy=<a>][,iterations=<i>]) -

    -

    -

    -

    -where <exp> are function expressions, - <var> are the variables, - <val> are optional start values. -For <a> and <i> see -numeric accuracy. -

    -

    -num_solvetries to find a zero/solution of the expression(s). -Result is a list of equations, where the variables are -equated to the coordinates of the result point. -

    -

    -The Jacobian matrix is stored as side effect the shared -variable jacobian. -

    -

    -

    -examples:

    -

    
    -num_solve({sin x=cos y, x + y = 1},{x=1,y=2});
    -
    -
    -  {X= - 1.8561957251,Y=2.856195584}
    -
    -
    -jacobian;
    -
    -      [COS(X)  SIN(Y)]
    -      [              ]
    -      [  1       1   ]
    -
    -

    - - -num_int -INDEX

    - - - -NUM_INT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -For the numerical evaluation of univariate integrals -over a finite interval the following strategy is used: -If -int finds a formal antiderivative - which is bounded in the integration interval, this - is evaluated and the end points and the difference - is returned. -Otherwise a -Chebyshev fit is computed, - starting with order 20, eventually up to order 80. - If that is recognized as sufficiently convergent - it is used for computing the integral by directly - integrating the coefficient sequence. -If none of these methods is successful, an - adaptive multilevel quadrature algorithm is used. -

    -

    -For multivariate integrals only the adaptive quadrature is used. -This algorithm tolerates isolated singularities. -The value iterations here limits the number of -local interval intersection levels. -<a> is a measure for the relative total discretization -error (comparison of order 1 and order 2 approximations). -

    -

    -

    -syntax:

    -num_int(<exp>,<var>=(<l> .. <u>) - [,<var>=(<l> .. <u>),...] - [,accuracy=<a>][,iterations=<i>]) -

    -

    -

    -where <exp> is the function to be integrated, -<var> are the integration variables, -<l> are the lower bounds, -<u> are the upper bounds. -

    -

    -Result is the value of the integral. -

    -

    -

    -examples:

    -

    
    -num_int(sin x,x=(0 .. 3.1415926));
    -
    -  2.0000010334
    -
    -

    - - -num_odesolve -INDEX

    - - - -NUM_ODESOLVE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Runge-Kutta method of order 3 finds an approximate graph for -the solution of real ODE initial value problem. -

    -

    -

    -syntax:

    -num_odesolve(<exp>,<depvar>=<start>, - <indep>=(<from> .. <to>) - [,accuracy=<a>][,iterations=<i>]) -

    -

    -or -

    -

    -num_odesolve({<exp>,<exp>,...}, - { <depvar>=<start>,<depvar>=<start>,...} - <indep>=(<from> .. <to>) - [,accuracy=<a>][,iterations=<i>]) -

    -

    -

    -

    -where -<depvar> and <start> specify the dependent variable(s) -and the starting point value (vector), -<indep>, <from> and <to> specify the independent variable -and the integration interval (starting point and end point), -<exp> are equations or expressions which -contain the first derivative of the independent variable -with respect to the dependent variable. -

    -

    -The ODEs are converted to an explicit form, which then is -used for a Runge Kutta iteration over the given range. The -number of steps is controlled by the value of <i> -(default: 20). If the steps are too coarse to reach the desired -accuracy in the neighborhood of the starting point, the number is -increased automatically. -

    -

    -Result is a list of pairs, each representing a point of the -approximate solution of the ODE problem. -

    -

    -

    -examples:

    -

    
    -depend(y,x);
    -
    -num_odesolve(df(y,x)=y,y=1,x=(0 .. 1), iterations=5);
    -
    -
    -  ,{0.2,1.2214},{0.4,1.49181796},{0.6,1.8221064563},
    -    {0.8,2.2255208258},{1.0,2.7182511366}}
    -
    -

    In most cases you must declare the dependency relation -between the variables explicitly using -depend; -otherwise the formal derivative might be converted to zero. -

    -

    -The operator -solve is used to convert the form into -an explicit ODE. If that process fails or if it has no unique result, -the evaluation is stopped with an error message. -

    -

    - - - -bounds -INDEX

    - - - -BOUNDS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -Upper and lower bounds of a real valued function over an - -interval or a rectangular multivariate domain are comp -uted -by the operator bounds. The algorithmic basis is the computation -with inequalities: starting from the interval(s) of the -variables, the bounds are propagated in the expression -using the rules for inequality computation. Some knowledge -about the behavior of special functions like ABS, SIN, COS, EXP, LOG, -fractional exponentials etc. is integrated and can be evaluated -if the operator bounds is called with rounded mode on -(otherwise only algebraic evaluation rules are available). -

    -

    -If bounds finds a singularity within an interval, the evaluation -is stopped with an error message indicating the problem part -of the expression. -

    -

    -

    -syntax:

    -bounds(<exp>,<var>=(<l> .. <u>) - [,<var>=(<l> .. <u>) ...]) -

    -

    -or -

    -

    -bounds(<exp>,{<var>=(<l> .. <u>) - [,<var>=(<l> .. <u>) ...]}) -

    -

    -

    -

    -where <exp> is the function to be investigated, -<var> are the variables of <exp>, -<l> and <u> specify the area as set of -intervals. -

    -

    -boundscomputes upper and lower bounds for the expression in the -given area. An -interval is returned. -

    -

    -

    -examples:

    -

    
    -bounds(sin x,x=(1 .. 2));
    -
    -  -1 .. 1
    -
    -
    -on rounded;
    -
    -bounds(sin x,x=(1 .. 2));
    -
    -  0.84147098481 .. 1
    -
    -
    -bounds(x**2+x,x=(-0.5 .. 0.5));
    -
    -  - 0.25 .. 0.75
    -
    -

    - - -Chebyshev_fit -INDEX

    - - - -CHEBYSHEV FIT

    -

    - -

    -

    -The operator family Chebyshev_... implements approximation -and evaluation of functions by the Chebyshev method. -Let T(n,a,b,x) be the Chebyshev polynomial of order n -transformed to the interval (a,b). -Then a function f(x) can be -approximated in (a,b) by a series -

    -

    -

    
    -  for i := 0:n sum c(i)*T(i,a,b,x)
    -

    The operator chebyshev_fit computes this approximation an -d -returns a list, which has as first element the sum expressed -as a polynomial and as second element the sequence -of Chebyshev coefficients. -Chebyshev_df and Chebyshev_int transform a Chebyshev -coefficient list into the coefficients of the corresponding -derivative or integral respectively. For evaluating a Chebyshev -approximation at a given point in the basic interval the -operator Chebyshev_eval can be used. -Chebyshev_eval is based on a recurrence relation which is -in general more stable than a direct evaluation of the -complete polynomial. -

    -

    -

    -syntax:

    -chebyshev_fit(<fcn>,<var>=(<lo> .. <hi>),<n ->) -

    -

    -chebyshev_eval(<coeffs>,<var>=(<lo> .. <hi>), - <var>=<pt>) -

    -

    -chebyshev_df(<coeffs>,<var>=(<lo> .. <hi>)) -

    -

    -chebyshev_int(<coeffs>,<var>=(<lo> .. <hi>)) -

    -

    -

    -where <fcn> is an algebraic expression (the target function), -<var> is the variable of <fcn>, -<lo> and <hi> are -numerical real values which describe an -interval <lo> <<hi>, -the integer <n> is the approximation order (set to 20 if missing), -<pt> is a number in the interval and <coeffs> is -a series of Chebyshev coefficients. -

    -

    -

    -examples:

    -

    
    -
    -on rounded;
    -
    -
    -w:=chebyshev_fit(sin x/x,x=(1 .. 3),5);
    -
    -
    -                 3            2
    -  w := {0.03824*x   - 0.2398*x   + 0.06514*x + 0.9778,
    -        {0.8991,-0.4066,-0.005198,0.009464,-0.00009511}}                    
    -
    -
    -chebyshev_eval(second w, x=(1 .. 3), x=2.1);
    -
    -
    -  0.4111
    -
    -

    - - -num_fit -INDEX

    - - - -NUM_FIT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator num_fit finds for a set of -points the linear combination of a given set of -functions (function basis) which approximates the -points best under the objective of the least squares -criterion (minimum of the sum of the squares of the deviation). -The solution is found as zero of the -gradient vector of the sum of squared errors. -

    -

    -

    -syntax:

    -num_fit(<vals>,<basis>,<var>=<pts>) -

    -

    -

    -where <vals> is a list of numeric values, -<var> is a variable used for the approximation, -<pts> is a list of coordinate values which correspond to -<var>, -<basis> is a set of functions varying in var which is used - for the approximation. -

    -

    -The result is a list containing as first element the -function which approximates the given values, and as -second element a list of coefficients which were used -to build this function from the basis. -

    -

    -

    -examples:

    -

    
    - 
    -pts:=for i:=1 step 1 until 5 collect i$
    -
    -vals:=for i:=1 step 1 until 5 collect
    -
    -            for j:=1:i product j$
    -
    -num_fit(vals,{1,x,x**2},x=pts);
    -
    -                     2
    -      {14.571428571*X   - 61.428571429*X + 54.6,{54.6,
    -           - 61.428571429,14.571428571}}
    -
    -

    - - -Numeric Package -INDEX

    -Numeric Package

    -
  • Numeric Package introduction

    -

  • Interval type

    -

  • numeric accuracy concept

    -

  • TRNUMERIC switch

    -

  • num_min operator

    -

  • num_solve operator

    -

  • num_int operator

    -

  • num_odesolve operator

    -

  • bounds operator

    -

  • Chebyshev fit concept

    -

  • num_fit operator

    -

  • - - -Roots_Package -INDEX

    - - - -ROOTS PACKAGE _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -

    -

    -The root finding package is designed so that it can -be used to find some or all of the roots of univariate -polynomials with real or complex coefficients, to the accuracy -specified by the user. -

    -

    -Not all operators of roots package are described here. For using -the operators -

    -

    -isolater(intervals isolating real roots) -

    -

    -rlrootno(number of real roots in an interval) -

    -

    -rootsat-prec(roots at system precision) -

    -

    -rootval(result in equation form) -

    -

    -firstroot(computing only one root) -

    -

    -getroot(selecting roots from a collection) -

    -

    -please consult the full documentation of the package. -

    -

    - - - -MKPOLY -INDEX

    - - - -MKPOLY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -Given a roots list as returned by -roots, -the operator mkpoly constructs a -polynomial which has these numbers as roots. -

    -syntax:

    -

    -

    -mkpoly<rl> -

    -

    -

    -where <rl> is a -list with equations, which -all have the same -kernel on their left-hand sides -and numbers as right-hand sides. -

    -

    -

    -examples:

    -

    
    -mkpoly{x=1,x=-2,x=i,x=-i};
    -
    -  x**4 + x**3 - x**2 + x - 2
    -
    -

    Note that this polynomial is unique only up to a numeric -factor. -

    -

    - - - -NEARESTROOT -INDEX

    - - - -NEARESTROOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator nearestroot finds one root of a polynomial -with an iteration using a given starting point. -

    -

    -

    -syntax:

    -nearestroot(<p>,<pt>) -

    -

    -

    -where <p> is a univariate polynomial -and <pt> is a number. -

    -

    -

    -examples:

    -

    
    -nearestroot(x^2+2,2);
    -
    -  {x=1.41421*i}
    -
    -

    The minimal accuracy of the result values is controlled by - -rootacc. -

    -

    - - - -REALROOTS -INDEX

    - - - -REALROOTS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator realroots finds that real roots of a polynomial -to an accuracy that is sufficient to separate them and which is -a minimum of 6 decimal places. -

    -

    -

    -syntax:

    -realroots(<p>) or -

    -

    -realroots(<p>,<from>,<to>) -

    -

    -

    -where <p> is a univariate polynomial. -The optional parameters <from> and <to> classify -an interval: if given, exactly the real roots in this -interval will be returned. <from> and <to> -can also take the values infinity or -infinity. -If omitted all real roots will be returned. -Result is a -list -of equations which represent the roots of the polynomial at the -given accuracy. -

    -

    -

    -examples:

    -

    
    -realroots(x^5-2);
    -
    -  {x=1.1487}
    -
    -
    -realroots(x^3-104*x^2+403*x-300,2,infinity);
    -
    -
    -  {x=3.0,x=100.0}
    -
    -
    -realroots(x^3-104*x^2+403*x-300,-infinity,2);
    -
    -
    -  {x=1}
    -
    -

    The minimal accuracy of the result values is controlled by - -rootacc. -

    -

    - - - -ROOTACC -INDEX

    - - - -ROOTACC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator rootacc allows you to set the accuracy -up to which the roots package computes its results. -

    -syntax:

    -

    -

    -rootacc(<n>) -

    -

    -

    -Here <n> is an integer value. The internal accuracy of -the roots package is adjusted to a value of -max(6,n). The default value is 6. -

    -

    - - - -ROOTS -INDEX

    - - - -ROOTS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator roots -is the main top level function of the roots package. -It will find all roots, real and complex, of the polynomial p -to an accuracy that is sufficient to separate them and which is -a minimum of 6 decimal places. -

    -

    -

    -syntax:

    -roots(<p>) -

    -

    -

    -where <p> is a univariate polynomial. Result is a -list -of equations which represent the roots of the polynomial at the -given accuracy. In addition, roots stores -separate lists of real roots and complex roots in the global -variables -rootsreal and -rootscomplex. -

    -

    -

    -examples:

    -

    
    -roots(x^5-2);
    -
    -  {x=-0.929316 + 0.675188*i,
    -    x=-0.929316 - 0.675188*i,
    -    x=0.354967 + 1.09248*i,
    -    x=0.354967 - 1.09248*i, 
    -    x=1.1487}
    -
    -

    The minimal accuracy of the result values is controlled by - -rootacc. -

    -

    - - - -ROOT_VAL -INDEX

    - - - -ROOT\_VAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The operator root_val computes the roots of a -univariate polynomial at system precision -(or greater if required for root separation) and presents -its result as a list of numbers. -

    -syntax:

    -

    -

    -roots(<p>) -

    -

    -

    -where <p> is a univariate polynomial. -

    -

    -

    -examples:

    -

    
    -root_val(x^5-2);
    -
    -  {-0.929316490603 + 0.6751879524*i,
    -   -0.929316490603 - 0.6751879524*i,
    -   0.354967313105 + 1.09247705578*i,
    -   0.354967313105 - 1.09247705578*i,
    -   1.148698355}
    -
    -

    - - -ROOTSCOMPLEX -INDEX

    - - - -ROOTSCOMPLEX _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -When the operator -roots is called the complex -roots are collected in the global variable rootscomplex -as -list. -

    -

    - - - -ROOTSREAL -INDEX

    - - - -ROOTSREAL _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -When the operator -roots is called the real -roots are collected in the global variable rootreal -as -list. -

    -

    - - - -Roots Package -INDEX

    -Roots Package

    -
  • Roots Package introduction

    -

  • MKPOLY operator

    -

  • NEARESTROOT operator

    -

  • REALROOTS operator

    -

  • ROOTACC operator

    -

  • ROOTS operator

    -

  • ROOT\_VAL operator

    -

  • ROOTSCOMPLEX variable

    -

  • ROOTSREAL variable

    -

  • - - -Special_Function_Package -INDEX

    - - - -SPECIAL FUNCTION PACKAGE _ _ _ _ _ _ _ _ _ _ _ _ introduction -

    -

    - -The REDUCE Special Function Package supplies extended -algebraic and numeric support for a wide class of objects. -This package was released together with REDUCE 3.5 (October 1993) -for the first time, a major update is released with REDUCE 3.6. -

    -

    -The functions included in this package are in most cases (unless otherwise -stated) defined and named like in the book by Abramowitz and Stegun: -Handbook of Mathematical Functions, Dover Publications. -

    -

    -The aim is to collect as much information on the special functions -and simplification capabilities as possible, -i.e. algebraic simplifications and numeric (rounded mode) code, limits -of the functions together -with the definitions of the functions, which are in most cases a power -series, a (definite) integral and/or a differential equation. -

    -

    -What can be found: Some famous constants, a variety of Bessel functions, -special polynomials, -the Gamma function, the (Riemann) Zeta function, Elliptic Functions, Elliptic -Integrals, 3J symbols (Clebsch-Gordan coefficients) and integral functions. -

    -

    -What is missing: Mathieu functions, LerchPhi, etc.. -The information about the special functions which solve certain -differential equation is very limited. -In several cases numerical approximation is restricted to real -arguments or is missing completely. -

    -

    -The implementation of this package uses REDUCE rule sets to a large extent, -which guarantees a high 'readability' of the functions definitions in the -source file directory. It makes extensions to the special -functions code easy in most cases too. To look at these rules -it may be convenient to use the showrules operator e.g. -

    -

    - -showrulesBesseli; -

    -

    -. -

    -

    -Some evaluations are improved if the special function package is loaded, -e.g. some (infinite) sums and products leading to expressions including -special functions are known in this case. -

    -

    -Note: The special function package has to be loaded explicitly by calling -

    
    -   load_package specfn;
    -

    -

    -The functions -MeijerG and -hypergeometric require -additionally -

    
    -   load_package specfn2;
    -

    -

    - - - -Constants -INDEX

    - - - -CONSTANTS

    -

    - -

    -

    -There are a few constants known to the special function package, namely -

    -

    - _ _ _ Euler's constant (which can be computed as - -Psi(1)) and -

    - _ _ _ Khinchin's constant (which is defined in Khinchin's book - ``Continued Fractions'') and -

    - _ _ _ Golden_Ratio (which can be computed as (1 + sqrt 5)/2) and -

    - _ _ _ Catalan's constant (which is known as an infinite sum of recipro -cal -powers) -

    -

    -

    -examples:

    -

    
    -on rounded;
    -Euler_Gamma; 
    -
    -  0.577215664902 
    -
    -
    -Khinchin; 
    -
    -  2.68545200107 
    -
    -
    -Catalan 
    -
    -  0.915965594177 
    -
    -
    -Golden_Ratio 
    -
    -  1.61803398875
    -
    -

    - - -BERNOULLI -INDEX

    - - - -BERNOULLI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The bernoulli operator returns the nth Bernoulli number. -

    -

    -

    -syntax:

    -Bernoulli(<integer>) -

    -

    -

    -

    -

    -examples:

    -

    
    -bernoulli 20; 
    -
    -  - 174611 / 330 
    -
    -
    -bernoulli 17; 
    -
    -  0
    -
    -

    All Bernoulli numbers with odd indices except for 1 are zero. -

    -

    -

    - - - -BERNOULLIP -INDEX

    - - - -BERNOULLIP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The BernoulliP operator returns the nth Bernoulli Polynomial -evaluated at x. -

    -

    -

    -syntax:

    -BernoulliP(<integer>,<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -BernoulliP(3,z); 
    -
    -        2
    -  z*(2*z   - 3*z + 1)/2
    -
    -
    -
    -BernoulliP(10,3); 
    -
    -  338585 / 66
    -
    -

    The value of the nth Bernoulli Polynomial at 0 is the nth Bernoull -i number. -

    -

    -

    - - - -EULER -INDEX

    - - - -EULER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EULER operator returns the nth Euler number. -

    -

    -

    -syntax:

    -Euler(<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Euler 20; 
    -
    -  370371188237525 
    -
    -
    -Euler 0; 
    -
    -  1
    -
    -

    The Euler numbers are evaluated by a recursive algorithm -which -makes it hard to compute Euler numbers above say 200. -

    -

    -Euler numbers appear in the coefficients of the power series -representation of 1/cos(z). -

    -

    -

    - - - -EULERP -INDEX

    - - - -EULERP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EulerP operator returns the nth Euler Polynomial. -

    -

    -

    -syntax:

    -EulerP(<integer>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -EulerP(2,xx); 
    -
    -  xx*(xx - 1) 
    -
    -
    -EulerP(10,3); 
    -
    -  2046
    -
    -

    The Euler numbers are the values of the Euler Polynomials at 1/2 -multiplied by 2**n. -

    -

    -

    - - - -ZETA -INDEX

    - - - -ZETA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Zeta operator returns Riemann's Zeta function, -

    -

    -Zeta (z) := sum(1/(k**z),k,1,infinity) -

    -

    -

    -syntax:

    -Zeta(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -Zeta(2); 
    -
    -    2
    -  pi  / 6 
    -
    -
    -on rounded; 
    -
    -Zeta 1.01; 
    -
    -  100.577943338
    -
    -

    Numerical computation for the Zeta function for arguments close to - 1 are -tedious, because the series is converging very slowly. In this case a formula -(e.g. found in Bender/Orzag: Advanced Mathematical Methods for -Scientists and Engineers, McGraw-Hill) is used. -

    -

    -No numerical approximation for complex arguments is done. -

    -

    -

    - - - -Bernoulli Euler Zeta -INDEX

    -Bernoulli Euler Zeta

    -
  • BERNOULLI operator

    -

  • BERNOULLIP operator

    -

  • EULER operator

    -

  • EULERP operator

    -

  • ZETA operator

    -

  • - - -BESSELJ -INDEX

    - - - -BESSELJ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The BesselJ operator returns the Bessel function of the first kind. -

    -

    -

    -syntax:

    -BesselJ(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -BesselJ(1/2,pi); 
    -
    -  0 
    -
    -
    -on rounded; 
    -
    -BesselJ(0,1); 
    -
    -  0.765197686558  
    -
    -

    - - -BESSELY -INDEX

    - - - -BESSELY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The BesselY operator returns the Bessel function of the second kind. -

    -syntax:

    -

    -

    -BesselY(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -BesselY (1/2,pi); 
    -
    -  - sqrt(2) / pi 
    -
    -
    -on rounded; 
    -
    -BesselY (1,3); 
    -
    -  0.324674424792
    -
    -

    The operator BesselY is also called Weber's function. -

    -

    -

    - - - -HANKEL1 -INDEX

    - - - -HANKEL1 _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Hankel1 operator returns the Hankel function of the first kind. -

    -

    -

    -syntax:

    -Hankel1(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -on complex; 
    -
    -Hankel1 (1/2,pi); 
    -
    -  - i * sqrt(2) / pi 
    -
    -
    -Hankel1 (1,pi); 
    -
    -  besselj(1,pi) + i*bessely(1,pi)
    -
    -

    The operator Hankel1 is also called Bessel function of th -e third kind. -There is currently no numeric evaluation of Hankel functions. -

    -

    -

    - - - -HANKEL2 -INDEX

    - - - -HANKEL2 _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Hankel2 operator returns the Hankel function of the second kind. -

    -

    -

    -syntax:

    -Hankel2(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -on complex; 
    -
    -Hankel2 (1/2,pi); 
    -
    -  - i * sqrt(2) / pi 
    -
    -
    -Hankel2 (1,pi); 
    -
    -  besselj(1,pi) - i*bessely(1,pi)
    -
    -

    The operator Hankel2 is also called Bessel function of th -e third kind. -There is currently no numeric evaluation of Hankel functions. -

    -

    -

    - - - -BESSELI -INDEX

    - - - -BESSELI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The BesselI operator returns the modified Bessel function I. -

    -

    -

    -syntax:

    -BesselI(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -on rounded; 
    -
    -Besseli (1,1); 
    -
    -  0.565159103992
    -
    -

    The knowledge about the operator BesselI is currently fai -rly limited. -

    -

    -

    - - - -BESSELK -INDEX

    - - - -BESSELK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The BesselK operator returns the modified Bessel function K. -

    -

    -

    -syntax:

    -BesselK(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -df(besselk(0,x),x); 
    -
    -  - besselk(1,x)
    -
    -

    There is currently no numeric support for the operator BesselK -. -

    -

    -

    - - - -StruveH -INDEX

    - - - -STRUVEH _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The StruveH operator returns Struve's H function. -

    -

    -

    -syntax:

    -StruveH(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -struveh(-3/2,x); 
    -
    -  - besselj(3/2,x) / i
    -
    -

    - - -StruveL -INDEX

    - - - -STRUVEL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The StruveL operator returns the modified Struve L function . -

    -

    -

    -syntax:

    -StruveL(<order>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -struvel(-3/2,x); 
    -
    -  besseli(3/2,x)
    -
    -

    - - -KummerM -INDEX

    - - - -KUMMERM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The KummerM operator returns Kummer's M function. -

    -

    -

    -syntax:

    -KummerM(<parameter>,<parameter>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -kummerm(1,1,x); 
    -
    -   x
    -  e  
    -
    -
    -on rounded; 
    -
    -kummerm(1,3,1.3); 
    -
    -  1.62046942914
    -
    -

    Kummer's M function is one of the Confluent Hypergeometric functio -ns. -For reference see the -hypergeometric operator. -

    -

    -

    - - - -KummerU -INDEX

    - - - -KUMMERU _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The KummerU operator returns Kummer's U function. -

    -

    -

    -syntax:

    -KummerU(<parameter>,<parameter>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -df(kummeru(1,1,x),x) 
    -
    -  - kummeru(2,2,x)
    -
    -

    Kummer's U function is one of the Confluent Hypergeometric functio -ns. -For reference see the -hypergeometric operator. -

    -

    -

    - - - -WhittakerW -INDEX

    - - - -WHITTAKERW _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The WhittakerW operator returns Whittaker's W function. -

    -

    -

    -syntax:

    -WhittakerW(<parameter>,<parameter>,<argument>) -

    -

    -

    -

    -examples:

    -

    
    -WhittakerW(2,2,2); 
    -
    -                    1
    -  4*sqrt(2)*kummeru(-,5,2)
    -                    2
    -  -------------------------
    -             e
    -
    -

    Whittaker's W function is one of the Confluent Hypergeometric func -tions. -For reference see the -hypergeometric operator. -

    -

    -

    - - - -Bessel Functions -INDEX

    -Bessel Functions

    -
  • BESSELJ operator

    -

  • BESSELY operator

    -

  • HANKEL1 operator

    -

  • HANKEL2 operator

    -

  • BESSELI operator

    -

  • BESSELK operator

    -

  • StruveH operator

    -

  • StruveL operator

    -

  • KummerM operator

    -

  • KummerU operator

    -

  • WhittakerW operator

    -

  • - - -Airy_Ai -INDEX

    - - - -AIRY_AI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Airy_Ai operator returns the Airy Ai function for a given argument. - -

    -

    -

    -syntax:

    -Airy_Ai(<argument>) -

    -

    -

    -

    -examples:

    -

    
    -on complex;
    -on rounded;
    -Airy_Ai(0); 
    -
    -
    -  0.355028053888          
    -
    -
    -Airy_Ai(3.45 + 17.97i); 
    -
    -  - 5.5561528511e+9 - 8.80397899932e+9*i  
    -
    -

    - - -Airy_Bi -INDEX

    - - - -AIRY_BI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Airy_Bi operator returns the Airy Bi function for a given -argument. -

    -

    -

    -syntax:

    -Airy_Bi(<argument>) -

    -

    -

    -

    -examples:

    -

    
    -Airy_Bi(0); 
    -
    -  0.614926627446          
    -
    -
    -Airy_Bi(3.45 + 17.97i); 
    -
    -  8.80397899932e+9 - 5.5561528511e+9*i   
    -
    -

    - - -Airy_Aiprime -INDEX

    - - - -AIRY_AIPRIME _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Airy_Aiprime operator returns the Airy Aiprime function for a -given argument. -

    -

    -

    -syntax:

    -Airy_Aiprime(<argument>) -

    -

    -

    -

    -examples:

    -

    
    -Airy_Aiprime(0); 
    -
    -  - 0.258819403793           
    -
    -
    -Airy_Aiprime(3.45+17.97i);
    -
    -  - 3.83386421824e+19 + 2.16608828136e+19*i 
    -
    -

    - - -Airy_Biprime -INDEX

    - - - -AIRY_BIPRIME _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Airy_Biprime operator returns the Airy Biprime function for a -given argument. -

    -

    -

    -syntax:

    -Airy_Biprime(<argument>) -

    -

    -

    -

    -examples:

    -

    
    -Airy_Biprime(0); 
    -
    -
    -Airy_Biprime(3.45 + 17.97i); 
    -
    -  3.84251916792e+19 - 2.18006297399e+19*i
    -
    -

    - - -Airy Functions -INDEX

    -Airy Functions

    -
  • Airy_Ai operator

    -

  • Airy_Bi operator

    -

  • Airy_Aiprime operator

    -

  • Airy_Biprime operator

    -

  • - - -JacobiSN -INDEX

    - - - -JACOBISN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobisn operator returns the Jacobi Elliptic function sn. -

    -

    -

    -syntax:

    -Jacobisn(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobisn(0.672, 0.36) 
    -
    -  0.609519691792 
    -
    -
    -Jacobisn(1,0.9) 
    -
    -  0.770085724907881 
    -
    -

    - - -JacobiCN -INDEX

    - - - -JACOBICN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobicn operator returns the Jacobi Elliptic function cn. -

    -

    -

    -syntax:

    -Jacobicn(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobicn(7.2, 0.6) 
    -
    -  0.837288298482018  
    -
    -
    -Jacobicn(0.11, 19) 
    -
    -  0.994403862690043 - 1.6219006985556e-16*i  
    -
    -

    - - -JacobiDN -INDEX

    - - - -JACOBIDN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobidn operator returns the Jacobi Elliptic function dn. -

    -

    -

    -syntax:

    -Jacobidn(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobidn(15, 0.683) 
    -
    -  0.640574162024592 
    -
    -
    -Jacobidn(0,0) 
    -
    -  1 
    -
    -

    - - -JacobiCD -INDEX

    - - - -JACOBICD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobicd operator returns the Jacobi Elliptic function cd. -

    -

    -

    -syntax:

    -Jacobicd(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobicd(1, 0.34) 
    -
    -  0.657683337805273 
    -
    -
    -Jacobicd(0.8,0.8) 
    -
    -  0.925587311582301 
    -
    -

    - - -JacobiSD -INDEX

    - - - -JACOBISD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobisd operator returns the Jacobi Elliptic function sd. -

    -

    -

    -syntax:

    -Jacobisd(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobisd(12, 0.4) 
    -
    -  0.357189729437272    
    -
    -
    -Jacobisd(0.35,1) 
    -
    -  - 1.17713873203043  
    -
    -

    - - -JacobiND -INDEX

    - - - -JACOBIND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobind operator returns the Jacobi Elliptic function nd. -

    -

    -

    -syntax:

    -Jacobind(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobind(0.2, 17) 
    -
    -  1.46553203037507 + 0.0000000000334032759313703*i 
    -
    -
    -Jacobind(30, 0.001) 
    -
    -  1.00048958438  
    -
    -

    - - -JacobiDC -INDEX

    - - - -JACOBIDC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobidc operator returns the Jacobi Elliptic function dc. -

    -

    -

    -syntax:

    -Jacobidc(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobidc(0.003,1) 
    -
    -  1 
    -
    -
    -Jacobidc(2, 0.75) 
    -
    -  6.43472885111  
    -
    -

    - - -JacobiNC -INDEX

    - - - -JACOBINC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobinc operator returns the Jacobi Elliptic function nc. -

    -

    -

    -syntax:

    -Jacobinc(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobinc(1,0) 
    -
    -  1.85081571768093 
    -
    -
    -Jacobinc(56, 0.4387) 
    -
    -  39.304842663512  
    -
    -

    - - -JacobiSC -INDEX

    - - - -JACOBISC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobisc operator returns the Jacobi Elliptic function sc. -

    -

    -

    -syntax:

    -Jacobisc(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobisc(9, 0.88) 
    -
    -  - 1.16417697982095  
    -
    -
    -Jacobisc(0.34, 7) 
    -
    -  0.305851938390775 - 9.8768100944891e-12*i 
    -
    -

    - - -JacobiNS -INDEX

    - - - -JACOBINS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobins operator returns the Jacobi Elliptic function ns. -

    -

    -

    -syntax:

    -Jacobins(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobins(3, 0.9) 
    -
    -  1.00945801599785 
    -
    -
    -Jacobins(0.887, 15) 
    -
    -  0.683578280513975 - 0.85023411082469*i 
    -
    -

    - - -JacobiDS -INDEX

    - - - -JACOBIDS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobisn operator returns the Jacobi Elliptic function ds. -

    -

    -

    -syntax:

    -Jacobids(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobids(98,0.223) 
    -
    -  - 1.061253961477 
    -
    -
    -Jacobids(0.36,0.6) 
    -
    -  2.76693172243692 
    -
    -

    - - -JacobiCS -INDEX

    - - - -JACOBICS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Jacobics operator returns the Jacobi Elliptic function cs. -

    -

    -

    -syntax:

    -Jacobics(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Jacobics(0, 0.767) 
    -
    -  infinity   
    -
    -
    -Jacobics(1.43, 0) 
    -
    -  0.141734127352112 
    -
    -

    - - -JacobiAMPLITUDE -INDEX

    - - - -JACOBIAMPLITUDE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The JacobiAmplitude operator returns the amplitude of u. -

    -syntax:

    -

    -

    -JacobiAmplitude(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -JacobiAmplitude(7.239, 0.427) 
    -
    -  0.0520978301448978 
    -
    -
    -JacobiAmplitude(0,0.1) 
    -
    -  0 
    -
    -

    Amplitude u = asin(Jacobisn(u,m)) -

    -

    -

    - - - -AGM_FUNCTION -INDEX

    - - - -AGM_FUNCTION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The AGM_function operator returns a list of (N, AGM, - list of aNtoa0, list of bNtob0, list of cNtoc0) where a0, b0 and c0 -are the initial values; N is the index number of the last term -used to generate the AGM. AGM is the Arithmetic Geometric Mean. -

    -

    -

    -syntax:

    -AGM_function(<integer>,<integer>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -AGM_function(1,1,1) 
    -
    -  1,1,1,1,1,1,0,1  
    -
    -
    -AGM_function(1, 0.1, 1.3) 
    -
    -  {6,
    -   2.27985615996629, 
    -   {2.27985615996629, 2.27985615996629,
    -    2.2798561599706, 2.2798624278857, 
    -    2.28742283656583, 2.55, 1},
    -   {2.27985615996629, 2.27985615996629,
    -    2.27985615996198, 2.2798498920555, 
    -    2.27230201920557, 2.02484567313166, 4.1},
    -   {0, 4.30803136219904e-12, 0.0000062679151007581,
    -    0.00756040868012758, 0.262577163434171, - 1.55, 5.9}}
    -
    -

    The other Jacobi functions use this function with initial values -a0=1, b0=sqrt(1-m), c0=sqrt(m). -

    -

    -

    - - - -LANDENTRANS -INDEX

    - - - -LANDENTRANS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The landentrans operator generates the descending landen -transformation of the given imput values, returning a list of these -values; initial to final in each case. -

    -syntax:

    -

    -

    -landentrans(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -landentrans(0,0.1) 
    -
    -  {{0,0,0,0,0},{0.1,0.0025041751943776, 
    -
    -
    - 
    -
    -  0.00000156772498954046,6.1444078 9914461e-13,0}}  
    -
    -

    The first list ascends in value, and the second descends in value. - -

    -

    -

    - - - -EllipticF -INDEX

    - - - -ELLIPTICF _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EllipticF operator returns the Elliptic Integral of the -First Kind. -

    -syntax:

    -

    -

    -EllitpicF(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticF(0.3, 8.222) 
    -
    -  0.3 
    -
    -
    -EllipticF(7.396, 0.1) 
    -
    -  7.58123216114307 
    -
    -

    The Complete Elliptic Integral of the First Kind can be found by -putting the first argument to pi/2 or by using EllipticK -and the second argument. -

    -

    -

    - - - -EllipticK -INDEX

    - - - -ELLIPTICK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EllipticK operator returns the Elliptic value K. -

    -

    -

    -syntax:

    -EllipticK(<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticK(0.2) 
    -
    -  1.65962359861053   
    -
    -
    -EllipticK(4.3) 
    -
    -  0.808442364282734 - 1.05562492399206*i  
    -
    -
    -EllipticK(0.000481) 
    -
    -  1.57098526617635    
    -
    -

    The EllipticK function is the Complete Elliptic Integral -of -the First Kind. -

    -

    -

    - - - -EllipticKprime -INDEX

    - - - -ELLIPTICKPRIME _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EllipticK' operator returns the Elliptic value K(m). -

    -

    -

    -syntax:

    -EllipticKprime(<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticKprime(0.2) 
    -
    -  2.25720532682085 
    -
    -
    -EllipticKprime(4.3) 
    -
    -  1.05562492399206 
    -
    -
    -EllipticKprime(0.000481) 
    -
    -  5.206621921966   
    -
    -

    The EllipticKprime function is the Complete Elliptic Inte -gral of -the First Kind of (1-m). -

    -

    -

    - - - -EllipticE -INDEX

    - - - -ELLIPTICE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EllipticE operator used with two arguments -returns the Elliptic Integral of the Second Kind. -

    -syntax:

    -

    -

    -EllipticE(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticE(1.2,0.22) 
    -
    -  1.15094019180949 
    -
    -
    -EllipticE(0,4.35) 
    -
    -  0                
    -
    -
    -EllipticE(9,0.00719) 
    -
    -  8.98312465929145  
    -
    -

    The Complete Elliptic Integral of the Second Kind can be obtained -by -using just the second argument, or by using pi/2 as the first argument. -

    -

    -

    -The EllipticE operator used with one argument -returns the Elliptic value E. -

    -syntax:

    -

    -

    -EllipticE(<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticE(0.22) 
    -
    -  1.48046637439519  
    -
    -
    -EllipticE(pi/2, 0.22) 
    -
    -  1.48046637439519  
    -
    -

    - - -EllipticTHETA -INDEX

    - - - -ELLIPTICTHETA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The EllipticTheta operator returns one of the four Theta -functions. It cannot except any number other than 1,2,3 or 4 as -its first argument. -

    -

    -

    -syntax:

    -EllipticTheta(<integer>,<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -EllipticTheta(1, 1.4, 0.72) 
    -
    -  0.91634775373  
    -
    -
    -EllipticTheta(2, 3.9, 6.1 ) 
    -
    -  -48.0202736969 + 20.9881034377 i 
    -
    -
    -EllipticTheta(3, 0.67, 0.2) 
    -
    -  1.0083077448   
    -
    -
    -EllipticTheta(4, 8, 0.75) 
    -
    -  0.894963369304 
    -
    -
    -EllipticTheta(5, 1, 0.1) 
    -
    -  ***** In EllipticTheta(a,u,m); a = 1,2,3 or 4.   
    -
    -

    Theta functions are important because every one of the Jacobian -Elliptic functions can be expressed as the ratio of two theta functions. -

    -

    -

    - - - -JacobiZETA -INDEX

    - - - -JACOBIZETA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The JacobiZeta operator returns the Jacobian function Zeta. -

    -

    -

    -syntax:

    -JacobiZeta(<expression>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -JacobiZeta(3.2, 0.8) 
    -
    -  - 0.254536403439 
    -
    -
    -JacobiZeta(0.2, 1.6) 
    -
    -  0.171766095970451 - 0.0717028569800147*i  
    -
    -

    The Jacobian function Zeta is related to the Jacobian function The -ta. -But it is significantly different from Riemann's Zeta Function -Zeta. -

    -

    -

    - - - -Jacobi's Elliptic Functions and Elliptic Integrals -INDEX

    -Jacobi's Elliptic Functions and Elliptic Integrals

    -
  • JacobiSN operator

    -

  • JacobiCN operator

    -

  • JacobiDN operator

    -

  • JacobiCD operator

    -

  • JacobiSD operator

    -

  • JacobiND operator

    -

  • JacobiDC operator

    -

  • JacobiNC operator

    -

  • JacobiSC operator

    -

  • JacobiNS operator

    -

  • JacobiDS operator

    -

  • JacobiCS operator

    -

  • JacobiAMPLITUDE operator

    -

  • AGM_FUNCTION operator

    -

  • LANDENTRANS operator

    -

  • EllipticF operator

    -

  • EllipticK operator

    -

  • EllipticKprime operator

    -

  • EllipticE operator

    -

  • EllipticTHETA operator

    -

  • JacobiZETA operator

    -

  • - - -POCHHAMMER -INDEX

    - - - -POCHHAMMER _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Pochhammer operator implements the Pochhammer notation -(shifted factorial). -

    -

    -

    -syntax:

    -Pochhammer(<expression>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -pochhammer(17,4); 
    -
    -  116280 
    -
    -
    -
    -pochhammer(1/2,z); 
    -
    -    factorial(2*z)
    -  --------------------
    -    2*z
    -  (2   *factorial(z))
    -
    -

    A number of complex rules for Pochhammer are inactive, be -cause they -cause a huge system load in algebraic mode. If one wants to use more rules -for the simplification of Pochhammer's notation, one can do: -

    -

    -let special!*pochhammer!*rules; -

    -

    -

    -

    - - - -GAMMA -INDEX

    - - - -GAMMA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Gamma operator returns the Gamma function. -

    -

    -

    -syntax:

    -Gamma(<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -gamma(10); 
    -
    -  362880    
    -
    -
    -gamma(1/2); 
    -
    -  sqrt(pi)
    -
    -

    - - -BETA -INDEX

    - - - -BETA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Beta operator returns the Beta function defined by -

    -

    -Beta (z,w) := defint(t**(z-1)* (1 - t)**(w-1),t,0,1) . -

    -

    -

    -syntax:

    -Beta(<expression>,<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -Beta(2,2); 
    -
    -  1 / 6 
    -
    -
    -Beta(x,y); 
    -
    -  gamma(x)*gamma(y) / gamma(x + y)
    -
    -

    The operator Beta is simplified towards the -GAMMA operator. -

    -

    -

    - - - -PSI -INDEX

    - - - -PSI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Psi operator returns the Psi (or DiGamma) function. -

    -

    -Psi(x) := df(Gamma(z),z)/ Gamma (z) -

    -

    -

    -syntax:

    -Gamma(<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -Psi(3); 
    -
    -  (2*log(2) + psi(1/2) + psi(1) + 3)/2 
    -
    -
    -on rounded; 
    -
    -- Psi(1); 
    -
    -  0.577215664902
    -
    -

    Euler's constant can be found as - Psi(1). -

    -

    -

    - - - -POLYGAMMA -INDEX

    - - - -POLYGAMMA _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Polygamma operator returns the Polygamma function. -

    -

    -Polygamma(n,x) := df(Psi(z),z,n); -

    -

    -

    -syntax:

    -Polygamma(<integer>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    - Polygamma(1,2); 
    -
    -     2
    -  (pi   - 6) / 6
    -
    -
    -on rounded; 
    -
    -Polygamma(1,2.35); 
    -
    -  0.52849689109
    -
    -

    The Polygamma function is used for simplification of the -ZETA -function for some arguments. -

    -

    -

    - - - -Gamma and Related Functions -INDEX

    -Gamma and Related Functions

    -
  • POCHHAMMER operator

    -

  • GAMMA operator

    -

  • BETA operator

    -

  • PSI operator

    -

  • POLYGAMMA operator

    -

  • - - -DILOG_extended -INDEX

    - - - -DILOG EXTENDED _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The package specfn supplies an extended support for the - -dilog operator which implements the dilogarithm fu -nction. -

    -

    -dilog(x) := - defint(log(t)/(t - 1),t,1,x); -

    -

    -

    -syntax:

    -Dilog(<order>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -defint(log(t)/(t - 1),t,1,x); 
    -
    -  - dilog (x) 
    -
    -
    -dilog 2; 
    -
    -      2
    -  - pi  /12 
    -
    -
    -
    -on rounded; 
    -
    -Dilog 20; 
    -
    -  - 5.92783972438
    -
    -

    The operator Dilog is sometimes called Spence's Integral -for n = 2. -

    -

    -

    - - - -Lambert_W_function -INDEX

    - - - -LAMBERT\_W FUNCTION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Lambert's W function is the inverse of the function w * e**w. -It is used in the -solve package for equations containing -exponentials and logarithms. -

    -

    -

    -syntax:

    -Lambert_W(<z>) -

    -

    -

    -

    -examples:

    -

    
    -Lambert_W(-1/e); 
    -
    -  -1 
    -
    -
    -solve(w + log(w),w); 
    -
    -  w=lambert_w(1)
    -
    -
    -on rounded; 
    -
    -Lambert_W(-0.05); 
    -
    -  - 0.0527059835515
    -
    -

    The current implementation will compute the principal branch in -rounded mode only. -

    -

    -

    - - - -Miscellaneous Functions -INDEX

    -Miscellaneous Functions

    -
  • DILOG extended operator

    -

  • Lambert\_W function operator

    -

  • - - -ChebyshevT -INDEX

    - - - -CHEBYSHEVT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ChebyshevT operator computes the nth Chebyshev T Polynomial (of the - -first kind). -

    -

    -

    -syntax:

    -ChebyshevT(<integer>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -ChebyshevT(3,xx); 
    -
    -          2
    -  xx*(4*xx   - 3) 
    -
    -
    -
    -ChebyshevT(3,4); 
    -
    -  244
    -
    -

    Chebyshev's T polynomials are computed using the recurrence relati -on: -

    -

    -ChebyshevT(n,x) := 2x*ChebyshevT(n-1,x) - ChebyshevT(n-2,x) with -

    -

    -ChebyshevT(0,x) := 0 and ChebyshevT(1,x) := x -

    -

    -

    - - - -ChebyshevU -INDEX

    - - - -CHEBYSHEVU _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ChebyshevU operator returns the nth Chebyshev U Polynomial (of the - -second kind). -

    -

    -

    -syntax:

    -ChebyshevU(<integer>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -ChebyshevU(3,xx); 
    -
    -          2
    -  4*x*(2*x   - 1) 
    -
    -
    -
    -ChebyshevU(3,4); 
    -
    -  496
    -
    -

    Chebyshev's U polynomials are computed using the recurrence relati -on: -

    -

    -ChebyshevU(n,x) := 2x*ChebyshevU(n-1,x) - ChebyshevU(n-2,x) with -

    -

    -ChebyshevU(0,x) := 0 and ChebyshevU(1,x) := 2x -

    -

    -

    -

    - - - -HermiteP -INDEX

    - - - -HERMITEP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The HermiteP operator returns the nth Hermite Polynomial. -

    -

    -

    -syntax:

    -HermiteP(<integer>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -HermiteP(3,xx); 
    -
    -            2
    -  4*xx*(2*xx   - 3) 
    -
    -
    -HermiteP(3,4); 
    -
    -  464
    -
    -

    Hermite polynomials are computed using the recurrence relation: -

    -

    -HermiteP(n,x) := 2x*HermiteP(n-1,x) - 2*(n-1)*HermiteP(n-2,x) with -

    -

    -HermiteP(0,x) := 1 and HermiteP(1,x) := 2x -

    -

    -

    -

    - - - -LaguerreP -INDEX

    - - - -LAGUERREP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The LaguerreP operator computes the nth Laguerre Polynomial. -The two argument call of LaguerreP is a (common) abbreviation of -LaguerreP(n,0,x). -

    -

    -

    -syntax:

    -LaguerreP(<integer>,<expression>) or -

    -

    -LaguerreP(<integer>,<expression>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -LaguerreP(3,xx); 
    -
    -       3        2
    -  (- xx   + 9*xx   - 18*xx + 6)/6
    -
    -
    -
    -LaguerreP(2,3,4); 
    -
    -  -2
    -
    -

    Laguerre polynomials are computed using the recurrence relation: -

    -

    -LaguerreP(n,a,x) := (2n+a-1-x)/n*LaguerreP(n-1,a,x) - - (n+a-1) * LaguerreP(n-2,a,x) with -

    -

    -LaguerreP(0,a,x) := 1 and LaguerreP(2,a,x) := -x+1+a -

    -

    -

    - - - -LegendreP -INDEX

    - - - -LEGENDREP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The binary LegendreP operator computes the nth Legendre -Polynomial which is -a special case of the nth Jacobi Polynomial with -

    -

    -LegendreP(n,x) := JacobiP(n,0,0,x) -

    -

    -The ternary form returns the associated Legendre Polynomial (see below). -

    -

    -

    -syntax:

    -LegendreP(<integer>,<expression>) or -

    -

    -LegendreP(<integer>,<expression>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -LegendreP(3,xx); 
    -
    -          2
    -  xx*(5*xx   - 3)
    -  ----------------
    -         2
    -
    -
    -
    -LegendreP(3,2,xx); 
    -
    -              2
    -  15*xx*( - xx   + 1)
    -
    -

    The ternary form of the operator LegendreP is the associa -ted -Legendre Polynomial defined as -

    -

    -P(n,m,x) = (-1)**m * (1-x**2)**(m/2) * df(LegendreP(n,x),x,m) -

    -

    -

    - - - -JacobiP -INDEX

    - - - -JACOBIP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The JacobiP operator computes the nth Jacobi Polynomial. -

    -

    -

    -syntax:

    -JacobiP(<integer>,<expression>,<expression>, - <expression>) -

    -

    -

    -

    -examples:

    -

    
    -JacobiP(3,4,5,xx); 
    -
    -          3         2
    -  7*(65*xx   - 13*xx   - 13*xx + 1)
    -  ----------------------------------
    -                  8
    -
    -
    -
    -JacobiP(3,4,5,6); 
    -
    -  94465/8
    -
    -

    - - -GegenbauerP -INDEX

    - - - -GEGENBAUERP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The GegenbauerP operator computes Gegenbauer's (ultraspherical) -polynomials. -

    -

    -

    -syntax:

    -GegenbauerP(<integer>,<expression>,<expression>) -

    -

    -

    -

    -examples:

    -

    
    -GegenbauerP(3,2,xx); 
    -
    -            2
    -  4*xx*(8*xx   - 3)
    -
    -
    -
    -GegenbauerP(3,2,4); 
    -
    -  2000
    -
    -

    - - -SolidHarmonicY -INDEX

    - - - -SOLIDHARMONICY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The SolidHarmonicY operator computes Solid harmonic (Laplace) -polynomials. -

    -

    -

    -syntax:

    -SolidHarmonicY(<integer>,<integer>, -<expression>,<expression>,<expression>,<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -
    -SolidHarmonicY(3,-2,x,y,z,r2); 
    -
    -                           2    2
    -  sqrt(105)*z*(-2*i*x*y + x  - y )
    -  ---------------------------------
    -         4*sqrt(pi)*sqrt(2)
    -
    -

    - - -SphericalHarmonicY -INDEX

    - - - -SPHERICALHARMONICY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The SphericalHarmonicY operator computes Spherical harmonic (Laplace) -polynomials. These are special cases of the -solid harmonic polynomials, -SolidHarmonicY. -

    -

    -

    -syntax:

    -SphericalHarmonicY(<integer>,<integer>, -<expression>,<expression>) -

    -

    -

    -

    -

    -examples:

    -

    
    -SphericalHarmonicY(3,2,theta,phi); 
    -
    -
    -                                 2          2                               2
    -  sqrt(105)*cos(theta)*sin(theta) *(cos(phi) +2*cos(phi)*sin(phi)*i-sin(phi) )
    -  -----------------------------------------------------------------------------
    -                               4*sqrt(pi)*sqrt(2)
    -
    -

    - - -Orthogonal Polynomials -INDEX

    -Orthogonal Polynomials

    -
  • ChebyshevT operator

    -

  • ChebyshevU operator

    -

  • HermiteP operator

    -

  • LaguerreP operator

    -

  • LegendreP operator

    -

  • JacobiP operator

    -

  • GegenbauerP operator

    -

  • SolidHarmonicY operator

    -

  • SphericalHarmonicY operator

    -

  • - - -Si -INDEX

    - - - -SI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Si operator returns the Sine Integral function. -

    -

    -

    -syntax:

    -Si(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -limit(Si(x),x,infinity); 
    -
    -  pi / 2 
    -
    -
    -on rounded; 
    -
    -Si(0.35); 
    -
    -  0.347626790989
    -
    -

    The numeric values for the operator Si are computed via t -he -power series representation, which limits the argument range. -

    -

    -

    - - - -Shi -INDEX

    - - - -SHI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Shi operator returns the hyperbolic Sine Integral function. -

    -

    -

    -syntax:

    -Shi(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -df(shi(x),x); 
    -
    -  sinh(x) / x 
    -
    -
    -on rounded; 
    -
    -Shi(0.35); 
    -
    -  0.352390716351
    -
    -

    The numeric values for the operator Shi are computed via -the -power series representation, which limits the argument range. -

    -

    -

    - - - -s_i -INDEX

    - - - -S_I _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The s_i operator returns the Sine Integral function si. -

    -

    -

    -syntax:

    -s_i(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -s_i(xx); 
    -
    -  (2*Si(xx) - pi) / 2 
    -
    -
    -df(s_i(x),x); 
    -
    -  sin(x) / x
    -
    -

    The operator name s_i is simplified towards -SI. -Since REDUCE is not case sensitive by default the name ``si'' can't be -used. -

    -

    -

    - - - -Ci -INDEX

    - - - -CI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Ci operator returns the Cosine Integral function. -

    -

    -

    -syntax:

    -Ci(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -defint(cos(t)/t,t,x,infinity); 
    -
    -  - ci (x) 
    -
    -
    -on rounded; 
    -
    -Ci(0.35); 
    -
    -  - 0.50307556932
    -
    -

    The numeric values for the operator Ci are computed via t -he -power series representation, which limits the argument range. -

    -

    -

    - - - -Chi -INDEX

    - - - -CHI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Chi operator returns the Hyperbolic Cosine Integral function. -

    -

    -

    -syntax:

    -Chi(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -defint((cosh(t)-1)/t,t,0,x); 
    -
    -  - log(x) + psi(1) + chi(x)
    -
    -
    -on rounded; 
    -
    -Chi(0.35); 
    -
    -  - 0.44182471827
    -
    -

    The numeric values for the operator Chi are computed via -the -power series representation, which limits the argument range. -

    -

    -

    - - - -ERF_extended -INDEX

    - - - -ERF EXTENDED _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The special function package supplies an extended support for the - -erf operator which implements the error function - -

    -

    -defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) -

    -

    -. -

    -

    -

    -syntax:

    -erf(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -erf(-x); 
    -
    -  - erf(x)
    -
    -
    -on rounded; 
    -
    -erf(0.35); 
    -
    -  0.379382053562
    -
    -

    The numeric values for the operator erf are computed via -the -power series representation, which limits the argument range. -

    -

    -

    - - - -erfc -INDEX

    - - - -ERFC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The erfc operator returns the complementary Error function -

    -

    -1 - defint(e**(-x**2),x,0,infinity) * 2/sqrt(pi) -

    -

    -. -

    -

    -

    -syntax:

    -erfc(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -erfc(xx); 
    -
    -  - erf(xx) + 1
    -
    -

    The operator erfc is simplified towards the -erf operator. -

    -

    -

    - - - -Ei -INDEX

    - - - -EI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Ei operator returns the Exponential Integral function. -

    -

    -

    -syntax:

    -Ei(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -df(ei(x),x); 
    -
    -   x
    -  e
    -  ---
    -  x
    -
    -
    -on rounded; 
    -
    -Ei(0.35); 
    -
    -  - 0.0894340019184
    -
    -

    The numeric values for the operator Ei are computed via t -he -power series representation, which limits the argument range. -

    -

    -

    - - - -Fresnel_C -INDEX

    - - - -FRESNEL_C _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Fresnel_C operator represents Fresnel's Cosine function. -

    -

    -

    -syntax:

    -Fresnel_C(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -int(cos(t^2*pi/2),t,0,x); 
    -
    -  fresnel_c(x) 
    -
    -
    -on rounded; 
    -
    -fresnel_c(2.1); 
    -
    -  0.581564135061
    -
    -

    The operator Fresnel_C has a limited numeric evaluation o -f -large values of its argument. -

    -

    -

    - - - -Fresnel_S -INDEX

    - - - -FRESNEL_S _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Fresnel_S operator represents Fresnel's Sine Integral function. -

    -

    -

    -syntax:

    -Fresnel_S(<expression>) -

    -

    -

    -

    -examples:

    -

    
    -int(sin(t^2*pi/2),t,0,x); 
    -
    -  fresnel_s(x) 
    -
    -
    -on rounded; 
    -
    -fresnel_s(2.1); 
    -
    -  0.374273359378
    -
    -

    The operator Fresnel_S has a limited numeric evaluation o -f -large values of its argument. -

    -

    -

    - - - -Integral Functions -INDEX

    -Integral Functions

    -
  • Si operator

    -

  • Shi operator

    -

  • s_i operator

    -

  • Ci operator

    -

  • Chi operator

    -

  • ERF extended operator

    -

  • erfc operator

    -

  • Ei operator

    -

  • Fresnel_C operator

    -

  • Fresnel_S operator

    -

  • - - -BINOMIAL -INDEX

    - - - -BINOMIAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Binomial operator returns the Binomial coefficient if both -parameter are integer and expressions involving the Gamma function otherwise. -

    -

    -

    -syntax:

    -Binomial(<integer>,<integer>) -

    -

    -

    -

    -

    -examples:

    -

    
    -Binomial(49,6); 
    -
    -  13983816 
    -
    -
    -
    -Binomial(n,3); 
    -
    -   gamma(n + 1)
    -  ---------------
    -  6*gamma(n - 2)
    -
    -

    The operator Binomial evaluates the Binomial coefficients - from -the explicit form and therefore it is not the best algorithm if you -want to compute many binomial coefficients with big indices in which -case a recursive algorithm is preferable. -

    -

    -

    - - - -STIRLING1 -INDEX

    - - - -STIRLING1 _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Stirling1 operator returns the Stirling Numbers S(n,m) of the first - -kind, i.e. the number of permutations of n symbols which have exactly m cycles -(divided by (-1)**(n-m)). -

    -

    -

    -syntax:

    -Stirling1(<integer>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Stirling1 (17,4); 
    -
    -  -87077748875904 
    -
    -
    -Stirling1 (n,n-1); 
    -
    -  -gamma(n+1)
    -  -------------
    -  2*gamma(n-1)
    -
    -

    The operator Stirling1 evaluates the Stirling numbers of -the -first kind by rulesets for special cases or by a computing the closed -form, which is a series involving the operators -BINOMIAL -and -STIRLING2. -

    -

    -

    - - - -STIRLING2 -INDEX

    - - - -STIRLING2 _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Stirling1 operator returns the Stirling Numbers S(n,m) of the -second kind, i.e. the number of ways of partitioning a set of n elements -into m non-empty subsets. -

    -

    -

    -syntax:

    -Stirling2(<integer>,<integer>) -

    -

    -

    -

    -examples:

    -

    
    -Stirling2 (17,4); 
    -
    -  694337290 
    -
    -
    -Stirling2 (n,n-1); 
    -
    -   gamma(n+1)
    -  -------------
    -  2*gamma(n-1)
    -
    -

    The operator Stirling2 evaluates the Stirling numbers of -the -second kind by rulesets for special cases or by a computing the closed -form. -

    -

    -

    - - - -Combinatorial Operators -INDEX

    -Combinatorial Operators

    -
  • BINOMIAL operator

    -

  • STIRLING1 operator

    -

  • STIRLING2 operator

    -

  • - - -ThreejSymbol -INDEX

    - - - -THREEJSYMBOL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The ThreejSymbol operator implements the 3j symbol. -

    -

    -

    -syntax:

    -ThreejSymbol(<list of j1,m1>,<list of j2,m2>, -<list of j3,m3>) -

    -

    -

    -

    -

    -examples:

    -

    
    -
    -ThreejSymbol({j+1,m},{j+1,-m},{1,0}); 
    -
    -
    -        j
    -  ( - 1)  *(abs(j - m + 1) - abs(j + m + 1))
    -  -------------------------------------------
    -             3       2                    m
    -   2*sqrt(2*j   + 9*j   + 13*j + 6)*( - 1)
    -
    -

    - - -Clebsch_Gordan -INDEX

    - - - -CLEBSCH_GORDAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The Clebsch_Gordan operator implements the Clebsch_Gordan -coefficients. This is closely related to the -Threejsymbol. -

    -

    -

    -syntax:

    -Clebsch_Gordan(<list of j1,m1>,<list of j2,m2>, -<list of j3,m3>) -

    -

    -

    -

    -

    -examples:

    -

    
    - Clebsch_Gordan({2,0},{2,0},{2,0}); 
    -
    -
    -     -2
    -  ---------
    -  sqrt(14)
    -
    -

    - - -SixjSymbol -INDEX

    - - - -SIXJSYMBOL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The SixjSymbol operator implements the 6j symbol. -

    -syntax:

    -

    -

    -SixjSymbol(<list of j1,j2,j3>,<list of l1,l2,l3>) -

    -

    -

    -

    -

    -examples:

    -

    
    -
    -SixjSymbol({7,6,3},{2,4,6}); 
    -
    -       1
    -  -------------
    -  14*sqrt(858)
    -
    -

    The operator SixjSymbol uses the -ineq package in order -to find minima and maxima for the summation index. -

    -

    -

    - - - -3j and 6j symbols -INDEX

    -3j and 6j symbols

    -
  • ThreejSymbol operator

    -

  • Clebsch_Gordan operator

    -

  • SixjSymbol operator

    -

  • - - -HYPERGEOMETRIC -INDEX

    - - - -HYPERGEOMETRIC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Hypergeometric operator provides simplifications for the -generalized hypergeometric functions. -The Hypergeometric operator is included in the package specfn2. -

    -

    -

    -syntax:

    -hypergeometric(<list of parameters>,<list of parameters>, - <argument>) -

    -

    -

    -

    -examples:

    -

    
    -load specfn2;
    -
    -hypergeometric ({1/2,1},{3/2},-x^2); 
    -
    -
    -  atan(x)
    -  --------
    -     x
    -
    -
    -hypergeometric ({},{},z); 
    -
    -   z
    -  e
    -
    -

    The special case where the length of the first list is equal to 2 -and -the length of the second list is equal to 1 is often called -``the hypergeometric function'' (notated as 2F1(a1,a2,b;x)). -

    -

    -

    - - - -MeijerG -INDEX

    - - - -MEIJERG _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The MeijerG operator provides simplifications for Meijer's G -function. The simplifications are performed towards polynomials, -elementary or -special functions or (generalized) -hypergeometric functions. -

    -

    -The MeijerG operator is included in the package specfn2. -

    -

    -

    -syntax:

    -MeijerG(<list of parameters>,<list of parameters>, - <argument>) -

    -

    -

    -The first element of the lists has to be the list containing the -first group (mostly called ``m'' and ``n'') of parameters. This passes -the four parameters of a Meijer's G function implicitly via the -length of the lists. -

    -

    -

    -examples:

    -

    
    -load specfn2;
    -
    -MeijerG({{},1},{{0}},x); 
    -
    -  heaviside(-x+1)
    -
    -
    -MeijerG({{}},{{1+1/4},1-1/4},(x^2)/4) * sqrt pi;
    - 
    -
    -
    -                  2
    -  sqrt(2)*sin(x)*x
    -  ------------------
    -      4*sqrt(x)
    -
    -

    Many well-known functions can be written as G functions, -e.g. exponentials, logarithms, trigonometric functions, Bessel functions -and hypergeometric functions. -The formulae can be found e.g. in -

    -

    -A.P.Prudnikov, Yu.A.Brychkov, O.I.Marichev: -Integrals and Series, Volume 3: More special functions, -Gordon and Breach Science Publishers (1990). -

    -

    -

    - - - -Heaviside -INDEX

    - - - -HEAVISIDE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The Heaviside operator returns the Heaviside function. -

    -

    -Heaviside(~w) => if (w <0) then 0 else 1 -

    -

    -when numberp w; -

    -

    -

    -syntax:

    -Heaviside(<argument>) -

    -

    -

    -This operator is often included in the result of the simplification -of a generalized -hypergeometric function or a - -MeijerG function. -

    -

    -No simplification is done for this function. -

    -

    -

    - - - -erfi -INDEX

    - - - -ERFI _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -The erfi operator returns the error function of an imaginary argument. - -

    -

    -erfi(~x) => 2/sqrt(pi) * defint(e**(t**2),t,0,x); -

    -

    -

    -syntax:

    -erfi(<argument>) -

    -

    -

    -This operator is sometimes included in the result of the simplification -of a generalized -hypergeometric function or a - -MeijerG function. -

    -

    -No simplification is done for this function. -

    -

    -

    - - - -Miscellaneous -INDEX

    -Miscellaneous

    -
  • HYPERGEOMETRIC operator

    -

  • MeijerG operator

    -

  • Heaviside operator

    -

  • erfi operator

    -

  • - - -Special Functions -INDEX

    -Special Functions

    -
  • Special Function Package introduction

    -

  • Constants concept

    -

  • Bernoulli Euler Zeta

    -

  • Bessel Functions

    -

  • Airy Functions

    -

  • Jacobi's Elliptic Functions and Elliptic Integrals -

    -

  • Gamma and Related Functions

    -

  • Miscellaneous Functions

    -

  • Orthogonal Polynomials

    -

  • Integral Functions

    -

  • Combinatorial Operators

    -

  • 3j and 6j symbols

    -

  • Miscellaneous

    -

  • - - -TAYLOR_introduction -INDEX

    - - - -TAYLOR _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -This short note describes a package of REDUCE procedures that allow -Taylor expansion in one or more variables and efficient manipulation -of the resulting Taylor series. Capabilities include basic operations -(addition, subtraction, multiplication and division) and also -application of certain algebraic and transcendental functions. To a -certain extent, Laurent expansion can be performed as well. -

    -

    - - - -taylor -INDEX

    - - - -TAYLOR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - The taylor operator is used for expanding an expression into a - Taylor series. -

    -

    -

    -syntax:

    -taylor(<expression> - ,<var>, - <expression>,<number> -

    -

    -{,<var>, - <expression>,<number>}*) -

    -

    -

    -<expression> can be any valid REDUCE algebraic expression. - <var> must be a -kernel, and is the expansion - variable. The <expression> following it denotes the point - about which the expansion is to take place. <number> must be a - non-negative integer and denotes the maximum expansion order. If - more than one triple is specified taylor will expand its - first argument independently with respect to all the variables. - Note that once the expansion has been done it is not possible to - calculate higher orders. -

    -

    -Instead of a -kernel, <var> may also be a list of - kernels. In this case expansion will take place in a way so that - the sum/ of the degrees of the kernels does not exceed the - maximum expansion order. If the expansion point evaluates to the - special identifier infinity, taylor tries to expand in - a series in 1/<var>. -

    -

    -The expansion is performed variable per variable, i.e. in the - example above by first expanding - exp(x^2+y^2) - with respect to - x and then expanding every coefficient with respect to y. -

    -

    -

    -examples:

    -

    
    -    taylor(e^(x^2+y^2),x,0,2,y,0,2); 
    -
    -
    -       2    2    2  2      2  2
    -  1 + Y  + X  + Y *X  + O(X ,Y )   
    -
    -
    -    taylor(e^(x^2+y^2),{x,y},0,2); 
    -
    -
    -       2    2       2  2
    -  1 + Y  + X  + O({X ,Y })
    -
    -

    The following example shows the case of a non-analytical function. -

    
    -
    -    taylor(x*y/(x+y),x,0,2,y,0,2); 
    -
    -
    -  ***** Not a unit in argument to QUOTTAYLOR 
    -
    -

    -

    -

    -Note that it is not generally possible to apply the standard - reduce operators to a Taylor kernel. For example, -part, - -coeff, or -coeffn cannot be used. Instead, the - expression at hand has to be converted to standard form first - using the -taylortostandard operator. -

    -

    -Differentiation of a Taylor expression is possible. If you - differentiate with respect to one of the Taylor variables the - order will decrease by one. -

    -

    -Substitution is a bit restricted: Taylor variables can only be - replaced by other kernels. There is one exception to this rule: - you can always substitute a Taylor variable by an expression that - evaluates to a constant. Note that REDUCE will not always be able - to determine that an expression is constant: an example is - sin(acos(4)). -

    -

    -Only simple taylor kernels can be integrated. More complicated - expressions that contain Taylor kernels as parts of themselves are - automatically converted into a standard representation by means of - the -taylortostandard operator. In this case a suitable - warning is printed. -

    -

    -

    -

    - - - -taylorautocombine -INDEX

    - - - -TAYLORAUTOCOMBINE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - - If you set taylorautocombine to on, REDUCE - automatically combines Taylor expressions during the simplification - process. This is equivalent to applying -taylorcombine to - every expression that contains Taylor kernels. Default is - on. -

    -

    - - - -taylorautoexpand -INDEX

    - - - -TAYLORAUTOEXPAND _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - - taylorautoexpand makes Taylor expressions ``contagious'' in - the sense that -taylorcombine tries to Taylor expand all - non-Taylor subexpressions and to combine the result with the rest. - Default is off. -

    -

    - - - -taylorcombine -INDEX

    - - - -TAYLORCOMBINE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - This operator tries to combine all Taylor kernels found in its - argument into one. Operations currently possible are: -

    -

    - _ _ _ Addition, subtraction, multiplication, and division. -

    - _ _ _ Roots, exponentials, and logarithms. -

    - _ _ _ Trigonometric and hyperbolic functions and their inverses. -

    -

    -

    -examples:

    -

    
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    taylorcombine log hugo; 
    -
    -         3
    -  X + O(X )
    -
    -
    -    taylorcombine(hugo + x); 
    -
    -           1  2      3
    -  (1 + X + -*X  + O(X )) + X
    -           2
    -
    -
    -    on taylorautoexpand; 
    -
    -    taylorcombine(hugo + x); 
    -
    -            1  2      3
    -  1 + 2*X + -*X  + O(X )  
    -            2
    -
    -

    Application of unary operators like log and atan - - will nearly always succeed. For binary operations their arguments - have to be Taylor kernels with the same template. This means that - the expansion variable and the expansion point must match. - Expansion order is not so important, different order usually means - that one of them is truncated before doing the operation. -

    -

    -If -taylorkeeporiginal is set to on and if all - Taylor kernels in its argument have their original expressions - kept taylorcombine will also combine these and store the - result as the original expression of the resulting Taylor kernel. - There is also the switch -taylorautoexpand. -

    -

    -There are a few restrictions to avoid mathematically undefined - expressions: it is not possible to take the logarithm of a Taylor - kernel which has no terms (i.e. is zero), or to divide by such a - beast. There are some provisions made to detect singularities - during expansion: poles that arise because the denominator has - zeros at the expansion point are detected and properly treated, - i.e. the Taylor kernel will start with a negative power. (This - is accomplished by expanding numerator and denominator separately - and combining the results.) Essential singularities of the known - functions (see above) are handled correctly. -

    -

    -

    - - - -taylorkeeporiginal -INDEX

    - - - -TAYLORKEEPORIGINAL _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - - taylorkeeporiginal, if set to on, forces the - -taylor and all Taylor kernel manipulation operators to - - keep the original expression, i.e. the expression that was Taylor - expanded. All operations performed on the Taylor kernels are also - applied to this expression which can be recovered using the operator - -taylororiginal. Default is off. -

    -

    - - - -taylororiginal -INDEX

    - - - -TAYLORORIGINAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - Recovers the original expression (the one that was expanded) from - the Taylor kernel that is given as its argument. -

    -

    -

    -syntax:

    -taylororiginal(<expression>) or - taylororiginal <simple_expression> -

    -

    -

    -

    -examples:

    -

    
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    taylororiginal hugo; 
    -
    -  ***** Taylor kernel doesn't have an original part in TAYLORORIGINAL
    -
    -
    -    on taylorkeeporiginal; 
    -
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    taylororiginal hugo; 
    -
    -   X
    -  E   
    -
    -

    An error is signalled if the argument is not a Taylor kernel or if - - the original expression was not kept, i.e. if - -taylorkeeporiginal was set off during expansi -on. -

    -

    -

    - - - -taylorprintorder -INDEX

    - - - -TAYLORPRINTORDER _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - - taylorprintorder, if set to on, causes the remainder - to be printed in big-O notation. Otherwise, three dots are printed. - Default is on. -

    -

    - - - -taylorprintterms -INDEX

    - - - -TAYLORPRINTTERMS _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - - Only a certain number of (non-zero) coefficients are printed. If - there are more, an expression of the form n terms is printed - to indicate how many non-zero terms have been suppressed. The - number of terms printed is given by the value of the shared - algebraic variable taylorprintterms. Allowed values are - integers and the special identifier all. The latter setting - specifies that all terms are to be printed. The default setting is - 5. -

    -

    -

    -examples:

    -

    
    -    taylor(e^(x^2+y^2),x,0,4,y,0,4); 
    -
    -
    -       2   1  4    2    2  2                              5  5
    -  1 + Y  + -*Y  + X  + Y *X  +             (4 terms) + O(X ,Y )
    -           2
    -
    -
    -    taylorprintterms := all; 
    -
    -  TAYLORPRINTTERMS := ALL 
    -
    -
    -    taylor(e^(x^2+y^2),x,0,4,y,0,4); 
    -
    -
    -       2   1  4    2    2  2   1  4  2   1  4   1  2  4
    -  1 + Y  + -*Y  + X  + Y *X  + -*Y *X  + -*X  + -*Y *X
    -           2                   2         2      2
    -     1  4  4      5  5
    -   + -*Y *X  + O(X ,Y )
    -     4
    -      
    -
    -

    - - -taylorrevert -INDEX

    - - - -TAYLORREVERT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - taylorrevert allows reversion of a Taylor series of a - function f, i.e., to compute the first terms of the expansion of the - inverse of f from the expansion of f. -

    -

    -

    -syntax:

    -taylorrevert(<expression>, - <var>,<var>) -

    -

    -

    -The first argument must evaluate to a Taylor kernel with the second - argument being one of its expansion variables. -

    -

    -

    -examples:

    -

    
    -    taylor(u - u**2,u,0,5); 
    -
    -       2      6
    -  U - U  + O(U ) 
    -
    -
    -    taylorrevert (ws,u,x); 
    -
    -       2      3      4       5      6
    -  X + X  + 2*X  + 5*X  + 14*X  + O(X )  
    -
    -

    - - -taylorseriesp -INDEX

    - - - -TAYLORSERIESP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - This operator may be used to determine if its argument is a Taylor - kernel. -

    -

    -

    -syntax:

    -taylorseriesp(<expression>) or taylorseriesp - <simple_expression> -

    -

    -

    -

    -examples:

    -

    
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    if taylorseriesp hugo then OK;
    -
    -  OK 
    -
    -
    -    if taylorseriesp(hugo + y) then OK else NO; 
    -
    -
    -  NO  
    -
    -

    Note that this operator is subject to the same restrictions as, - e.g., ordp or numberp, i.e. it may only be used in - boolean expressions in if or let statements. -

    -

    -

    - - - -taylortemplate -INDEX

    - - - -TAYLORTEMPLATE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - The template of a Taylor kernel, i.e. the list of all variables - with respect to which expansion took place together with expansion - point and order can be extracted using -

    -

    -

    -syntax:

    -taylortemplate(<expression>) or - taylortemplate <simple_expression> -

    -

    -

    -This returns a list of lists with the three elements - (VAR,VAR0,ORDER). An error is signalled if the argument is not a - Taylor kernel. -

    -

    -

    -examples:

    -

    
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    taylortemplate hugo; 
    -
    -  {{X,0,2}}  
    -
    -

    - - -taylortostandard -INDEX

    - - - -TAYLORTOSTANDARD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - This operator converts all Taylor kernels in its argument into - standard form and resimplifies the result. -

    -

    -

    -syntax:

    -taylortostandard(<expression>) or - taylortostandard <simple_expression> -

    -

    -

    -

    -examples:

    -

    
    -    hugo := taylor(exp(x),x,0,2); 
    -
    -                  1  2      3
    -  HUGO := 1 + X + -*X  + O(X )
    -                  2
    -
    -
    -    taylortostandard hugo; 
    -
    -   2
    -  X  + 2*X + 2
    -  ------------  
    -       2
    -
    -

    - - - -Taylor series -INDEX

    -Taylor series

    -
  • TAYLOR introduction

    -

  • taylor operator

    -

  • taylorautocombine switch

    -

  • taylorautoexpand switch

    -

  • taylorcombine operator

    -

  • taylorkeeporiginal switch

    -

  • taylororiginal operator

    -

  • taylorprintorder switch

    -

  • taylorprintterms variable

    -

  • taylorrevert operator

    -

  • taylorseriesp operator

    -

  • taylortemplate operator

    -

  • taylortostandard operator

    -

  • - - -GNUPLOT_and_REDUCE -INDEX

    - - - -GNUPLOT AND REDUCE _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -

    -

    -The GNUPLOT system provides easy to use graphics output -for curves or surfaces which are defined by -formulas and/or data sets. GNUPLOT supports -a great variety of output devices -such as X-windows, VGA screen, postscript, picTeX. -The REDUCE GNUPLOT package lets one use the GNUPLOT -graphical output directly from inside REDUCE, either for -the interactive display of curves/surfaces or for the production -of pictures on paper. -

    -

    -Note that this package may not be supported on all system -platforms. -

    -

    -For a detailed description you should read the GNUPLOT -system documentation, available together with the GNUPLOT -installation material from several servers by anonymous FTP. -

    -

    -The REDUCE developers thank the GNUPLOT people for their permission -to distribute GNUPLOT together with REDUCE. -

    -

    - - - -Axes_names -INDEX

    - - - -AXES NAMES

    -

    - -Inside REDUCE the choice of variable names for a graph is completely -free. For referring to the GNUPLOT axes the names -X and Y for 2 dimensions, X,Y and Z for 3 dimensions are used -in the usual schoolbook sense independent from the variables of -the REDUCE expression. -

    -

    -

    -examples:

    -

    - - -Pointset -INDEX

    - - - -POINTSET _ _ _ _ _ _ _ _ _ _ _ _ type

    -

    - -

    -

    -A curve can be give as a set of precomputed points (a polygon) -in 2 or 3 dimensions. Such a point set is a -list -of points, where each point is a -list 2 (or 3) -numbers. These numbers are interpreted as (x,y) -(or x,y,z) coordinates. All points of one set must have -the same dimension. -

    -

    -

    -examples:

    -

    Also a surface in 3d can be given by precomputed point -s, -but only on a logically orthogonal mesh: the surface is defined -by a list of curves (in 3d) which must have a uniform length. -GNUPLOT then will draw an orthogonal mesh by first drawing the -given lines, and second connecting the 1st point of the 1st curve -with the 1st point of the 2nd curve, that one with the 1st point -of the 3rd curve and so on for all curves and for all indexes. -

    -

    - - - -PLOT -INDEX

    - - - -PLOT _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The command plot is the main entry for drawing a -picture from inside REDUCE. -

    -

    -

    -syntax:

    -plot(<spec>,<spec>,...) -

    -

    -

    -where <spec> is a <function>, a <range> or an <option>. - -

    -

    -<function>: -

    -

    -- an expression depending -on one unknown (e.g. sin(x) or two unknowns (e.g. -sin(x+y), -

    -

    -- an equation with a function on its right-hand -side and a single name on its left-hand side (e.g. -z=sin(x+y) where the name on the left-hand side specifies -the dependent variable. -

    -

    -- a list of functions: -if in 2 dimensions the picture should have more than one -curve the expressions can be given as list (e.g. {sin(x),cos(x)}). -

    -

    -- an equation with zero left or right hand side describing - an implicit curve in two dimensions (e.g. x**3+x*y**3-9x=0). -

    -

    -- a point set: the graph can be given -as point set in 2 dimensions or a -pointset or pointset list -in 3 dimensions. -

    -

    -<range>: -

    -

    -Each dependent and independent variable can be limited -to an interval by an equation where the left-hand side specifies -the variable and the right-hand side defines the -interval, -e.g. x=( -3 .. 5). -

    -

    -If omitted the independent variables -range from -10 to 10 and the dependent variable is limited only -by the precision of the IEEE floating point arithmetic. -

    -

    -<option>: -

    -

    -An option can be an equation equating a variable -and a value (in general a string), or a keyword(GNUPLOT switch). -These have to be included in the gnuplot command arguments directly. -Strings have to be enclosed in -string quotes (see -string). Available options are: -

    -

    - -title: assign a heading (default: empty) -

    -

    - -xlabel: set label for the x axis -

    -

    - -ylabel: set label for the y axis -

    -

    - -zlabel: set label for the z axis -

    -

    - -terminal: select an output device -

    -

    - -size: rescale the picture -

    -

    - -view: set a viewpoint -

    -

    -(no) -contour: 3d: add contour lines -

    -

    -(no) -surface: 3d: draw surface (default: yes) -

    -

    -(no) -hidden3d: 3d: remove hidden lines (default: no) -

    -

    -

    -examples:

    -

    
    -plot(cos x);
    -
    -plot(s=sin phi,phi=(-3 .. 3));
    -
    -plot(sin phi,cos phi,phi=(-3 .. 3));
    -
    -plot (cos sqrt(x**2 + y**2),x=(-3 .. 3),y=(-3 .. 3),hidden3d);
    -
    -plot {{0,0},{0,1},{1,1},{0,0},{1,0},{0,1},{0.5,1.5},{1,1},{1,0}};
    -
    -
    -
    -on rounded;
    -
    -w:=for j:=1:200 collect {1/j*sin j,1/j*cos j,j/200}$
    -
    -plot w; 
    -

    Additional control of the plot operation: - -plotrefine, - -plot_xmesh, -plot_ymesh, -trplot, - -plotkeep, -show_grid. -

    -

    - - - -PLOTRESET -INDEX

    - - - -PLOTRESET _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The command plotreset closes the current GNUPLOT windows. -The next call to -plot will create a new one. plotreset -can also be used to reset the system status after technical problems. -

    -

    -

    -syntax:

    -plotreset; -

    -

    -

    - - - -title -INDEX

    - - - -TITLE _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Assign a title to the GNUPLOT graph. -

    -

    -

    -syntax:

    -title= <string> -

    -

    -

    -

    -examples:

    -

    
    -title="annual revenue in 1993"
    -

    - - -xlabel -INDEX

    - - - -XLABEL _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Assign a name to to the x axis (see -axes names). -

    -

    -

    -syntax:

    -xlabel= <string> -

    -

    -

    -

    -examples:

    -

    
    -xlabel="month"
    -

    - - -ylabel -INDEX

    - - - -YLABEL _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Assign a name to to the x axis (see -axes names). -

    -

    -

    -syntax:

    -ylabel= <string> -

    -

    -

    -

    -examples:

    -

    
    -ylabel="million forint"
    -

    - - -zlabel -INDEX

    - - - -ZLABEL _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Assign a name to to the z axis (see -axes names). -

    -

    -

    -syntax:

    -zlabel= <string> -

    -

    -

    -

    -examples:

    -

    
    -zlabel="local weight"
    -

    - - -terminal -INDEX

    - - - -TERMINAL _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Select a different output device. The possible values here -depend highly on the facilities installed for your GNUPLOT -software. -

    -

    -

    -syntax:

    -terminal= <string> -

    -

    -

    -

    -examples:

    -

    
    -terminal="x11"
    -

    - - -size -INDEX

    - - - -SIZE _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Rescale the graph (not the window!) in x and y direction. -Default is 1.0 (no rescaling). -

    -

    -

    -syntax:

    -size= "<sx>,<sy>" -

    -

    -

    -where <sx>,<sy> are floating point number not too -far from 1.0. -

    -examples:

    -

    
    -size="0.7,1"
    -

    -

    - - - -view -INDEX

    - - - -VIEW _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    - -plotoption: -Set a new viewpoint by turning the object around the x and then -around the z axis (see -axes names). -

    -

    -

    -syntax:

    -view= "<sx>,<sz>" -

    -

    -

    -where <sx>,<sz> are floating point number representing -angles in degrees. -

    -examples:

    -

    
    -view="30,130"
    -

    -

    - - - -contour -INDEX

    - - - -CONTOUR _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    - -plotoption: -If contour is member of the options for a 3d -plot -contour lines are projected to the z=0 plane -(see -axes names). The absence of contour lines -can be selected explicitly by including nocontour. Default -is nocontour. -

    -

    - - - -surface -INDEX

    - - - -SURFACE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    - -plotoption: -If surface is member of the options for a 3d -plot -the surface is drawn. The absence of the surface plotting -can be selected by including nosurface, e.g. if -only the -contour should be visualized. Default is surface -. -

    -

    - - - -hidden3d -INDEX

    - - - -HIDDEN3D _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    - -plotoption: -If hidden3d is member of the options for a 3d -plot -hidden lines are removed from the picture. Otherwise a -surface is drawn as transparent object. Default is -nohidden3d. Selecting hidden3d increases the -computing time substantially. -

    -

    - - - -PLOTKEEP -INDEX

    - - - -PLOTKEEP _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -Normally all intermediate data sets are deleted after terminating -a plot session. If the switch plotkeep is set -on, -the data sets are kept for eventual post processing independent -of REDUCE. -

    -

    - - - -PLOTREFINE -INDEX

    - - - -PLOTREFINE _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -In general -plot tries to generate smooth pictures by evaluating -the functions at interior points until the distances are fine -enough. This can require a lot of computing time if the -single function evaluation is expensive. The refinement is -controlled by the switch plotrefine which is -on -by default. When you turn it -off the functions will -be evaluated only at the basic points (see -plot_xmesh, - -plot_ymesh). -

    -

    - - - -plot_xmesh -INDEX

    - - - -PLOT_XMESH _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The integer value of the global variable plot_xmesh -defines the number of initial function evaluations in x -direction (see -axes names) for -plot. For 2d graphs additional -points will be used as long as -plotrefine is on. -For 3d graphs this number defines also the number of mesh lines -orthogonal to the x axis. -

    -

    - - - -plot_ymesh -INDEX

    - - - -PLOT_YMESH _ _ _ _ _ _ _ _ _ _ _ _ variable

    -

    - -

    -

    -The integer value of the global variable plot_ymesh -defines for 3d -plot calls the number of function evaluations in y -direction (see -axes names) and the number of mesh lines -orthogonal to the y axis. -

    -

    - - - -SHOW_GRID -INDEX

    - - - -SHOW_GRID _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -The grid for localizing an implicitly defined curve in -plot -consists of triangles. These are computed initially equally distributed -over the x-y plane controlled by -plot_xmesh. The grid is -refined adaptively in several levels. The final grid can be visualized -by setting on the switch show_grid. -

    -

    - - - -TRPLOT -INDEX

    - - - -TRPLOT _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -In general the interaction between REDUCE and GNUPLOT is performed -as silently as possible. However, sometimes it might be useful -to see the GNUPLOT commands generated by REDUCE, e.g. for a -postprocessing of generated data sets independent of REDUCE. -When the switch trplot is set on all GNUPLOT commands will -be printed to the standard output additionally. -

    -

    - - - -Gnuplot package -INDEX

    -Gnuplot package

    -
  • GNUPLOT and REDUCE introduction

    -

  • Axes names concept

    -

  • Pointset type

    -

  • PLOT command

    -

  • PLOTRESET command

    -

  • title variable

    -

  • xlabel variable

    -

  • ylabel variable

    -

  • zlabel variable

    -

  • terminal variable

    -

  • size variable

    -

  • view variable

    -

  • contour switch

    -

  • surface switch

    -

  • hidden3d switch

    -

  • PLOTKEEP switch

    -

  • PLOTREFINE switch

    -

  • plot_xmesh variable

    -

  • plot_ymesh variable

    -

  • SHOW_GRID switch

    -

  • TRPLOT switch

    -

  • - - -Linear_Algebra_package -INDEX

    - - - -LINEAR ALGEBRA PACKAGE _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -

    -

    -This section briefly describes what's available in the Linear Algebra -package. -

    -

    -Note on examples: In the examples throughout this -document, the matrix A will be -

    
    -     [1  2  3]
    -     [4  5  6]
    -     [7  8  9].
    -

    -

    -The functions can be divided into four categories: -

    -

    -Basic matrix handling -

    -

    - -add_columns, -

    -

    - -add_rows, -

    -

    - -add_to_columns, -

    -

    - -add_to_rows, -

    -

    - -augment_columns, -

    -

    - -char_poly, -

    -

    - -column_dim, -

    -

    - -copy_into, -

    -

    - -diagonal, -

    -

    - -extend, -

    -

    - -find_companion, -

    -

    - -get_columns, -

    -

    - -get_rows, -

    -

    - -hermitian_tp, -

    -

    - -matrix_augment, -

    -

    - -matrix_stack, -

    -

    - -minor, -

    -

    - -mult_columns, -

    -

    - -mult_rows, -

    -

    - -pivot, -

    -

    - -remove_columns, -

    -

    - -remove_rows, -

    -

    - -row_dim, -

    -

    - -rows_pivot, -

    -

    - -stack_rows, -

    -

    - -sub_matrix, -

    -

    - -swap_columns, -

    -

    - -swap_entries, -

    -

    - -swap_rows. -

    -

    -Constructors -- functions that create matrices -

    -

    - -band_matrix, -

    -

    - -block_matrix, -

    -

    - -char_matrix, -

    -

    - -coeff_matrix, -

    -

    - -companion, -

    -

    - -hessian, -

    -

    - -hilbert, -

    -

    - -jacobian, -

    -

    - -jordan_block, -

    -

    - -make_identity, -

    -

    - -random_matrix, -

    -

    - -toeplitz, -

    -

    - -vandermonde. -

    -

    -High level algorithms -

    -

    - -char_poly, -

    -

    - -cholesky, -

    -

    - -gram_schmidt, -

    -

    - -lu_decom, -

    -

    - -pseudo_inverse, -

    -

    - -simplex, -

    -

    - -svd. -

    -

    -Normal Forms -

    -

    -There is a separate package, NORMFORM, for computing -the following matrix normal forms in REDUCE: -

    -

    - -smithex, -

    -

    - -smithex_int, -

    -

    - -frobenius, -

    -

    - -ratjordan, -

    -

    - -jordansymbolic, -

    -

    - -jordan. -

    -

    -Predicates -

    -

    - -matrixp, -

    -

    - -squarep, -

    -

    - -symmetricp. -

    -

    - - - -fast_la -INDEX

    - - - -FAST_LA _ _ _ _ _ _ _ _ _ _ _ _ switch

    -

    - -

    -

    -By turning the fast_la switch on, the speed of the following -functions will be increased: -

    -

    - -add_columns, -

    -

    - -add_rows, -

    -

    - -augment_columns, -

    -

    - -column_dim, -

    -

    - -copy_into, -

    -

    - -make_identity, -

    -

    - -matrix_augment, -

    -

    - -matrix_stack, -

    -

    - -minor, -

    -

    - -mult_columns, -

    -

    - -mult_rows, -

    -

    - -pivot, -

    -

    - -remove_columns, -

    -

    - -remove_rows, -

    -

    - -rows_pivot, -

    -

    - -squarep, -

    -

    - -stack_rows, -

    -

    - -sub_matrix, -

    -

    - -swap_columns, -

    -

    - -swap_entries, -

    -

    - -swap_rows, -

    -

    - -symmetricp. -

    -

    -The increase in speed will be negligible unless you are making a -significant number (i.e. thousands) of calls. When using this switch, -error checking is minimized. This means that illegal input may give -strange error messages. Beware. -

    -

    - - - -add_columns -INDEX

    - - - -ADD_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Add columns, add rows: -

    -syntax:

    -

    -

    -add_columns(<matrix>,<c1>,<c2>,<expr>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<c1>,<c2> :- positive integers. -

    -

    -<expr> :- a scalar expression. -

    -

    -The Operator add_columns replaces column <\meta{c2>} of -<matrix> by <expr> * column(<matrix>,<c1>) + -column(<matrix>,<c2>). -

    -

    -add_rowsperforms the equivalent task on the rows of -<matrix>. -

    -

    -

    -examples:

    -

    
    -
    -add_columns(A,1,2,x); 
    -
    -  [1   x + 2   3]
    -  [             ]
    -  [4  4*x + 5  6]
    -  [             ]
    -  [7  7*x + 8  9]
    -
    -
    -
    -add_rows(A,2,3,5); 
    -
    -  [1   2   3 ]
    -  [          ]
    -  [4   5   6 ]
    -  [          ]
    -  [27  33  39]
    -
    -

    Related functions: -add_to_columns, - -add_to_rows, -mult_columns, - -mult_rows. -

    -

    - - - -add_rows -INDEX

    - - - -ADD_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - see: -add_columns. -

    -

    - - - -add_to_columns -INDEX

    - - - -ADD_TO_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Add to columns, add to rows: -

    -

    -

    -syntax:

    -add_to_columns(<matrix>,<column\_list>,<expr>) -

    -

    -

    -<matrix> :- a matrix. -

    -

    -<column\_list> :- a positive integer or a list of positive - integers. -

    -

    -<expr> :- a scalar expression. -

    -

    -add_to_columnsadds <expr> to each column specified in -<column\_list> of <matrix>. -

    -

    -add_to_rowsperforms the equivalent task on the rows of -<matrix>. -

    -

    -

    -examples:

    -

    
    -
    -add_to_columns(A,{1,2},10); 
    -
    -  [11  12  3]
    -  [         ]
    -  [14  15  6]
    -  [         ]
    -  [17  18  9]
    -
    -
    -
    -add_to_rows(A,2,-x) 
    -
    -   
    -  [   1         2         3    ]
    -  [                            ]
    -  [ - x + 4   - x + 5   - x + 6]
    -  [                            ]
    -  [   7         8         9    ]
    -
    -

    Related functions: - -add_columns, -add_rows, -mult_rows, - -mult_columns. -

    -

    - - - -add_to_rows -INDEX

    - - - -ADD_TO_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - - see: -add_to_columns. -

    -

    - - - -augment_columns -INDEX

    - - - -AUGMENT_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Augment columns, stack rows: -

    -

    -

    -syntax:

    -augment_columns(<matrix>,<column\_list>) -

    -

    -

    -<matrix> :- a matrix. -

    -

    -<column\_list> :- either a positive integer or a list of positive - integers. -

    -

    -augment_columnsgets hold of the columns of <matrix> -specified in column_list and sticks them together. -

    -

    -stack_rowsperforms the same task on rows of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -augment_columns(A,{1,2}) 
    -
    -   
    -  [1  2]
    -  [    ]
    -  [4  5]
    -  [    ]
    -  [7  8]
    -
    -
    -
    -stack_rows(A,{1,3}) 
    -
    -  [1  2  3]
    -  [       ]
    -  [7  8  9]
    -
    -

    Related functions: - -get_columns, -get_rows, -sub_matrix. -

    -

    - - - -band_matrix -INDEX

    - - - -BAND_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -band_matrix(<expr\_list>,<square\_size>) -

    -

    -

    -<expr\_list> :- either a single scalar expression or a list of - an odd number of scalar expressions. -

    -

    -<square\_size> :- a positive integer. -

    -

    -band_matrixcreates a square matrix of dimension -<square\_size>. The diagonal consists of the middle expression -of the <expr\_list>. The expressions to the left of this fill -the required number of sub_diagonals and the expressions to the right -the super_diagonals. -

    -

    -

    -examples:

    -

    
    -
    -band_matrix({x,y,z},6) 
    -
    -  [y  z  0  0  0  0]
    -  [                ]
    -  [x  y  z  0  0  0]
    -  [                ]
    -  [0  x  y  z  0  0]
    -  [                ]
    -  [0  0  x  y  z  0]
    -  [                ]
    -  [0  0  0  x  y  z]
    -  [                ]
    -  [0  0  0  0  x  y]
    -
    -

    Related functions: -diagonal. -

    -

    - - - -block_matrix -INDEX

    - - - -BLOCK_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -block_matrix(<r>,<c>,<matrix\_list>) -

    -

    -

    -<r>,<c> :- positive integers. -

    -

    -<matrix\_list> :- a list of matrices. -

    -

    -block_matrixcreates a matrix that consists of <r> by -<c> matrices filled from the <matrix\_list> row wise. -

    -

    -

    -examples:

    -

    
    -B := make_identity(2); 
    -
    -       [1  0]
    -  b := [    ]
    -       [0  1]
    -
    -
    -
    -C := mat((5),(5)); 
    -
    -       [5]
    -  c := [ ]
    -       [5]
    -
    -
    -
    -D := mat((22,33),(44,55)); 
    -
    -       [22  33]
    -  d := [      ]
    -       [44  55]
    -
    -
    -
    -block_matrix(2,3,{B,C,D,D,C,B}); 
    -
    -
    -  [1   0   5  22  33]
    -  [                 ]
    -  [0   1   5  44  55]
    -  [                 ]
    -  [22  33  5  1   0 ]
    -  [                 ]
    -  [44  55  5  0   1 ]
    -
    -

    - - -char_matrix -INDEX

    - - - -CHAR_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -char_matrix(<matrix>,<lambda>) -

    -

    -

    -<matrix> :- a square matrix. -<lambda> :- a symbol or algebraic expression. -

    -

    -<char\_matrix> creates the characteristic matrix C of -<matrix>. -

    -

    -This is C = <lambda> * Id - A. -Id is the identity matrix. -

    -

    -

    -examples:

    -

    
    -
    -char_matrix(A,x); 
    -
    -  [x - 1   -2     -3  ]
    -  [                   ]
    -  [ -4    x - 5   -6  ]
    -  [                   ]
    -  [ -7     -8    x - 9]
    -
    -

    Related functions: -char_poly. -

    -

    - - - -char_poly -INDEX

    - - - -CHAR_POLY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -char_poly(<matrix>,<lambda>) -

    -

    -

    -<matrix> :- a square matrix. -

    -

    -<lambda> :- a symbol or algebraic expression. -

    -

    -char_polyfinds the characteristic polynomial of <matrix>. -This is the determinant of <lambda> * Id - A. -Id is the identity matrix. -

    -

    -

    -examples:

    -

    
    -char_poly(A,x); 
    -
    -   3     2
    -  x -15*x -18*x
    -
    -

    Related functions: -char_matrix. -

    -

    - - - -cholesky -INDEX

    - - - -CHOLESKY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -cholesky(<matrix>) -

    -

    -

    -<matrix> :- a positive definite matrix containing numeric entries. -

    -

    -choleskycomputes the cholesky decomposition of <matrix>. -

    -

    -It returns {L,U} where L is a lower matrix, U is an upper matrix, -A = LU, and U = L^T. -

    -

    -

    -examples:

    -

    
    -F := mat((1,1,0),(1,3,1),(0,1,1)); 
    -
    -
    -       [1  1  0]
    -       [       ]
    -  f := [1  3  1]
    -       [       ]
    -       [0  1  1]
    -
    -
    -
    -on rounded; 
    -
    -cholesky(F); 
    -
    -  {
    -   [1        0               0       ]
    -   [                                 ]
    -   [1  1.41421356237         0       ]
    -   [                                 ]
    -   [0  0.707106781187  0.707106781187]
    -   ,
    -   [1        1              0       ]
    -   [                                ]
    -   [0  1.41421356237  0.707106781187]
    -   [                                ]
    -   [0        0        0.707106781187]
    -  }
    -
    -

    Related functions: -lu_decom. -

    -

    - - - -coeff_matrix -INDEX

    - - - -COEFF_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -coeff_matrix({<lineq\_list>}) -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<lineq\_list> :- linear equations. Can be of the form equation = number -or just equation. -

    -

    -coeff_matrixcreates the coefficient matrix C of the linear -equations. -

    -

    -It returns {C,X,B} such that CX = B. -

    -

    -

    -examples:

    -

    
    -
    -coeff_matrix({x+y+4*z=10,y+x-z=20,x+y+4}); 
    -
    -
    -  {
    -   [4   1  1]
    -   [        ]
    -   [-1  1  1]
    -   [        ]
    -   [0   1  1]
    -   ,
    -   [z]
    -   [ ]
    -   [y]
    -   [ ]
    -   [x]
    -   ,
    -   [10]
    -   [  ]
    -   [20]
    -   [  ]
    -   [-4]
    -  }
    -
    -

    - - -column_dim -INDEX

    - - - -COLUMN_DIM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Column dimension, row dimension: -

    -

    -

    -syntax:

    -column_dim(<matrix>) -

    -

    -

    -<matrix> :- a matrix. -

    -

    -column_dimfinds the column dimension of <matrix>. -

    -

    -row_dimfinds the row dimension of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -column_dim(A); 
    -
    -  3 
    -
    -
    -row_dim(A); 
    -
    -  3 
    -
    -

    - - -companion -INDEX

    - - - -COMPANION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -companion(<poly>,<x>) -

    -

    -

    -<poly> :- a monic univariate polynomial in <x>. -

    -

    -<x> :- the variable. -

    -

    -companioncreates the companion matrix C of <poly>. -

    -

    -This is the square matrix of dimension n, where n is the degree of -<poly> w.r.t. <x>. -

    -

    -The entries of C are: -

    -

    -C(i,n) = -coeffn(<poly>,<x>,i-1) for i = 1 - ... n, C(i,i-1) = 1 for i = 2 ... n and - the rest are 0. -

    -

    -

    -examples:

    -

    
    -
    -companion(x^4+17*x^3-9*x^2+11,x); 
    -
    -
    -  [0  0  0  -11]
    -  [            ]
    -  [1  0  0   0 ]
    -  [            ]
    -  [0  1  0   9 ]
    -  [            ]
    -  [0  0  1  -17]
    -
    -

    Related functions: - -find_companion. -

    -

    - - - -copy_into -INDEX

    - - - -COPY_INTO _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -copy_into(<A>,<B>,<r>,<c>) -

    -

    -

    -<A>,<B> :- matrices. -

    -

    -<r>,<c> :- positive integers. -

    -

    -copy_intocopies matrix <matrix> into <B> with -<matrix>(1,1) at <B>(<r>,<c>). -

    -

    -

    -examples:

    -

     
    -
    -G := mat((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)); 
    -
    -
    -       [0  0  0  0  0]
    -       [             ]
    -       [0  0  0  0  0]
    -       [             ]
    -  g := [0  0  0  0  0]
    -       [             ]
    -       [0  0  0  0  0]
    -       [             ]
    -       [0  0  0  0  0]
    -
    -
    -
    -copy_into(A,G,1,2); 
    -
    -  [0  1  2  3  0]
    -  [             ]
    -  [0  4  5  6  0]
    -  [             ]
    -  [0  7  8  9  0]
    -  [             ]
    -  [0  0  0  0  0]
    -  [             ]
    -  [0  0  0  0  0]
    -
    -

    Related functions: - -augment_columns, -extend, -matrix_augment, - -matrix_stack, -stack_rows, -sub_matrix. -

    -

    - - - -diagonal -INDEX

    - - - -DIAGONAL _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -diagonal({<mat\_list>}) -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<mat\_list> :- each can be either a scalar expression or a -square -matrix. -

    -

    -diagonalcreates a matrix that contains the input on the -diagonal. -

    -

    -

    -examples:

    -

    
    -
    -H := mat((66,77),(88,99)); 
    -
    -       [66  77]
    -  h := [      ]
    -       [88  99]
    -
    -
    -
    -diagonal({A,x,H}); 
    -
    -  [1  2  3  0  0   0 ]
    -  [                  ]
    -  [4  5  6  0  0   0 ]
    -  [                  ]
    -  [7  8  9  0  0   0 ]
    -  [                  ]
    -  [0  0  0  x  0   0 ]
    -  [                  ]
    -  [0  0  0  0  66  77]
    -  [                  ]
    -  [0  0  0  0  88  99]
    -
    -

    Related functions: - -jordan_block. -

    -

    - - - -extend -INDEX

    - - - -EXTEND _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -extend(<matrix>,<r>,<c>,<expr>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<r>,<c> :- positive integers. -

    -

    -<expr> :- algebraic expression or symbol. -

    -

    -extendreturns a copy of <matrix> that has been extended by -<r> rows and <c> columns. The new entries are made equal to -<expr>. -

    -

    -

    -examples:

    -

    
    -
    -extend(A,1,2,x); 
    -
    -  [1  2  3  x  x]
    -  [             ]
    -  [4  5  6  x  x]
    -  [             ]
    -  [7  8  9  x  x]
    -  [             ]
    -  [x  x  x  x  x]
    -
    -

    Related functions: - -copy_into, -matrix_augment, -matrix_stack, - -remove_columns, -remove_rows. -

    -

    - - - -find_companion -INDEX

    - - - -FIND_COMPANION _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -find_companion(<matrix>,<x>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<x> :- the variable. -

    -

    -Given a companion matrix, find_companion finds the polynomial -from which it was made. -

    -

    -

    -examples:

    -

    
    -
    -C := companion(x^4+17*x^3-9*x^2+11,x); 
    -
    -
    -       [0  0  0  -11]
    -       [            ]
    -       [1  0  0   0 ]
    -  c := [            ]
    -       [0  1  0   9 ]
    -       [            ]
    -       [0  0  1  -17]
    -
    -
    -
    -find_companion(C,x); 
    -
    -   4     3    2
    -  x +17*x -9*x +11
    -
    -

    Related functions: - -companion. -

    -

    - - - -get_columns -INDEX

    - - - -GET_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Get columns, get rows: -

    -

    -

    -syntax:

    -get_columns(<matrix>,<column\_list>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<c> :- either a positive integer or a list of positive - integers. -

    -

    -get_columnsremoves the columns of <matrix> specified in -<column\_list> and returns them as a list of column matrices. -

    -

    -get_rowsperforms the same task on the rows of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -get_columns(A,{1,3}); 
    -
    -  {
    -   [1]
    -   [ ]
    -   [4]
    -   [ ]
    -   [7]
    -   ,
    -   [3]
    -   [ ]
    -   [6]
    -   [ ]
    -   [9]
    -  }
    -
    -
    -
    -get_rows(A,2); 
    -
    -  {
    -   [4  5  6]
    -  }
    -
    -

    Related functions: - -augment_columns, -stack_rows, -sub_matrix. -

    -

    - - - -get_rows -INDEX

    - - - -GET_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -get_columns. -

    -

    - - - -gram_schmidt -INDEX

    - - - -GRAM_SCHMIDT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -gram_schmidt({<vec\_list>}) -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<vec\_list> :- linearly independent vectors. Each vector must be -written as a list, eg:{1,0,0}. -

    -

    -gram_schmidtperforms the gram_schmidt orthonormalization on -the input vectors. -

    -

    -It returns a list of orthogonal normalized vectors. -

    -

    -

    -examples:

    -

    
    -
    -gram_schmidt({{1,0,0},{1,1,0},{1,1,1}}); 
    -
    -
    -  {{1,0,0},{0,1,0},{0,0,1}} 
    -
    -
    -
    -gram_schmidt({{1,2},{3,4}}); 
    -
    -
    -        1         2        2*sqrt(5)   -sqrt(5)
    -  {{ ------- , ------- },{ --------- , -------- }}
    -     sqrt(5)   sqrt(5)         5          5
    -
    -

    - - -hermitian_tp -INDEX

    - - - -HERMITIAN_TP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    - hermitian_tp(<matrix>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -hermitian_tpcomputes the hermitian transpose of <matrix>. -

    -

    -This is a -matrix in which the (i,j)'th entry is the conjugate -of the (j,i)'th entry of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -J := mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); 
    -
    -
    -       [i + 1  i + 2  i + 3]
    -       [                   ]
    -  j := [  4      5      2  ]
    -       [                   ]
    -       [  1      i      0  ]
    -
    -
    -
    -hermitian_tp(j); 
    -
    -  [ - i + 1  4   1  ]
    -  [                 ]
    -  [ - i + 2  5   - i]
    -  [                 ]
    -  [ - i + 3  2   0  ]
    -
    -

    Related functions: - -tp. -

    -

    - - - -hessian -INDEX

    - - - -HESSIAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -hessian(<expr>,<variable\_list>) -

    -

    -

    -<expr> :- a scalar expression. -

    -

    -<variable\_list> :- either a single variable or a list of - variables. -

    -

    -hessiancomputes the hessian matrix of <expr> w.r.t. the -variables in <variable\_list>. -

    -

    -This is an n by n matrix where n is the number of variables and the -(i,j)'th entry is -df(<expr>,<variable\_list>(i), -<variable\_list>(j)). -

    -

    -

    -examples:

    -

    
    -
    -hessian(x*y*z+x^2,{w,x,y,z}); 
    -
    -  [0  0  0  0]
    -  [          ]
    -  [0  2  z  y]
    -  [          ]
    -  [0  z  0  x]
    -  [          ]
    -  [0  y  x  0]
    -
    -

    Related functions: -df. -

    -

    - - - -hilbert -INDEX

    - - - -HILBERT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -hilbert(<square\_size>,<expr>) -

    -

    -

    -<square\_size> :- a positive integer. -

    -

    -<expr> :- an algebraic expression. -

    -

    -hilbertcomputes the square hilbert matrix of dimension -<square\_size>. -

    -

    -This is the symmetric matrix in which the (i,j)'th entry is -1/(i+j-<expr>). -

    -

    -

    -examples:

    -

    
    -
    -hilbert(3,y+x); 
    -
    -  [    - 1          - 1          - 1    ]
    -  [-----------  -----------  -----------]
    -  [ x + y - 2    x + y - 3    x + y - 4 ]
    -  [                                     ]
    -  [    - 1          - 1          - 1    ]
    -  [-----------  -----------  -----------]
    -  [ x + y - 3    x + y - 4    x + y - 5 ]
    -  [                                     ]
    -  [    - 1          - 1          - 1    ]
    -  [-----------  -----------  -----------]
    -  [ x + y - 4    x + y - 5    x + y - 6 ]
    -
    -

    - - -jacobian -INDEX

    - - - -JACOBIAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -jacobian(<expr\_list>,<variable\_list>) -

    -

    -

    -<expr\_list> :- either a single algebraic expression or a list - of algebraic expressions. -

    -

    -<variable\_list> :- either a single variable or a list of - variables. -

    -

    -jacobiancomputes the jacobian matrix of <expr\_list> -w.r.t. <variable\_list>. -

    -

    -This is a matrix whose (i,j)'th entry is -df(<expr\_list> -(i),<variable\_list>(j)). -

    -

    -The matrix is n by m where n is the number of variables and m the number -of expressions. -

    -

    -

    -examples:

    -

    
    - 
    -jacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z}); 
    -
    -
    -  [      3                 ]
    -  [0  4*x     0       0    ]
    -  [                        ]
    -  [     2                  ]
    -  [0   y    2*x*y     0    ]
    -  [                        ]
    -  [      3     3          2]
    -  [0  y*z   x*z    3*x*y*z ]
    -
    -

    Related functions: - -hessian, -df. -

    -

    - - - -jordan_block -INDEX

    - - - -JORDAN_BLOCK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -jordan_block(<expr>,<square\_size>) -

    -

    -

    -<expr> :- an algebraic expression or symbol. -

    -

    -<square\_size> :- a positive integer. -

    -

    -jordan_blockcomputes the square jordan block matrix J of -dimension <square\_size>. -

    -

    -The entries of J are: -

    -

    -J(i,i) = <expr> for i=1 - ... n, J(i,i+1) = 1 for i=1 - ... n-1, and all other entries are 0. -

    -

    -

    -examples:

    -

    
    -
    -jordan_block(x,5); 
    -
    -  [x  1  0  0  0]
    -  [             ]
    -  [0  x  1  0  0]
    -  [             ]
    -  [0  0  x  1  0]
    -  [             ]
    -  [0  0  0  x  1]
    -  [             ]
    -  [0  0  0  0  x]
    -
    -

    Related functions: -diagonal, -companion. -

    -

    - - - -lu_decom -INDEX

    - - - -LU_DECOM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -lu_decom(<matrix>) -

    -

    -

    -<matrix> :- a -matrix containing either numeric entries - or imaginary entries with numeric coefficients. -

    -

    -lu_decomperforms LU decomposition on <matrix>, ie: it -returns {L,U} where L is a lower diagonal -matrix, U an -upper diagonal -matrix and A = LU. -

    -

    -Caution: -

    -

    -The algorithm used can swap the rows of <matrix> during the -calculation. This means that LU does not equal <matrix> but a row -equivalent of it. Due to this, lu_decom returns {L,U,vec}. -The call convert(meta{matrix,vec)} will return the matrix that has -been decomposed, i.e: LU = convert(<matrix>,vec). -

    -

    -

    -examples:

    -

    
    -
    -K := mat((1,3,5),(-4,3,7),(8,6,4)); 
    -
    -
    -       [1   3  5]
    -       [        ]
    -  k := [-4  3  7]
    -       [        ]
    -       [8   6  4]
    -
    -
    -
    -on rounded;
    -
    -lu :=  lu_decom(K); 
    -
    -  lu := {
    -         [8    0      0  ]
    -         [               ]
    -         [-4  6.0     0  ]
    -         [               ]
    -         [1   2.25  1.125]
    -         ,
    -         [1  0.75  0.5]
    -         [            ]
    -         [0   1    1.5]
    -         [            ]
    -         [0   0     1 ]
    -         ,
    -         [3 2 3]}
    -
    -
    -
    -first lu * second lu; 
    -
    -  [8   6.0  4.0]
    -  [            ]
    -  [-4  3.0  7.0]
    -  [            ]
    -  [1   3.0  5.0]
    -
    -
    -
    -convert(K,third lu); 
    -
    -  P := mat((i+1,i+2,i+3),(4,5,2),(1,i,0));  _ _ _ 
    -       [i + 1  i + 2  i + 3]
    -       [                   ]
    -  p := [  4      5      2  ]
    -       [                   ]
    -       [  1      i      0  ]
    -
    -
    -lu :=  lu_decom(P); 
    -
    -  lu := {
    -         [  1        0                      0                ]
    -         [                                                   ]
    -         [  4     - 4*i + 5                 0                ]
    -         [                                                   ]
    -         [i + 1      3       0.414634146341*i + 2.26829268293]
    -         ,
    -         [1  i                 0                ]
    -         [                                      ]
    -         [0  1  0.19512195122*i + 0.243902439024]
    -         [                                      ]
    -         [0  0                 1                ]
    -         ,
    -         [3 2 3]}
    -
    -
    -
    -first lu * second lu; 
    -
    -  [  1      i       0   ]
    -  [                     ]
    -  [  4      5      2.0  ]
    -  [                     ]
    -  [i + 1  i + 2  i + 3.0]
    -
    -
    -
    -convert(P,third lu); 
    -
    -  [  1      i      0  ]
    -  [                   ]
    -  [  4      5      2  ]
    -  [                   ]
    -  [i + 1  i + 2  i + 3]
    -
    -

    -

    -

    -Related functions: -cholesky. -

    -

    - - - -make_identity -INDEX

    - - - -MAKE_IDENTITY _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -make_identity(<square\_size>) -

    -

    -

    -<square\_size> :- a positive integer. -

    -

    -make_identitycreates the identity matrix of dimension -<square\_size>. -

    -

    -

    -examples:

    -

    
    -
    -make_identity(4); 
    -
    -  [1  0  0  0]
    -  [          ]
    -  [0  1  0  0]
    -  [          ]
    -  [0  0  1  0]
    -  [          ]
    -  [0  0  0  1]
    -
    -

    Related functions: -diagonal. -

    -

    - - - -matrix_augment -INDEX

    - - - -MATRIX_AUGMENT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Matrix augment, matrix stack: -

    -

    -

    -syntax:

    -matrix_augment{<matrix\_list>} -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<matrix\_list> :- matrices. -

    -

    -matrix_augmentsticks the matrices in <matrix\_list> -together horizontally. -

    -

    -matrix_stacksticks the matrices in <matrix\_list> -together vertically. -

    -

    -

    -examples:

    -

    
    -
    -matrix_augment({A,A}); 
    -
    -  [1  2  3  1  2  3]
    -  [                ]
    -  [4  5  6  4  5  6]
    -  [                ]
    -  [7  8  9  7  8  9]
    -
    -
    -
    -matrix_stack(A,A); 
    -
    -  [1  2  3]
    -  [       ]
    -  [4  5  6]
    -  [       ]
    -  [7  8  9]
    -  [       ]
    -  [1  2  3]
    -  [       ]
    -  [4  5  6]
    -  [       ]
    -  [7  8  9]
    -
    -

    Related functions: - -augment_columns, -stack_rows, -sub_matrix. -

    -

    - - - -matrixp -INDEX

    - - - -MATRIXP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -matrixp(<test\_input>) -

    -

    -

    -<test\_input> :- anything you like. -

    -

    -matrixpis a boolean function that returns t if the input is a -matrix and nil otherwise. -

    -

    -

    -examples:

    -

    
    -
    -matrixp A; 
    -
    -  t 
    -
    -
    -matrixp(doodlesackbanana);
    -
    -  nil 
    -
    -

    Related functions: -squarep, -symmetricp. -

    -

    - - - -matrix_stack -INDEX

    - - - -MATRIX_STACK _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -matrix_augment. -

    -

    - - - -minor -INDEX

    - - - -MINOR _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -minor(<matrix>,<r>,<c>) -

    -

    -

    -<matrix> :- a -matrix. -<r>,<c> :- positive integers. -

    -

    -minorcomputes the (<r>,<c>)'th minor of <matrix>. -This is created by removing the <r>'th row and the <c>'th -column from <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -minor(A,1,3); 
    -
    -  [4  5]
    -  [    ]
    -  [7  8]
    -
    -

    Related functions: - -remove_columns, -remove_rows. -

    -

    - - - -mult_columns -INDEX

    - - - -MULT_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Mult columns, mult rows: -

    -

    -

    -syntax:

    -mult_columns(<matrix>,<column\_list>,<expr>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<column\_list> :- a positive integer or a list of positive - integers. -

    -

    -<expr> :- an algebraic expression. -

    -

    -mult_columnsreturns a copy of <matrix> in which the -columns specified in <column\_list> have been multiplied by -<expr>. -

    -

    -mult_rowsperforms the same task on the rows of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -mult_columns(A,{1,3},x); 
    -
    -  [ x   2  3*x]
    -  [           ]
    -  [4*x  5  6*x]
    -  [           ]
    -  [7*x  8  9*x]
    -
    -
    -
    -mult_rows(A,2,10); 
    -
    -  [1   2   3 ]
    -  [          ]
    -  [40  50  60]
    -  [          ]
    -  [7   8   9 ]
    -
    -

    Related functions: -add_to_columns, -add_to_rows. -

    -

    - - - -mult_rows -INDEX

    - - - -MULT_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -mult_columns. -

    -

    - - - -pivot -INDEX

    - - - -PIVOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -pivot(<matrix>,<r>,<c>) -

    -

    -

    -<matrix> :- a matrix. -

    -

    -<r>,<c> :- positive integers such that <matrix>(<r>, - <c>) neq 0. -

    -

    -pivotpivots <matrix> about it's (<r>,<c>)'th -entry. -

    -

    -To do this, multiples of the <r>'th row are added to every other -row in the matrix. -

    -

    -This means that the <c>'th column will be 0 except for the -(<r>,<c>)'th entry. -

    -

    -

    -examples:

    -

    
    -
    -pivot(A,2,3); 
    -
    -  [      - 1    ]
    -  [-1  ------  0]
    -  [      2      ]
    -  [             ]
    -  [4     5     6]
    -  [             ]
    -  [      1      ]
    -  [1    ---    0]
    -  [      2      ]
    -
    -

    Related functions: - -rows_pivot. -

    -

    - - - -pseudo_inverse -INDEX

    - - - -PSEUDO_INVERSE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -pseudo_inverse(<matrix>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -pseudo_inverse, also known as the Moore-Penrose inverse, -computes the pseudo inverse of <matrix>. -

    -

    -Given the singular value decomposition of <matrix>, i.e: -A = U*P*V^T, then the pseudo inverse A^-1 is defined by -A^-1 = V^T*P^-1*U. -

    -

    -Thus <matrix> * pseudo_inverse(A) = Id. -(Id is the identity matrix). -

    -

    -

    -examples:

    -

    
    -
    -R := mat((1,2,3,4),(9,8,7,6)); 
    -
    -       [1  2  3  4]
    -  r := [          ]
    -       [9  8  7  6]
    -
    -
    -
    -on rounded; 
    -
    -pseudo_inverse(R); 
    -
    -  [ - 0.199999999996      0.100000000013   ]
    -  [                                        ]
    -  [ - 0.0499999999988    0.0500000000037   ]
    -  [                                        ]
    -  [ 0.0999999999982     - 5.57825497203e-12]
    -  [                                        ]
    -  [  0.249999999995      - 0.0500000000148 ]
    -
    -

    Related functions: -svd. -

    -

    - - - -random_matrix -INDEX

    - - - -RANDOM_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -random_matrix(<r>,<c>,<limit>) -

    -

    -

    -<r>,<c>,<limit> :- positive integers. -

    -

    -random_matrixcreates an <r> by <c> matrix with random -entries in the range -limit <entry <limit. -

    -

    -Switches: -

    -

    -imaginary:- if on then matrix entries are x+i*y where -limit <x,y - <<limit>. -

    -

    -not_negative:- if on then 0 <entry <<limit>. In the imagina -ry - case we have 0 <x,y <<limit>. -

    -

    -only_integer:- if on then each entry is an integer. In the imaginary - case x and y are integers. -

    -

    -symmetric:- if on then the matrix is symmetric. -

    -

    -upper_matrix:- if on then the matrix is upper triangular. -

    -

    -lower_matrix:- if on then the matrix is lower triangular. -

    -

    -

    -examples:

    -

    
    -
    -on rounded; 
    -
    -random_matrix(3,3,10); 
    -
    -  [ - 8.11911717343    - 5.71677292768   0.620580830035 ]
    -  [                                                     ]
    -  [ - 0.032596262422    7.1655452861     5.86742633837  ]
    -  [                                                     ]
    -  [ - 9.37155438255    - 7.55636708637   - 8.88618627557]
    -
    -
    -
    -on only_integer, not_negative, upper_matrix, imaginary; 
    -
    -random_matrix(4,4,10); 
    -
    -  [70*i + 15  28*i + 8   2*i + 79   27*i + 44]
    -  [                                          ]
    -  [    0      46*i + 95  9*i + 63   95*i + 50]
    -  [                                          ]
    -  [    0          0      31*i + 75  14*i + 65]
    -  [                                          ]
    -  [    0          0          0      5*i + 52 ]
    -
    -

    - - -remove_columns -INDEX

    - - - -REMOVE_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Remove columns, remove rows: -

    -

    -

    -syntax:

    -remove_columns(<matrix>,<column\_list>) -

    -

    -

    -<matrix> :- a -matrix. -<column\_list> :- either a positive integer or a list of positive - integers. -

    -

    -remove_columnsremoves the columns specified in -<column\_list> from <matrix>. -

    -

    -remove_rowsperforms the same task on the rows of <matrix>. -

    -

    -

    -examples:

    -

     
    -
    -remove_columns(A,2); 
    -
    -  [1  3]
    -  [    ]
    -  [4  6]
    -  [    ]
    -  [7  9]
    -
    -
    -
    -remove_rows(A,{1,3}); 
    -
    -  [4  5  6]
    -
    -

    Related functions: -minor. -

    -

    - - - -remove_rows -INDEX

    - - - -REMOVE_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -remove_columns. -

    -

    - - - -row_dim -INDEX

    - - - -ROW_DIM _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -column_dim. -

    -

    - - - -rows_pivot -INDEX

    - - - -ROWS_PIVOT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -rows_pivot(<matrix>,<r>,<c>,{<row\_list>}) -

    -

    -

    -<matrix> :- a namerefmatrix. -

    -

    -<r>,<c> :- positive integers such that <matrix>(<r>, - <c>) neq 0. -

    -

    -<row\_list> :- positive integer or a list of positive integers. -

    -

    -rows_pivotperforms the same task as pivot but applies -the pivot only to the rows specified in <row\_list>. -

    -

    -

    -examples:

    -

    
    -
    -N := mat((1,2,3),(4,5,6),(7,8,9),(1,2,3),(4,5,6)); 
    -
    -
    -       [1  2  3]
    -       [       ]
    -       [4  5  6]
    -       [       ]
    -  n := [7  8  9]
    -       [       ]
    -       [1  2  3]
    -       [       ]
    -       [4  5  6]
    -
    -
    -
    -rows_pivot(N,2,3,{4,5}); 
    -
    -  [1     2     3]
    -  [             ]
    -  [4     5     6]
    -  [             ]
    -  [7     8     9]
    -  [             ]
    -  [      - 1    ]
    -  [-1  ------  0]
    -  [      2      ]
    -  [             ]
    -  [0     0     0]
    -
    -

    Related functions: -pivot. -

    -

    - - - -simplex -INDEX

    - - - -SIMPLEX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -simplex(<max/min>,<objective function>, -{<linear inequalities>}) -

    -

    -

    -<max/min> :- either max or min (signifying maximize and - minimize). -

    -

    -<objective function> :- the function you are maximizing or - minimizing. -

    -

    -<linear inequalities> :- the constraint inequalities. Each one must - be of the form sum of variables ( - <=,=,>=) number. -

    -

    -simplexapplies the revised simplex algorithm to find the -optimal(either maximum or minimum) value of the -<objective function> under the linear inequality constraints. -

    -

    -It returns {optimal value,{ values of variables at this optimal}}. -

    -

    -The algorithm implies that all the variables are non-negative. -

    -

    -

    -examples:

    -

    
    -
    - simplex(max,x+y,{x>=10,y>=20,x+y<=25}); 
    -
    -
    -   ***** Error in simplex: Problem has no feasible solution
    -
    -
    -
    -simplex(max,10x+5y+5.5z,{5x+3z<=200,x+0.1y+0.5z<=12,
    -0.1x+0.2y+0.3z<=9, 30x+10y+50z<=1500}); 
    -
    -
    -  {525.0,{x=40.0,y=25.0,z=0}}
    -
    -

    - - -squarep -INDEX

    - - - -SQUAREP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -squarep(<matrix>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -squarepis a predicate that returns t if the <matrix> is -square and nil otherwise. -

    -

    -

    -examples:

    -

    
    -
    -squarep(mat((1,3,5))); 
    -
    -  nil 
    -
    -
    -squarep(A);
    -t
    -

    Related functions: -matrixp, -symmetricp. -

    -

    - - - -stack_rows -INDEX

    - - - -STACK_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -augment_columns. -

    -

    - - - -sub_matrix -INDEX

    - - - -SUB_MATRIX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -sub_matrix(<matrix>,<row\_list>,<column\_list>) -

    -

    -

    -<matrix> :- a matrix. -<row\_list>, <column\_list> :- either a positive integer or a - list of positive integers. -

    -

    -namesub_matrix produces the matrix consisting of the intersection of -the rows specified in <row\_list> and the columns specified in -<column\_list>. -

    -

    -

    -examples:

    -

    
    -
    -sub_matrix(A,{1,3},{2,3}); 
    -
    -  [2  3]
    -  [    ]
    -  [8  9]
    -
    -

    Related functions: - -augment_columns, -stack_rows. -

    -

    - - - -svd -INDEX

    - - - -SVD _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -Singular value decomposition: -

    -

    -

    -syntax:

    -svd(<matrix>) -

    -

    -

    -<matrix> :- a -matrix containing only numeric entries. -

    -

    -svdcomputes the singular value decomposition of <matrix>. -

    -

    -It returns -

    -

    -{U,P,V} -

    -

    -where A = U*P*V^T -

    -

    -and P = diag(sigma(1) ... sigma(n)). -

    -

    -sigma(i) for i= 1 ... n are the singular values of -<matrix>. -

    -

    -n is the column dimension of <matrix>. -

    -

    -The singular values of <matrix> are the non-negative square roots -of the eigenvalues of A^T*A. -

    -

    -U and V are such that U*U^T = V*V^T = V^T*V = Id. -Id is the identity matrix. -

    -

    -

    -examples:

    -

    
    -
    -Q := mat((1,3),(-4,3)); 
    -
    -       [1   3]
    -  q := [     ]
    -       [-4  3]
    -
    -
    -
    -on rounded; 
    -
    -svd(Q); 
    -
    -  {
    -   [ 0.289784137735    0.957092029805]
    -   [                                 ]
    -   [ - 0.957092029805  0.289784137735]
    -   ,
    -   [5.1491628629       0      ]
    -   [                          ]
    -   [     0        2.9130948854]
    -   ,
    -   [ - 0.687215403194   0.726453707825  ]
    -   [                                    ]
    -   [ - 0.726453707825   - 0.687215403194]
    -  }
    -
    -

    - - -swap_columns -INDEX

    - - - -SWAP_COLUMNS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -Swap columns, swap rows: -

    -

    -

    -syntax:

    -swap_columns(<matrix>,<c1>,<c2>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<c1>,<c1> :- positive integers. -

    -

    -swap_columnsswaps column <c1> of <matrix> with -column <c2>. -

    -

    -swap_rowsperforms the same task on two rows of <matrix>. -

    -

    -

    -examples:

    -

    
    -
    -swap_columns(A,2,3); 
    -
    -  [1  3  2]
    -  [       ]
    -  [4  6  5]
    -  [       ]
    -  [7  9  8]
    -
    -
    -
    -swap_rows(A,1,3); 
    -
    -  [7  8  9]
    -  [       ]
    -  [4  5  6]
    -  [       ]
    -  [1  2  3]
    -
    -

    Related functions: -swap_entries. -

    -

    - - - -swap_entries -INDEX

    - - - -SWAP_ENTRIES _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -swap_entries(<matrix>,{<r1>,<c1>},{<r2>, -<c2>}) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -<r1>,<c1>,<r2>,<c2> :- positive integers. -

    -

    -swap_entriesswaps <matrix>(<r1>,<c1>) with -<matrix>(<r2>,<c2>). -

    -

    -

    -examples:

    -

    
    -
    -swap_entries(A,{1,1},{3,3}); 
    -
    -  [9  2  3]
    -  [       ]
    -  [4  5  6]
    -  [       ]
    -  [7  8  1]
    -
    -

    Related functions: -swap_columns, -swap_rows. -

    -

    - - - -swap_rows -INDEX

    - - - -SWAP_ROWS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -see: -swap_columns. -

    -

    - - - -symmetricp -INDEX

    - - - -SYMMETRICP _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -symmetricp(<matrix>) -

    -

    -

    -<matrix> :- a -matrix. -

    -

    -symmetricpis a predicate that returns t if the matrix is symmetric -and nil otherwise. -

    -

    -

    -examples:

    -

    
    -
    -symmetricp(make_identity(11)); 
    -
    -  t 
    -
    -
    -symmetricp(A); 
    -
    -  nil
    -
    -

    Related functions: -matrixp, -squarep. -

    -

    - - - -toeplitz -INDEX

    - - - -TOEPLITZ _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -toeplitz(<expr\_list>) -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<expr\_list> :- list of algebraic expressions. -

    -

    -toeplitzcreates the toeplitz matrix from the <expr\_list>. -

    -

    -This is a square symmetric matrix in which the first expression is -placed on the diagonal and the i'th expression is placed on the (i-1)'th -sub and super diagonals. -

    -

    -It has dimension n where n is the number of expressions. -

    -

    -

    -examples:

    -

    
    -
    -toeplitz({w,x,y,z}); 
    -
    -  [w  x  y  z]
    -  [          ]
    -  [x  w  x  y]
    -  [          ]
    -  [y  x  w  x]
    -  [          ]
    -  [z  y  x  w]
    -
    -

    - - -vandermonde -INDEX

    - - - -VANDERMONDE _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -

    -

    -

    -syntax:

    -vandermonde({<expr\_list>}) -

    -

    -

    -(If you are feeling lazy then the braces can be omitted.) -

    -

    -<expr\_list> :- list of algebraic expressions. -

    -

    -vandermondecreates the vandermonde matrix from the -<expr\_list>. -

    -

    -This is the square matrix in which the (i,j)'th entry is -<expr\_list>(i)^(j-1). -

    -

    -It has dimension n where n is the number of expressions. -

    -

    -

    -examples:

    -

                 
    -vandermonde({x,2*y,3*z}); 
    -
    -
    -  [          2 ]
    -  [1   x    x  ]
    -  [            ]
    -  [           2]
    -  [1  2*y  4*y ]
    -  [            ]
    -  [           2]
    -  [1  3*z  9*z ]
    -
    -

    - - -Linear Algebra package -INDEX

    -Linear Algebra package

    -
  • Linear Algebra package introduction

    -

  • fast_la switch

    -

  • add_columns operator

    -

  • add_rows operator

    -

  • add_to_columns operator

    -

  • add_to_rows operator

    -

  • augment_columns operator

    -

  • band_matrix operator

    -

  • block_matrix operator

    -

  • char_matrix operator

    -

  • char_poly operator

    -

  • cholesky operator

    -

  • coeff_matrix operator

    -

  • column_dim operator

    -

  • companion operator

    -

  • copy_into operator

    -

  • diagonal operator

    -

  • extend operator

    -

  • find_companion operator

    -

  • get_columns operator

    -

  • get_rows operator

    -

  • gram_schmidt operator

    -

  • hermitian_tp operator

    -

  • hessian operator

    -

  • hilbert operator

    -

  • jacobian operator

    -

  • jordan_block operator

    -

  • lu_decom operator

    -

  • make_identity operator

    -

  • matrix_augment operator

    -

  • matrixp operator

    -

  • matrix_stack operator

    -

  • minor operator

    -

  • mult_columns operator

    -

  • mult_rows operator

    -

  • pivot operator

    -

  • pseudo_inverse operator

    -

  • random_matrix operator

    -

  • remove_columns operator

    -

  • remove_rows operator

    -

  • row_dim operator

    -

  • rows_pivot operator

    -

  • simplex operator

    -

  • squarep operator

    -

  • stack_rows operator

    -

  • sub_matrix operator

    -

  • svd operator

    -

  • swap_columns operator

    -

  • swap_entries operator

    -

  • swap_rows operator

    -

  • symmetricp operator

    -

  • toeplitz operator

    -

  • vandermonde operator

    -

  • - - -Smithex -INDEX

    - - - -SMITHEX _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator smithex computes the Smith normal form S of a - -matrix A (say). It returns {S,P,P^-1} where P*S*P^-1 = - A. -

    -

    -

    -syntax:

    -smithex(<matrix>,<variable>) -

    -

    -<matrix> :- a rectangular -matrix of univariate polynomials in - <variable>. -<variable> :- the variable. -

    -

    -

    -

    -examples:

    -

    
    - a := mat((x,x+1),(0,3*x^2)); 
    -
    -        [x  x + 1]
    -        [        ]
    -   a := [      2 ]
    -        [0  3*x  ]
    -
    -
    -
    - smithex(a,x); 
    -
    -     [1  0 ]    [1    0]    [x   x + 1]
    -  {  [     ],   [      ],   [         ]  }
    -     [    3]    [   2  ]    [         ]
    -     [0  x ]    [3*x  1]    [-3    -3 ]
    -
    -

    - - -Smithex_int -INDEX

    - - - -SMITHEX\_INT _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator smithex_int performs the same task as smithex -but on matrices containing only integer entries. Namely, -smithex_int returns {S,P,P^-1} where S is the smith normal -form of the input -matrix (A say), and P*S*P^-1 = A. -

    -

    -

    -syntax:

    -smithex_int(<matrix>) -

    -

    -<matrix> :- a rectangular -matrix of integer entries. -

    -

    -

    -

    -examples:

    -

    
    - a := mat((9,-36,30),(-36,192,-180),(30,-180,180)); 
    -
    -
    -       [ 9   -36    30 ]
    -       [               ]
    -  a := [-36  192   -180]
    -       [               ]
    -       [30   -180  180 ]
    -
    -
    -
    - smithex_int(a); 
    -
    -    [3  0   0 ]    [-17  -5   -4 ]    [1   -24  30 ]
    -    [         ]    [             ]    [            ]
    -  { [0  12  0 ],   [64   19   15 ],   [-1  25   -30] }
    -    [         ]    [             ]    [            ] 
    -    [0  0   60]    [-50  -15  -12]    [0   -1    1 ] 
    -
    -

    - - -Frobenius -INDEX

    - - - -FROBENIUS _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator frobenius computes the frobenius normal form F of - a - -matrix (A say). It returns {F,P,P^-1} where P*F*P^-1 = - A. -

    -

    -

    -syntax:

    -frobenius(<matrix>) -

    -

    -<matrix> :- a square -matrix. -

    -

    -

    -Field Extensions: -

    -

    -By default, calculations are performed in the rational numbers. To -extend this field the -arnum package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -

    -

    -Modular Arithmetic: -

    -

    -Frobeniuscan also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See - -ratjordan for an example. -

    -

    -

    -examples:

    -

    
    - a := mat((x,x^2),(3,5*x)); 
    -
    -       [    2 ]
    -       [x  x  ]
    -  a := [      ]
    -       [3  5*x]
    -
    -
    - frobenius(a);
    -
    -     [         2]    [1  x]    [       - x ]
    -  {  [0   - 2*x ],   [    ],   [1     -----]  }
    -     [          ]    [0  3]    [        3  ]
    -     [1    6*x  ]              [           ]
    -                               [        1  ]
    -                               [0      --- ]
    -                               [        3  ]
    -
    -
    - load_package arnum;
    -
    - defpoly sqrt2**2-2;
    -
    - a := mat((sqrt2,5),(7*sqrt2,sqrt2));
    -
    -
    -       [ sqrt2     5  ]
    -  a := [              ]
    -       [7*sqrt2  sqrt2]
    -
    -
    -
    - frobenius(a); 
    -
    -    [0  35*sqrt2 - 2]    [1   sqrt2 ]    [           1  ]
    -  { [               ],   [          ],   [1       - --- ]  }
    -    [1    2*sqrt2   ]    [1  7*sqrt2]    [           7  ]
    -                                         [              ]
    -                                         [     1        ]
    -                                         [0   ----*sqrt2]
    -                                         [     14       ]
    -
    -

    - - -Ratjordan -INDEX

    - - - -RATJORDAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator ratjordan computes the rational Jordan normal form R -of a -matrix (A say). It returns {R,P,P^-1} where P*R*P^-1 = - A. -

    -

    -

    -syntax:

    -ratjordan(<matrix>) -

    -

    -<matrix> :- a square -matrix. -

    -

    -

    -Field Extensions: -

    -

    -By default, calculations are performed in the rational numbers. To -extend this field the arnum package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See -frobenius for an example. -

    -

    -Modular Arithmetic: -

    -

    -ratjordancan also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. -

    -

    -

    -examples:

    -

    
    - a := mat((5,4*x),(2,x^2));
    -
    -       [5  4*x]
    -       [      ]
    -  a := [    2 ]
    -       [2  x  ]
    -
    -
    -
    - ratjordan(a); 
    -
    -    [0  x*( - 5*x + 8)]   [1  5]    [        -5 ]  
    -  { [                 ],  [    ],   [1     -----] }
    -    [        2        ]   [0  2]    [        2  ]
    -    [1      x  + 5    ]             [           ]
    -                                    [        1  ]
    -                                    [0     -----]
    -                                    [        2  ]
    -
    -
    - on modular; 
    -
    - setmod 23; 
    -
    - a := mat((12,34),(56,78)); 
    -
    -       [12  11]
    -  a := [      ]
    -       [10  9 ]
    -
    -
    -
    - ratjordan(a); 
    -
    -    [15  0]   [16  8]   [1  21]
    -  { [     ],  [     ],  [     ]  }
    -    [0   6]   [19  4]   [1  4 ]
    -
    -
    -
    - on balanced_mod;
    -
    - ratjordan(a);
    -
    -    [- 8  0]   [ - 7  8]   [1  - 2]
    -  { [      ],  [       ],  [      ]  }
    -    [ 0   6]   [ - 4  4]   [1   4 ]
    -
    -

    - - -Jordansymbolic -INDEX

    - - - -JORDANSYMBOLIC _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator jordansymbolic computes the Jordan normal form J -of a -matrix (A say). It returns {J,L,P,P^-1} where -P*J*P^-1 = A. L = {ll,mm} where mm is a name and ll is a list of -irreducible factors of p(mm). -

    -

    -

    -syntax:

    -jordansymbolic(<matrix>) -

    -

    -<matrix> :- a square -matrix. -

    -

    -

    -Field Extensions: -

    -

    -By default, calculations are performed in the rational numbers. To -extend this field the -arnum package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See -frobenius for an example. -

    -

    -Modular Arithmetic: -

    -

    -jordansymboliccan also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See - -ratjordan for an example. -

    -

    -

    -examples:

    -

    
    -
    - a := mat((1,y),(2,5*y)); 
    -
    -       [1   y ]
    -  a := [      ]
    -       [2  5*y]
    -
    -
    -
    - jordansymbolic(a); 
    -
    -  {
    -   [lambda11     0    ]
    -   [                  ]
    -   [   0      lambda12]
    -   ,
    -           2
    -   lambda  - 5*lambda*y - lambda + 3*y,lambda,
    -   [lambda11 - 5*y  lambda12 - 5*y]
    -   [                              ]
    -   [      2               2       ]
    -   ,
    -   [ 2*lambda11 - 5*y - 1    5*lambda11*y - lambda11 - y + 1 ]
    -   [----------------------  ---------------------------------]
    -   [       2                              2                  ]
    -   [   25*y  - 2*y + 1             2*(25*y  - 2*y + 1)       ]
    -   [                                                         ]
    -   [ 2*lambda12 - 5*y - 1    5*lambda12*y - lambda12 - y + 1 ]
    -   [----------------------  ---------------------------------]
    -   [       2                              2                  ]
    -   [   25*y  - 2*y + 1             2*(25*y  - 2*y + 1)       ]
    -   }
    -
    -

    - - -Jordan -INDEX

    - - - -JORDAN _ _ _ _ _ _ _ _ _ _ _ _ operator

    -

    - -The operator jordan computes the Jordan normal form J -of a -matrix (A say). It returns {J,P,P^-1} where P*J*P^-1 = - A. -

    -

    -

    -syntax:

    -jordan(<matrix>) -

    -

    -<matrix> :- a square -matrix. -

    -

    -

    -Field Extensions: -By default, calculations are performed in the rational numbers. To -extend this field the arnum package can be used. The package must -first be loaded by load_package arnum;. The field can now be extended -by using the defpoly command. For example, defpoly sqrt2**2-2; will -extend the field to include the square root of 2 (now defined by sqrt2). -See -frobenius for an example. -

    -

    -Modular Arithmetic: -Jordan can also be calculated in a modular base. To do this -first type on modular;. Then setmod p; (where p is a prime) will set -the modular base of calculation to p. By further typing on balanced_mod -the answer will appear using a symmetric modular representation. See - -ratjordan for an example. -

    -

    -

    -examples:

    -

    
    -
    - a := mat((1,x),(0,x)); 
    -
    -       [1  x]
    -  a := [    ]
    -       [0  x]
    -
    -
    -
    - jordan(a);
    -
    -  {
    -   [1  0]
    -   [    ]
    -   [0  x]
    -   ,
    -   [   1           x       ]
    -   [-------  --------------]
    -   [ x - 1     2           ]
    -   [          x  - 2*x + 1 ]
    -   [                       ]
    -   [               1       ]
    -   [   0        -------    ]
    -   [             x - 1     ]
    -   ,
    -   [x - 1   - x ]
    -   [            ]
    -   [  0    x - 1]
    -   }
    -
    -

    - - -Matrix Normal Forms -INDEX

    -Matrix Normal Forms

    -
  • Smithex operator

    -

  • Smithex\_int operator

    -

  • Frobenius operator

    -

  • Ratjordan operator

    -

  • Jordansymbolic operator

    -

  • Jordan operator

    -

  • - - -Miscellaneous_Packages -INDEX

    - - - -MISCELLANEOUS PACKAGES _ _ _ _ _ _ _ _ _ _ _ _ introduction

    -

    - -REDUCE includes a large number of packages that have been contributed by -users from various fields. Some of these, together with their relevant -commands, switches and so on (e.g., the NUMERIC package), have -been described elsewhere. This section describes those packages for which -no separate help material exists. Each has its own switches, commands, -and operators, and some redefine special characters to aid in their -notation. However, the brief descriptions given here do not include all -such information. Readers are referred to the general package -documentation in this case, which can be found, along with the source -code, under the subdirectories doc and src in the -reduce directory. The -load_package command is used to -load the files you wish into your system. There will be a short delay -while the package is loaded. A package cannot be unloaded. Once it -is in your system, it stays there until you end the session. Each package -also has a test file, which you will find under its name in the -$reduce/xmpl directory. -

    -

    -Finally, it should be mentioned that such user-contributed packages are -unsupported; any questions or problems should be directed to their -authors. -

    -

    - - - -ALGINT_package -INDEX

    - - - -ALGINT _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: James H. Davenport -

    -

    -The algint package provides indefinite integration of square roots. -This package, which is an extension of the basic integration package -distributed with REDUCE, will analytically integrate a wide range of -expressions involving square roots. The -algint switch provides for -the use of the facilities given by the package, and is automatically turned -on when the package is loaded. If you want to return to the standard -integration algorithms, turn -algint off. An error message is given -if you try to turn the -algint switch on when its package is not -loaded. -

    -

    - - - -APPLYSYM -INDEX

    - - - -APPLYSYM _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Thomas Wolf -

    -

    -This package provides programs APPLYSYM, QUASILINPDE and DETRAFO for -computing with infinitesimal symmetries of differential equations. -

    -

    - - - -ARNUM -INDEX

    - - - -ARNUM _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Eberhard Schruefer -

    -

    -This package provides facilities for handling algebraic numbers as polynomial -coefficients in REDUCE calculations. It includes facilities for introducing -indeterminates to represent algebraic numbers, for calculating splitting -fields, and for factoring and finding greatest common divisors in such -domains. -

    -

    - - - -ASSIST -INDEX

    - - - -ASSIST _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Hubert Caprasse -

    -

    -ASSIST contains a large number of additional general purpose functions -that allow a user to better adapt REDUCE to various calculational -strategies and to make the programming task more straightforward and more -efficient. -

    -

    - - - -AVECTOR -INDEX

    - - - -AVECTOR _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: David Harper -

    -

    -This package provides REDUCE with the ability to perform vector algebra -using the same notation as scalar algebra. The basic algebraic operations -are supported, as are differentiation and integration of vectors with -respect to scalar variables, cross product and dot product, component -manipulation and application of scalar functions (e.g. cosine) to a vector -to yield a vector result. -

    -

    - - - -BOOLEAN -INDEX

    - - - -BOOLEAN _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package supports the computation with boolean expressions in the -propositional calculus. The data objects are composed from algebraic -expressions connected by the infix boolean operators and, or, - implies, equiv, and the unary prefix operator not. - Boolean allows you to simplify expressions built from these -operators, and to test properties like equivalence, subset property etc. -

    -

    - - - -CALI -INDEX

    - - - -CALI _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Hans-Gert Gr"abe -

    -

    -This package contains algorithms for computations in commutative algebra -closely related to the Groebner algorithm for ideals and modules. Its -heart is a new implementation of the Groebner algorithm that also allows -for the computation of syzygies. This implementation is also applicable to -submodules of free modules with generators represented as rows of a matrix. -

    -

    - - - -CAMAL -INDEX

    - - - -CAMAL _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: John P. Fitch -

    -

    -This package implements in REDUCE the Fourier transform procedures of the -CAMAL package for celestial mechanics. -

    -

    - - - -CHANGEVR -INDEX

    - - - -CHANGEVR _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: G. Ucoluk -

    -

    -This package provides facilities for changing the independent variables in -a differential equation. It is basically the application of the chain rule. -

    -

    - - - -COMPACT -INDEX

    - - - -COMPACT _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Anthony C. Hearn -

    -

    -COMPACT is a package of functions for the reduction of a polynomial in the -presence of side relations. COMPACT applies the side relations to the -polynomial so that an equivalent expression results with as few terms as -possible. For example, the evaluation of -

    -

    -

    
    -     compact(s*(1-sin x^2)+c*(1-cos x^2)+sin x^2+cos x^2,
    -             {cos x^2+sin x^2=1});
    -
    -

    yields the result -

    
    -
    -              2           2
    -        SIN(X) *C + COS(X) *S + 1
    -

    -

    -The first argument to the operator compact is the expression -and the second is a list of side relations that can be -equations or simple expressions (implicitly equated to zero). The -kernels in the side relations may also be free variables with the -same meaning as in rules, e.g. -

    
    -     sin_cos_identity :=  {cos ~w^2+sin ~w^2=1}$
    -     compact(u,in_cos_identity);
    -

    -

    -Also the full rule syntax with the replacement operator is allowed here. -

    -

    - - - -CRACK -INDEX

    - - - -CRACK _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Andreas Brand, Thomas Wolf -

    -

    -CRACK is a package for solving overdetermined systems of partial or -ordinary differential equations (PDEs, ODEs). Examples of programs which -make use of CRACK for investigating ODEs (finding symmetries, first -integrals, an equivalent Lagrangian or a ``differential factorization'') are -included. -

    -

    - - - -CVIT -INDEX

    - - - -CVIT _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: V.Ilyin, A.Kryukov, A.Rodionov, A.Taranov -

    -

    -This package provides an alternative method for computing traces of Dirac -gamma matrices, based on an algorithm by Cvitanovich that treats gamma -matrices as 3-j symbols. -

    -

    - - - -DEFINT -INDEX

    - - - -DEFINT _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Kerry Gaskell, Stanley M. Kameny, Winfried Neun -

    -

    -This package finds the definite integral of an expression in a stated -interval. It uses several techniques, including an innovative approach -based on the Meijer G-function, and contour integration. -

    -

    - - - -DESIR -INDEX

    - - - -DESIR _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: C. Dicrescenzo, F. Richard-Jung, E. Tournier -

    -

    -This package enables the basis of formal solutions to be computed for an -ordinary homogeneous differential equation with polynomial coefficients -over Q of any order, in the neighborhood of zero (regular or irregular -singular point, or ordinary point). -

    -

    - - - -DFPART -INDEX

    - - - -DFPART _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package supports computations with total and partial derivatives of -formal function objects. Such computations can be useful in the context -of differential equations or power series expansions. -

    -

    - - - -DUMMY -INDEX

    - - - -DUMMY _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Alain Dresse -

    -

    -This package allows a user to find the canonical form of expressions -involving dummy variables. In that way, the simplification of -polynomial expressions can be fully done. The indeterminates are general -operator objects endowed with as few properties as possible. In that way -the package may be used in a large spectrum of applications. -

    -

    - - - -EXCALC -INDEX

    - - - -EXCALC _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Eberhard Schruefer -

    -

    -The excalc package is designed for easy use by all who are familiar -with the calculus of Modern Differential Geometry. The program is currently -able to handle scalar-valued exterior forms, vectors and operations between -them, as well as non-scalar valued forms (indexed forms). It is thus an ideal -tool for studying differential equations, doing calculations in general -relativity and field theories, or doing simple things such as calculating the -Laplacian of a tensor field for an arbitrary given frame. -

    -

    - - - -FPS -INDEX

    - - - -FPS _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Wolfram Koepf, Winfried Neun -

    -

    -This package can expand a specific class of functions into their -corresponding Laurent-Puiseux series. -

    -

    - - - -FIDE -INDEX

    - - - -FIDE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: Richard Liska -

    -

    -This package performs automation of the process of numerically -solving partial differential equations systems (PDES) by means of -computer algebra. For PDES solving, the finite difference method is applied. -The computer algebra system REDUCE and the numerical programming -language FORTRAN are used in the presented methodology. The main aim of -this methodology is to speed up the process of preparing numerical -programs for solving PDES. This process is quite often, especially for -complicated systems, a tedious and time consuming task. -

    -

    - - - -GENTRAN -INDEX

    - - - -GENTRAN _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Barbara L. Gates -

    -

    -This package is an automatic code GENerator and TRANslator. It constructs -complete numerical programs based on sets of algorithmic specifications and -symbolic expressions. Formatted FORTRAN, RATFOR or C code can be generated -through a series of interactive commands or under the control of a template -processing routine. Large expressions can be automatically segmented into -subexpressions of manageable size, and a special file-handling mechanism -maintains stacks of open I/O channels to allow output to be sent to any -number of files simultaneously and to facilitate recursive invocation of the -whole code generation process. -

    -

    - - - -IDEALS -INDEX

    - - - -IDEALS _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package implements the basic arithmetic for polynomial ideals by -exploiting the Groebner bases package of REDUCE. In order to save -computing time all intermediate Groebner bases are stored internally such -that time consuming repetitions are inhibited. -

    -

    - - - -INEQ -INDEX

    - - - -INEQ _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package supports the operator ineq_solve that -attempts to solve single inequalities and sets of coupled inequalities. -

    -

    - - - -INVBASE -INDEX

    - - - -INVBASE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Authors: A.Yu. Zharkov and Yu.A. Blinkov -

    -

    -Involutive bases are a new tool for solving problems in connection with -multivariate polynomials, such as solving systems of polynomial equations -and analyzing polynomial ideals. An involutive basis of a polynomial ideal -is nothing more than a special form of a redundant Groebner basis. The -construction of involutive bases reduces the problem of solving polynomial -systems to simple linear algebra. -

    -

    - - - -LAPLACE -INDEX

    - - - -LAPLACE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: C. Kazasov, M. Spiridonova, V. Tomov -

    -

    -This package can calculate ordinary and inverse Laplace transforms of -expressions. -

    -

    - - - -LIE -INDEX

    - - - -LIE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Authors: Carsten and Franziska Sch"obel -

    -

    -Lieis a package of functions for the classification of real -n-dimensional Lie algebras. It consists of two modules: liendmc1 -and lie1234. With the help of the functions in the liendmcl -module, real n-dimensional Lie algebras L with a derived algebra -L^(1) of dimension 1 can be classified. -

    -

    - - - -MODSR -INDEX

    - - - -MODSR _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package supports solve (M_SOLVE) and roots (M_ROOTS) operators for -modular polynomials and modular polynomial systems. The moduli need not -be primes. M_SOLVE requires a modulus to be set. M_ROOTS takes the -modulus as a second argument. For example: -

    -

    -

    
    -on modular; setmod 8;
    -m_solve(2x=4);            ->  {{X=2},{X=6}}
    -m_solve({x^2-y^3=3});
    -    ->  {{X=0,Y=5}, {X=2,Y=1}, {X=4,Y=5}, {X=6,Y=1}}
    -m_solve({x=2,x^2-y^3=3}); ->  {{X=2,Y=1}}
    -off modular;
    -m_roots(x^2-1,8);         ->  {1,3,5,7}
    -m_roots(x^3-x,7);         ->  {0,1,6}
    -

    - - -NCPOLY -INDEX

    - - - -NCPOLY _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Herbert Melenk, Joachim Apel -

    -

    -This package allows the user to set up automatically a consistent -environment for computing in an algebra where the non--commutativity is -defined by Lie-bracket commutators. The package uses the REDUCE -noncom mechanism for elementary polynomial arithmetic; the commutator -rules are automatically computed from the Lie brackets. -

    -

    - - - -ORTHOVEC -INDEX

    - - - -ORTHOVEC _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: James W. Eastwood -

    -

    -orthovecis a collection of REDUCE procedures and operations which -provide a simple-to-use environment for the manipulation of scalars and -vectors. Operations include addition, subtraction, dot and cross -products, division, modulus, div, grad, curl, laplacian, differentiation, -integration, and Taylor expansion. -

    -

    - - - -PHYSOP -INDEX

    - - - -PHYSOP _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: Mathias Warns -

    -

    -This package has been designed to meet the requirements of theoretical -physicists looking for a computer algebra tool to perform complicated -calculations in quantum theory with expressions containing operators. -These operations consist mainly of the calculation of commutators between -operator expressions and in the evaluations of operator matrix elements in -some abstract space. -

    -

    - - - -PM -INDEX

    - - - -PM _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Kevin McIsaac -

    -

    -PM is a general pattern matcher similar in style to those found in systems -such as SMP and Mathematica, and is based on the pattern matcher described -in Kevin McIsaac, ``Pattern Matching Algebraic Identities'', SIGSAM Bulletin, -19 (1985), 4-13. -

    -

    - - - -RANDPOLY -INDEX

    - - - -RANDPOLY _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Francis J. Wright -

    -

    -This package is based on a port of the Maple random polynomial -generator together with some support facilities for the generation -of random numbers and anonymous procedures. -

    -

    - - - -REACTEQN -INDEX

    - - - -REACTEQN _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Herbert Melenk -

    -

    -This package allows a user to transform chemical reaction systems into -ordinary differential equation systems (ODE) corresponding to the laws of -pure mass action. -

    -

    - - - -RESET -INDEX

    - - - -RESET _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: John Fitch -

    -

    -This package defines a command command RESETREDUCE that works through the -history of previous commands, and clears any values which have been -assigned, plus any rules, arrays and the like. It also sets the various -switches to their initial values. It is not complete, but does work for -most things that cause a gradual loss of space. It would be relatively -easy to make it interactive, so allowing for selective resetting. -

    -

    - - - -RESIDUE -INDEX

    - - - -RESIDUE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: Wolfram Koepf -

    -

    -This package supports the calculation of residues of arbitrary -expressions. -

    -

    - - - -RLFI -INDEX

    - - - -RLFI _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Richard Liska -

    -

    -This package -adds LaTeX syntax -to REDUCE. Text generated by REDUCE in this mode can be directly -used in LaTeX source -documents. Various -mathematical constructions are supported by the interface including -subscripts, superscripts, font changing, Greek letters, divide-bars, -integral and sum signs, derivatives, and so on. -

    -

    - - - -SCOPE -INDEX

    - - - -SCOPE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: J.A. van Hulzen -

    -

    -SCOPE is a package for the production of an optimized form of a set of -expressions. It applies an heuristic search for common (sub)expressions -to almost any set of proper REDUCE assignment statements. The output is -obtained as a sequence of assignment statements. gentran is used to -facilitate expression output. -

    -

    - - - -SETS -INDEX

    - - - -SETS _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: Francis J. Wright -

    -

    -The SETS package provides algebraic-mode support for set operations on -lists regarded as sets (or representing explicit sets) and on implicit -sets represented by identifiers. -

    -

    - - - -SPDE -INDEX

    - - - -SPDE _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Fritz Schwartz -

    -

    -The package spde provides a set of functions which may be used to -determine the symmetry group of Lie- or point-symmetries of a given system of -partial differential equations. In many cases the determining system is -solved completely automatically. In other cases the user has to provide -additional input information for the solution algorithm to terminate. -

    -

    - - - -SYMMETRY -INDEX

    - - - -SYMMETRY _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Author: Karin Gatermann -

    -

    -This package computes symmetry-adapted bases and block diagonal forms of -matrices which have the symmetry of a group. The package is the -implementation of the theory of linear representations for small finite -groups such as the dihedral groups. -

    -

    - - - -TPS -INDEX

    - - - -TPS _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Alan Barnes, Julian Padget -

    -

    -This package implements formal Laurent series expansions in one variable -using the domain mechanism of REDUCE. This means that power series -objects can be added, multiplied, differentiated etc., like other first -class objects in the system. A lazy evaluation scheme is used and thus -terms of the series are not evaluated until they are required for printing -or for use in calculating terms in other power series. The series are -extendible giving the user the impression that the full infinite series is -being manipulated. The errors that can sometimes occur using series that -are truncated at some fixed depth (for example when a term in the required -series depends on terms of an intermediate series beyond the truncation -depth) are thus avoided. -

    -

    - - - -TRI -INDEX

    - - - -TRI _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Werner Antweiler -

    -

    -This package provides facilities written in REDUCE-Lisp for typesetting -REDUCE formulas -using TeX. The -TeX-REDUCE-Interface incorporates three levels -of TeX output: -without line breaking, with line breaking, and -with line breaking plus indentation. -

    -

    - - - -TRIGSIMP -INDEX

    - - - -TRIGSIMP _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Wolfram Koepf -

    -

    -TRIGSIMP is a useful tool for all kinds of trigonometric and hyperbolic -simplification and factorization. There are three procedures included in -TRIGSIMP: trigsimp, trigfactorize and triggcd. The -first is for finding simplifications of trigonometric or hyperbolic -expressions with many options, the second for factorizing them and the -third for finding the greatest common divisor of two trigonometric or -hyperbolic polynomials. -

    -

    - - - -XCOLOR -INDEX

    - - - -XCOLOR _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: A. Kryukov -

    -

    -This package calculates the color factor in non-abelian gauge field -theories using an algorithm due to Cvitanovich. -

    -

    - - - -XIDEAL -INDEX

    - - - -XIDEAL _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: David Hartley -

    -

    -xidealconstructs Groebner bases for solving the left ideal -membership problem: Groebner left ideal bases or GLIBs. For graded -ideals, where each form is homogeneous in degree, the distinction between -left and right ideals vanishes. Furthermore, if the generating forms are -all homogeneous, then the Groebner bases for the non-graded and graded -ideals are identical. In this case, xideal is able to save time by -truncating the Groebner basis at some maximum degree if desired. -

    -

    - - - -WU -INDEX

    - - - -WU _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Author: Russell Bradford -

    -

    -This is a simple implementation of the Wu algorithm implemented in REDUCE -working directly from ``A Zero Structure Theorem for -Polynomial-Equations-Solving,'' Wu Wen-tsun, Institute of Systems Science, -Academia Sinica, Beijing. -

    -

    - - - -ZEILBERG -INDEX

    - - - -ZEILBERG _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -

    -

    -Authors: Gregor St"olting and Wolfram Koepf -

    -

    -This package is a careful implementation of the Gosper and Zeilberger -algorithms for indefinite and definite summation of hypergeometric terms, -respectively. Extensions of these algorithms are also included that are -valid for ratios of products of powers, -factorials, gamma function -terms, binomial coefficients, and shifted factorials that are -rational-linear in their arguments. -

    -

    - - - -ZTRANS -INDEX

    - - - -ZTRANS _ _ _ _ _ _ _ _ _ _ _ _ package

    -

    - -Authors: Wolfram Koepf, Lisa Temme -

    -

    -This package is an implementation of the Z-transform of a sequence. -This is the discrete analogue of the Laplace Transform. -

    -

    - - - -Miscellaneous Packages -INDEX

    -Miscellaneous Packages

    -
  • Miscellaneous Packages introduction

    -

  • ALGINT package

    -

  • APPLYSYM package

    -

  • ARNUM package

    -

  • ASSIST package

    -

  • AVECTOR package

    -

  • BOOLEAN package

    -

  • CALI package

    -

  • CAMAL package

    -

  • CHANGEVR package

    -

  • COMPACT package

    -

  • CRACK package

    -

  • CVIT package

    -

  • DEFINT package

    -

  • DESIR package

    -

  • DFPART package

    -

  • DUMMY package

    -

  • EXCALC package

    -

  • FPS package

    -

  • FIDE package

    -

  • GENTRAN package

    -

  • IDEALS package

    -

  • INEQ package

    -

  • INVBASE package

    -

  • LAPLACE package

    -

  • LIE package

    -

  • MODSR package

    -

  • NCPOLY package

    -

  • ORTHOVEC package

    -

  • PHYSOP package

    -

  • PM package

    -

  • RANDPOLY package

    -

  • REACTEQN package

    -

  • RESET package

    -

  • RESIDUE package

    -

  • RLFI package

    -

  • SCOPE package

    -

  • SETS package

    -

  • SPDE package

    -

  • SYMMETRY package

    -

  • TPS package

    -

  • TRI package

    -

  • TRIGSIMP package

    -

  • XCOLOR package

    -

  • XIDEAL package

    -

  • WU package

    -

  • ZEILBERG package

    -

  • ZTRANS package

    -

  • - - -ED -INDEX

    - - - -ED _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -The ed command invokes a simple line editor for REDUCE input -statements. -

    -

    -

    -syntax:

    -ed<integer> or ed -

    -

    -

    -edcalled with no argument edits the last input statement. If -<integer> is greater than or equal to the current line number, an error -message is printed. Reenter a proper ed command or return to the -top level with a semicolon. -

    -

    -The editor formats REDUCE's version of the desired input statement, -dividing it into lines at semicolons and dollar signs. The statement is -printed at the beginning of the edit session. The editor works on one -line at a time, and has a pointer (shown by ^) to the current -character of that line. When the session begins, the pointer is at the -left hand side of the first line. The editing prompt is >. -

    -

    -The following commands are available. They may be entered in either upper -or lower case. All commands are activated by the carriage return, which -also prints out the current line after changes. Several commands can be -placed on a single line, except that commands terminated by an ESC -must be the last command before the carriage return. -

    -

    - _ _ _ b -Move pointer to beginning of current line. -

    -

    - _ _ _ d<digit> -Delete current character and next (digit-1) characters. An error message -is printed if anything other than a single digit follows d. If there are -fewer than <digit> characters left on the line, all but the final -dollar sign or semicolon is removed. To delete a line completely, use the -k command. -

    -

    - _ _ _ e -End the current session, causing the edited expression to be reparsed by -REDUCE. -

    -

    - _ _ _ f<char> -Find the next occurrence of the character <char> to the right of the -pointer on the current line and move the pointer to it. If the character is -not found, an error message is printed and the pointer remains in its -original position. Other lines are not searched. The f command is not -case-sensitive. -

    -

    - _ _ _ i<string>ESC -Insert <string> in front of pointer. The ESC key is your -delimiter for the input string. No other command may follow this one on -the same line. -

    -

    - _ _ _ k -Kill rest of the current line, including the semicolon or dollar sign -terminator. If there are characters remaining on the current line, and it -is the last line of the input statement, a semicolon is added to the line -as a terminator for REDUCE. If the current line is now empty, one of the -following actions is performed: If there is a following line, it becomes -the current line and the pointer is placed at its first character. If the -current line was the final line of the statement, and there is a previous -line, the previous line becomes the current line. If the current line was -the only line of the statement, and it is empty, a single semicolon is -inserted for REDUCE to parse. -

    -

    - _ _ _ l -Finish editing this line and move to the last previous line. An error message -is printed if there is no previous line. -

    -

    - _ _ _ n -Finish editing this line and move to the next line. An error message is -printed if there is no next line. -

    -

    - _ _ _ p -Print out all the lines of the statement. Then a dotted line is printed, and -the current line is reprinted, with the pointer under it. -

    -

    - _ _ _ q -Quit the editing session without saving the changes. If a semicolon is -entered after q, a new line prompt is given, otherwise REDUCE prompts you -for another command. Whatever you type in to the prompt appearing after -the q is entered is stored as the input for the line number in which you -called the edit. Thus if you enter a semicolon, neither -input -ed will find anything under the current number. -

    -

    - _ _ _ r<char> -Replace the character at the pointer by <char>. -

    -

    - _ _ _ s<string>ESC -Search for the first occurrence of <string> to the right of the -pointer on the current line and move the pointer to its first character. -The ESC key is your delimiter for the input string. The s function -does not search other lines of the statement. If the string is not found, -an error message is printed and the pointer remains in its original -position. The s command is not case-sensitive. No other command may -follow this one on the same line. -

    -

    - _ _ _ x <or space> -Move the pointer one character to the right. If the pointer is already at -the end of the line, an error message is printed. -

    -

    - _ _ _ - <(minus)> -Move the pointer one character to the left. If the pointer is already at the -beginning of the line, an error message is printed. -

    -

    - _ _ _ ? -Display the Help menu, showing the commands and their actions. -

    -

    -

    -examples:

    -

    (Line numbers are shown in the following examples)

    -

     
    -
    -2: >>x**2 + y; 
    -
    -X^{2} + Y 
    -
    -3: >>ed 2; 
    -
    -  X**2 + Y; 
    -
    -  ^ 
    -
    -For help, type '?' 
    -
    -?-                  (Enter three spaces and key{Return}) 
    -
    -  X**2 + Y; 
    -
    -     ^ 
    -
    -?- r5 
    -
    -  X**5 + Y; 
    -
    -     ^ 
    -
    -?- fY 
    -
    -  X**5 + Y; 
    -
    -	 ^ 
    -
    -?- iabc (Terminate with key{ESC} and key{Return}) 
    -
    -  X**5 + abcY; 
    -
    -	    ^ 
    -
    -?- ---- 
    -
    -  X**5 + abcY; 
    -
    -	^ 
    -
    -?- fbd2 
    -
    -  X**5 + aY; 
    -
    -	  ^ 
    -
    -?- b 
    -
    -  X**5 + aY; 
    -
    -  ^ 
    -
    -?- e 
    -
    -AY + X^{5} 
    -
    -4: >>procedure dumb(a); 
    -
    ->>write a; 
    -
    -DUMB 
    -
    -5: >>dumb(17); 
    -
    -17 
    -
    -6: >>ed 4; 
    -
    -  PROCEDURE DUMB (A); 
    -
    -  ^ 
    -
    -WRITE A; 
    -
    -?- fArBn 
    -
    -  WRITE A; 
    -
    -  ^ 
    -
    -?- ibegin scalar a; a := b + 10; (Type a space, key{ESC}, and key{Return}) 
    -
    -  begin scalar a; a := b + 10; WRITE A; 
    -
    -?- f;i end key{ESC}, key{Return} 
    -
    -  begin scalar b; b := a + 10; WRITE A end; 
    -
    -					  ^ 
    -
    -?- p 
    -
    - PROCEDURE DUMB (B); 
    -
    - begin scalar b; b := a + 10; WRITE A end; 
    -
    - -  -  -  -  -  -  -  -  -  - 
    -
    -  begin scalar b; b := a + 10; WRITE A end; 
    -
    -					  ^ 
    -
    -?- e 
    -
    -DUMB 
    -
    -7: >>dumb(17); 
    -
    -27 
    -
    -8: >> 
    -
    -

    -

    -

    -Note that REDUCE reparsed the procedure dumb and updated the -definition. -

    -

    -Since REDUCE divides the expression to be edited into lines at semicolons or -dollar sign terminators, some lines may occupy more than one line of screen -space. If the pointer is directly beneath the last line of text, it -refers to the top line of text. If there is a blank line between the -last line of text and the pointer, it refers to the second line -of text, and likewise for cases of greater than two lines of text. In other -words, the entire REDUCE statement up to the next terminator is printed, even -if it runs to several lines, then the pointer line is printed. -

    -

    -You can insert new statements which contain semicolons of their own into the -current line. They are run into the current line where you placed them -until you edit the statement again. REDUCE will understand the set of -statements if the syntax is correct. -

    -

    -If you leave out needed closing brackets when you exit the editor, a message -is printed allowing you to redo the edit (you can edit the previous line -number and return to where you were). If you leave out a closing -double-quotation mark, an error message is printed, and the editing must be -redone from the original version; the edited version has been destroyed. -Most syntax errors which you inadvertently leave in an edited statement are -caught as usual by the REDUCE parser, and you will be able to re-edit the -statement. -

    -

    -When the editor processes a previous statement for your editing, escape -characters are removed. Most special characters that you may use in -identifiers are printed in legal fashion, prefixed by the exclamation -point. Be sure to treat the special character and its escape as a pair in -your editing. The characters ( ) # ; ' ` are different. Since -they have special meaning in Lisp, they are double-escaped in the editor. -It is unwise to use these characters inside identifiers anyway, due to the -probability of confusion. -

    -

    -If you see a Lisp error message during editing, the edit has been aborted. -Enter a semicolon and you will see a new line prompt. -

    -

    -Since the editor has no dependence on any window system, it can be used if you -are running REDUCE without windows. -

    -

    -

    - - - -EDITDEF -INDEX

    - - - -EDITDEF _ _ _ _ _ _ _ _ _ _ _ _ command

    -

    - -

    -

    -The interactive editor -ed may be used to edit a user-defined -procedure that has not been compiled. -

    -syntax:

    -

    -

    -editdef(identifier) -

    -

    -

    -where identifier is the name of the procedure. When editdef -is invoked, the procedure definition will be displayed in editing mode, -and may then be edited and redefined on exiting from the editor using -standard -ed commands. -

    -

    - - - -Outmoded Operations -INDEX

    -Outmoded Operations

    -
  • ED command

    -

  • EDITDEF command

    -

  • r38 search index -
    - -
    absolute value: ABS -
    ABS operator: ABS -
    accuracy: ROOTACC -
    ACOSH operator: ACOSH -
    ACOS operator: ACOS -
    ACOTH operator: ACOTH -
    ACOT operator: ACOT -
    ACSCH operator: ACSCH -
    ACSC operator: ACSC -
    add columns operator: add columns -
    add rows operator: add rows -
    add to columns operator: add to columns -
    add to rows operator: add to rows -
    ADJPREC switch: ADJPREC -
    AGM FUNCTION operator: AGM FUNCTION -
    Airy Ai operator: Airy Ai -
    Airy Aiprime operator: Airy Aiprime -
    Airy Bi operator: Airy Bi -
    Airy Biprime operator: Airy Biprime -
    algebraic: EVAL MODE -
    ALGEBRAIC command: ALGEBRAIC -
    algebraic numbers: ARNUM -
    ALGINT package: ALGINT package -
    ALGINT switch: ALGINT -
    ALLBRANCH switch: ALLBRANCH -
    ALLFAC switch: ALLFAC -
    AND operator: AND -
    ANTISYMMETRIC declaration: ANTISYMMETRIC -
    APPEND operator: APPEND -
    APPLYSYM package: APPLYSYM -
    approximation: CONTINUED FRACTION -
    approximation: INTERPOL -
    approximation: Chebyshev fit -
    approximation: num fit -
    ARBCOMPLEX operator: ARBCOMPLEX -
    ARBINT operator: ARBINT -
    arbitrary value: ARBINT -
    arbitrary value: ARBCOMPLEX -
    ARBVARS switch: ARBVARS -
    arccosecant: ACSC -
    arccosecant: ACSCH -
    arccosecant: ASEC -
    arccosine: ACOS -
    arccotangent: ACOT -
    arcsine: ASIN -
    arctangent: ATAN -
    ARGLENGTH operator: ARGLENGTH -
    ARG operator: ARG -
    argument: ARGLENGTH -
    argument: LISTARGP -
    argument: LISTARGS -
    arithmetic: EQUATION -
    ARITHMETIC OPERATIONS introduction: ARITHMETIC OPERATI -ONS -
    ARNUM package: ARNUM -
    ARRAY declaration: ARRAY -
    ASECH operator: ASECH -
    ASEC operator: ASEC -
    ASINH operator: ASINH -
    ASIN operator: ASIN -
    assign: SET -
    assign: SETQ -
    assign operator: assign -
    ASSIST package: ASSIST -
    assumptions variable: assumptions -
    asterisk operator: asterisk -
    ATAN2 operator: ATAN2 -
    ATANH operator: ATANH -
    ATAN operator: ATAN -
    augment columns operator: augment columns -
    AVECTOR package: AVECTOR -
    Axes names concept: Axes names -
    BALANCED MOD switch: BALANCED MOD -
    band matrix operator: band matrix -
    BEGIN command: BEGIN -
    BERNOULLI operator: BERNOULLI -
    BERNOULLIP operator: BERNOULLIP -
    BESSELI operator: BESSELI -
    BESSELJ operator: BESSELJ -
    BESSELK operator: BESSELK -
    BESSELY operator: BESSELY -
    BETA operator: BETA -
    BFSPACE switch: BFSPACE -
    BINOMIAL operator: BINOMIAL -
    block command: block -
    block matrix operator: block matrix -
    boolean expressions: BOOLEAN -
    BOOLEAN package: BOOLEAN -
    boolean value concept: boolean value -
    bounds operator: bounds -
    Buchberger algorithm: Groebner bases -
    Buchberger algorithm: groebner -
    BYE command: BYE -
    CALI package: CALI -
    CAMAL package: CAMAL -
    CARD NO variable: CARD NO -
    caret operator: caret -
    Catalan's constant: Constants -
    CEILING operator: CEILING -
    celestial mechanics: CAMAL -
    CHANGEVR package: CHANGEVR -
    character: RAISE -
    char matrix operator: char matrix -
    char poly operator: char poly -
    Chebyshev fit concept: Chebyshev fit -
    ChebyshevT operator: ChebyshevT -
    ChebyshevU operator: ChebyshevU -
    chemical reaction: REACTEQN -
    Chi operator: Chi -
    cholesky operator: cholesky -
    CHOOSE operator: CHOOSE -
    Ci operator: Ci -
    CLEAR command: CLEAR -
    CLEARRULES command: CLEARRULES -
    Clebsch Gordan operator: Clebsch Gordan -
    close: SHUT -
    code generation: GENTRAN -
    code generation: SCOPE -
    coefficient: COEFF -
    coefficient: COEFFN -
    coefficient: LCOF -
    coeff matrix operator: coeff matrix -
    COEFFN operator: COEFFN -
    COEFF operator: COEFF -
    COFACTOR operator: COFACTOR -
    column dim operator: column dim -
    COMBINEEXPT switch: COMBINEEXPT -
    COMBINELOGS switch: COMBINELOGS -
    command: semicolon -
    command: dollar -
    command: percent -
    command: group -
    command: BEGIN -
    command: block -
    command: COMMENT -
    command: END -
    command: FOR -
    command: FOREACH -
    command: GOTO -
    command: IF -
    command: PROCEDURE -
    command: REPEAT -
    command: RETURN -
    command: SETMOD -
    command: BYE -
    command: CONT -
    command: DISPLAY -
    command: LOAD PACKAGE -
    command: PAUSE -
    command: QUIT -
    command: REDERR -
    command: RETRY -
    command: SAVEAS -
    command: SHOWTIME -
    command: WRITE -
    command: MKID -
    command: ALGEBRAIC -
    command: CLEAR -
    command: CLEARRULES -
    command: DEFINE -
    command: FORALL -
    command: LET -
    command: LISP -
    command: MATCH -
    command: OFF -
    command: ON -
    command: SYMBOLIC -
    command: WEIGHT -
    command: WHILE -
    command: WTLEVEL -
    command: IN -
    command: INPUT -
    command: OUT -
    command: SHUT -
    command: MASS -
    command: MSHELL -
    command: VECDIM -
    command: PLOT -
    command: PLOTRESET -
    command: ED -
    command: EDITDEF -
    COMMENT command: COMMENT -
    commutative: NONCOM -
    commutative algebra: CALI -
    commutative algebra: IDEALS -
    COMPACT package: COMPACT -
    companion operator: companion -
    compiler: COMP -
    complementary error function: erfc -
    complex: I -
    complex: ARG -
    complex: NORM -
    complex: CONJ -
    complex: IMPART -
    complex: REPART -
    complex: RATIONALIZE -
    complex: ROOTSCOMPLEX -
    complex: ROOTSREAL -
    COMPLEX switch: COMPLEX -
    composite structure: MAP -
    COMP switch: COMP -
    concept: boolean value -
    concept: false -
    concept: TRUE -
    concept: Ideal Parameters -
    concept: lex term order -
    concept: gradlex term order -
    concept: revgradlex term order -
    concept: gradlexgradlex term order -
    concept: gradlexrevgradlex term order -
    concept: lexgradlex term order -
    concept: lexrevgradlex term order -
    concept: weighted term order -
    concept: graded term order -
    concept: matrix term order -
    concept: Module -
    concept: numeric accuracy -
    concept: Chebyshev fit -
    concept: Constants -
    concept: Axes names -
    Confluent Hypergeometric function: KummerM -
    Confluent Hypergeometric function: KummerU -
    Confluent Hypergeometric function: WhittakerW -
    CONJ operator: CONJ -
    conjugate: CONJ -
    CONS operator: CONS -
    constant: E -
    constant: I -
    constant: INFINITY -
    constant: NIL -
    constant: PI -
    constant: T -
    Constants concept: Constants -
    CONT command: CONT -
    CONTINUED FRACTION operator: CONTINUED FRACTION -
    contour switch: contour -
    copy into operator: copy into -
    cosecant: CSC -
    COSH operator: COSH -
    cosine integral function: Ci -
    COS operator: COS -
    COTH operator: COTH -
    COT operator: COT -
    CRACK package: CRACK -
    CRAMER switch: CRAMER -
    CREF switch: CREF -
    cross product: AVECTOR -
    cross product: ORTHOVEC -
    cross reference: CREF -
    CSCH operator: CSCH -
    CSC operator: CSC -
    curl: ORTHOVEC -
    CVIT package: CVIT -
    dd groebner operator: dd groebner -
    declaration: ANTISYMMETRIC -
    declaration: ARRAY -
    declaration: DEPEND -
    declaration: EVEN -
    declaration: FACTOR declaration -
    declaration: INFIX -
    declaration: INTEGER -
    declaration: KORDER -
    declaration: LINEAR -
    declaration: LINELENGTH -
    declaration: LISTARGP -
    declaration: NODEPEND -
    declaration: NONCOM -
    declaration: NONZERO -
    declaration: ODD -
    declaration: OPERATOR -
    declaration: ORDER -
    declaration: PRECEDENCE -
    declaration: PRECISION -
    declaration: PRINT PRECISION -
    declaration: REAL -
    declaration: REMFAC -
    declaration: SCALAR -
    declaration: SCIENTIFIC NOTATION -
    declaration: SHARE -
    declaration: SYMMETRIC -
    declaration: TR -
    declaration: UNTR -
    declaration: VARNAME -
    declaration: MATRIX -
    declaration: INDEX -
    declaration: NOSPUR -
    declaration: REMIND -
    declaration: SPUR -
    declaration: VECTOR -
    DECOMPOSE operator: DECOMPOSE -
    decomposition: FIRST -
    decomposition: REST -
    decomposition: SECOND -
    decomposition: THIRD -
    decomposition: DECOMPOSE -
    decomposition: PART -
    decomposition: STRUCTR -
    DEFINE command: DEFINE -
    definite integration: DEFINT -
    DEFINT package: DEFINT -
    DEFN switch: DEFN -
    DEG2DMS operator: DEG2DMS -
    DEG2RAD operator: DEG2RAD -
    DEG operator: DEG -
    degree: HIGH POW -
    degree: LOW POW -
    degree: DEG -
    degrees: DEG2DMS -
    degrees: DEG2RAD -
    degrees: DMS2DEG -
    degrees: DMS2RAD -
    degrees: RAD2DEG -
    degrees: RAD2DMS -
    DEMO switch: DEMO -
    denominator: DEN -
    DEN operator: DEN -
    depend: NODEPEND -
    DEPEND declaration: DEPEND -
    dependency: DEPEND -
    derivative: DF -
    derivative: DFPRINT -
    derivative: NOARG -
    DESIR package: DESIR -
    determinant: DET -
    DET operator: DET -
    DF operator: DF -
    DFPART package: DFPART -
    DFPRINT switch: DFPRINT -
    diagonal operator: diagonal -
    DIFFERENCE operator: DIFFERENCE -
    differential calculus: EXCALC -
    differential equation: ODESOLVE -
    differential equation: CRACK -
    differential equation: DESIR -
    differential equation: SPDE -
    differential equations: APPLYSYM -
    differential form: EXCALC -
    dilogarithm function: DILOG -
    dilogarithm function: DILOG extended -
    DILOG extended operator: DILOG extended -
    DILOG operator: DILOG -
    Dirac algebra: CVIT -
    DISPLAY command: DISPLAY -
    distributive polynomials: Term order -
    distributive polynomials: gsort -
    distributive polynomials: gsplit -
    distributive polynomials: gspoly -
    div: ORTHOVEC -
    DIV switch: DIV -
    DMS2DEG operator: DMS2DEG -
    DMS2RAD operator: DMS2RAD -
    dollar command: dollar -
    dot operator: dot -
    dot product: AVECTOR -
    dot product: ORTHOVEC -
    DUMMY package: DUMMY -
    dummy variable: DUMMY -
    ECHO switch: ECHO -
    E constant: E -
    ED command: ED -
    EDITDEF command: EDITDEF -
    eigenvalue: MATEIGEN -
    Ei operator: Ei -
    EllipticE operator: EllipticE -
    EllipticF operator: EllipticF -
    EllipticK operator: EllipticK -
    EllipticKprime operator: EllipticKprime -
    EllipticTHETA operator: EllipticTHETA -
    else: IF -
    END command: END -
    EPS operator: EPS -
    equal: EQUATION -
    EQUAL operator: EQUAL -
    equalsign operator: equalsign -
    equation: EQUAL -
    equation: LHS -
    equation: RHS -
    equation: EVALLHSEQP -
    equation solving: SOLVE -
    equation solving: num solve -
    equation system: SOLVE -
    equation system: num solve -
    EQUATION type: EQUATION -
    erfc operator: erfc -
    ERF extended operator: ERF extended -
    erfi operator: erfi -
    ERF operator: ERF -
    ERRCONT switch: ERRCONT -
    error function: ERF -
    error function: ERF extended -
    error function: erfc -
    error handling: REDERR -
    error handling: ERRCONT -
    EULER operator: EULER -
    EULERP operator: EULERP -
    Euler's constant: Constants -
    Euler's constant: PSI -
    EVALLHSEQP switch: EVALLHSEQP -
    EVAL MODE variable: EVAL MODE -
    evaluation: ALGEBRAIC -
    EVEN declaration: EVEN -
    EVENP operator: EVENP -
    EXCALC package: EXCALC -
    EXPAND CASES operator: EXPAND CASES -
    EXPANDLOGS switch: EXPANDLOGS -
    exponential function: EXP -
    exponential integral function: Ei -
    exponent simplification: COMBINEEXPT -
    EXP operator: EXP -
    EXPREAD operator: EXPREAD -
    EXP switch: EXP switch -
    EXPT operator: EXPT -
    extend operator: extend -
    exterior calculus: EXCALC -
    EZGCD switch: EZGCD -
    factor: REMFAC -
    FACTOR declaration: FACTOR declaration -
    FACTORIAL operator: FACTORIAL -
    factorize: IFACTOR -
    factorize: LIMITEDFACTORS -
    factorize: OVERVIEW -
    factorize: TRALLFAC -
    factorize: TRFAC -
    FACTORIZE operator: FACTORIZE -
    FACTOR switch: FACTOR -
    FAILHARD switch: FAILHARD -
    false: NIL -
    false: TRUE -
    false concept: false -
    fast la switch: fast la -
    Faugere-Gianni-Lazard-Mora algorithm: Groebner bases - -
    FIDE package: FIDE -
    find companion operator: find companion -
    FIRST operator: FIRST -
    firstroot: Roots Package -
    FIX operator: FIX -
    FIXP operator: FIXP -
    Fletcher Reeves: num min -
    floating point: PRECISION -
    floating point: PRINT PRECISION -
    floating point: SCIENTIFIC NOTATION -
    floating point: BFSPACE -
    floating point: ROUNDALL -
    floating point: ROUNDED -
    FLOOR operator: FLOOR -
    FORALL command: FORALL -
    FOR command: FOR -
    FOREACH command: FOREACH -
    FORTRAN: CARD NO -
    FORTRAN: FORT WIDTH -
    FORTRAN: FORT -
    FORTRAN: FORTUPPER -
    FORTRAN: GENTRAN -
    FORT switch: FORT -
    FORTUPPER switch: FORTUPPER -
    FORT WIDTH variable: FORT WIDTH -
    Fourier series: CAMAL -
    FPS package: FPS -
    FREEOF operator: FREEOF -
    Free Variable type: Free Variable -
    Fresnel C operator: Fresnel C -
    Fresnel S operator: Fresnel S -
    Frobenius operator: Frobenius -
    FULLPREC switch: FULLPREC -
    FULLROOTS switch: FULLROOTS -
    gamma: FACTORIAL -
    GAMMA operator: GAMMA -
    GCD operator: GCD -
    GCD switch: GCD switch -
    GC switch: GC -
    gdimension operator: gdimension -
    GegenbauerP operator: GegenbauerP -
    generalized hypergeometric function: HYPERGEOMETRIC - -
    GENTRAN package: GENTRAN -
    GEQ operator: GEQ -
    geqsign operator: geqsign -
    get columns operator: get columns -
    getroot: Roots Package -
    get rows operator: get rows -
    gindependent sets operator: gindependent sets -
    glexconvert operator: glexconvert -
    gltbasis switch: gltbasis -
    gltb variable: gltb -
    glterms variable: glterms -
    gmodule variable: gmodule -
    GNUPLOT and REDUCE introduction: GNUPLOT and REDUCE - -
    Golden Ratio: Constants -
    G operator: G -
    Gosper algorithm: PROD -
    Gosper algorithm: SUM -
    GOTO command: GOTO -
    grad: ORTHOVEC -
    graded term order concept: graded term order -
    gradlexgradlex term order concept: gradlexgradlex term - order -
    gradlexrevgradlex term order concept: gradlexrevgradle -x term order -
    gradlex term order concept: gradlex term order -
    gram schmidt operator: gram schmidt -
    graphics: PLOT -
    greater operator: greater -
    GREATERP operator: GREATERP -
    greatest common divisor: GCD -
    greatest common divisor: EZGCD -
    greatest common divisor: GCD switch -
    greduce operator: greduce -
    groebfullreduction switch: groebfullreduction -
    groebmonfac variable: groebmonfac -
    groebner: gdimension -
    groebner: gindependent sets -
    Groebner: CALI -
    Groebner: IDEALS -
    Groebner bases introduction: Groebner bases -
    Groebner basis: XIDEAL -
    groebnerf operator: groebnerf -
    groebner operator: groebner -
    groebnert operator: groebnert -
    groebner walk operator: groebner walk -
    groebopt switch: groebopt -
    groebprereduce switch: groebprereduce -
    groebprotfile variable: groebprotfile -
    groebprot switch: groebprot -
    groebresmax variable: groebresmax -
    groebrestriction variable: groebrestriction -
    groebstat switch: groebstat -
    group command: group -
    gsort operator: gsort -
    gsplit operator: gsplit -
    gspoly operator: gspoly -
    gvarslast variable: gvarslast -
    gvars operator: gvars -
    gzerodim? operator: gzerodim -
    HANKEL1 operator: HANKEL1 -
    HANKEL2 operator: HANKEL2 -
    Heaviside operator: Heaviside -
    HE-dot operator: HE dot -
    HEPHYS introduction: HEPHYS -
    HermiteP operator: HermiteP -
    hermitian tp operator: hermitian tp -
    hessian operator: hessian -
    hidden3d switch: hidden3d -
    high energy physics: XCOLOR -
    HIGH POW variable: HIGH POW -
    hilbert operator: hilbert -
    hilbertpolynomial operator: hilbertpolynomial -
    history: DISPLAY -
    Hollmann algorithm: Groebner bases -
    Hollmann algorithm: hilbertpolynomial -
    HORNER switch: HORNER -
    hyperbolic arccosecant: ASECH -
    hyperbolic arccosine: ACOSH -
    hyperbolic arcsine: ASINH -
    hyperbolic arctangent: ATANH -
    hyperbolic cosecan: CSCH -
    hyperbolic cosine: COSH -
    hyperbolic cosine integral function: Chi -
    hyperbolic cotangent: ACOTH -
    hyperbolic cotangent: COTH -
    hyperbolic secant: SECH -
    hyperbolic sine: SINH -
    hyperbolic sine integral function: Shi -
    hyperbolic tangent: TANH -
    hypergeometric function: HYPERGEOMETRIC -
    HYPERGEOMETRIC operator: HYPERGEOMETRIC -
    HYPOT operator: HYPOT -
    I constant: I -
    ideal dimension: gdimension -
    ideal dimension: gindependent sets -
    Ideal Parameters concept: Ideal Parameters -
    idealquotient operator: idealquotient -
    IDEALS package: IDEALS -
    ideal variables: gindependent sets -
    ideal variables: glexconvert -
    identifier: MKID -
    IDENTIFIER type: IDENTIFIER -
    IFACTOR switch: IFACTOR -
    IF command: IF -
    imaginary part: IMPART -
    IMPART operator: IMPART -
    IN command: IN -
    INDEX declaration: INDEX -
    INEQ package: INEQ -
    inequality: INEQ -
    INFINITY constant: INFINITY -
    INFIX declaration: INFIX -
    initial value problem: num odesolve -
    input: ADJPREC -
    input: EXPREAD -
    input: IN -
    input: RAISE -
    INPUT command: INPUT -
    integer: CEILING -
    integer: FIX -
    integer: FIXP -
    integer: FLOOR -
    integer: ROUND -
    integer: IFACTOR -
    integer: PERIOD -
    INTEGER declaration: INTEGER -
    integral function: Si -
    integral function: Shi -
    integral function: s i -
    integral function: Chi -
    integration: INT -
    integration: ALGINT -
    integration: FAILHARD -
    integration: NOLNR -
    integration: TRINT -
    integration: num int -
    integration of square roots: ALGINT package -
    interactive: DISPLAY -
    interactive: PAUSE -
    interactive: RETRY -
    interactive: WS -
    interactive: INPUT -
    interactive: DEMO -
    interactive: INT switch -
    interpolation: INTERPOL -
    interpolation: MKPOLY -
    INTERPOL operator: INTERPOL -
    Interval type: Interval -
    INT operator: INT -
    introduction: ARITHMETIC OPERATIONS -
    introduction: SWITCHES -
    introduction: Groebner bases -
    introduction: Term order -
    introduction: HEPHYS -
    introduction: Numeric Package -
    introduction: Roots Package -
    introduction: Special Function Package -
    introduction: TAYLOR introduction -
    introduction: GNUPLOT and REDUCE -
    introduction: Linear Algebra package -
    introduction: Miscellaneous Packages -
    INTSTR switch: INTSTR -
    INT switch: INT switch -
    INVBASE package: INVBASE -
    isolater: Roots Package -
    JacobiAMPLITUDE operator: JacobiAMPLITUDE -
    Jacobian matrix: num solve -
    jacobian operator: jacobian -
    JacobiCD operator: JacobiCD -
    JacobiCN operator: JacobiCN -
    JacobiCS operator: JacobiCS -
    JacobiDC operator: JacobiDC -
    JacobiDN operator: JacobiDN -
    JacobiDS operator: JacobiDS -
    JacobiNC operator: JacobiNC -
    JacobiND operator: JacobiND -
    JacobiNS operator: JacobiNS -
    JacobiP operator: JacobiP -
    JacobiSC operator: JacobiSC -
    JacobiSD operator: JacobiSD -
    JacobiSN operator: JacobiSN -
    JacobiZETA operator: JacobiZETA -
    jordan block operator: jordan block -
    Jordan operator: Jordan -
    Jordansymbolic operator: Jordansymbolic -
    kernel order: KORDER -
    KERNEL type: KERNEL -
    Khinchin's constant: Constants -
    KORDER declaration: KORDER -
    Kredel-Weispfenning algorithm: Groebner bases -
    Kredel-Weispfenning algorithm: gindependent sets -
    KummerM operator: KummerM -
    KummerU operator: KummerU -
    LaguerreP operator: LaguerreP -
    Lambert W function operator: Lambert W function -
    LANDENTRANS operator: LANDENTRANS -
    LAPLACE package: LAPLACE -
    Laplacian: ORTHOVEC -
    Laurent-Puiseux series: FPS -
    LCM switch: LCM -
    LCOF operator: LCOF -
    leading power: LPOWER -
    leading term: LTERM -
    least squares: num fit -
    left-hand side: LHS -
    LegendreP operator: LegendreP -
    LENGTH operator: LENGTH -
    LEQ operator: LEQ -
    leqsign operator: leqsign -
    less operator: less -
    LESSP operator: LESSP -
    LESSSPACE switch: LESSSPACE -
    LET command: LET -
    lexgradlex term order concept: lexgradlex term order - -
    lexrevgradlex term order concept: lexrevgradlex term o -rder -
    lex term order concept: lex term order -
    l'Hopital's rule: LIMIT -
    LHS operator: LHS -
    LIE package: LIE -
    Lie symmetry: SPDE -
    LIMITEDFACTORS switch: LIMITEDFACTORS -
    LIMIT operator: LIMIT -
    Linear Algebra package introduction: Linear Algebra pa -ckage -
    LINEAR declaration: LINEAR -
    linear system: CRAMER -
    LINELENGTH declaration: LINELENGTH -
    lisp: DEFN -
    lisp: RLISP88 -
    LISP command: LISP -
    list: dot -
    list: FIRST -
    list: REST -
    list: REVERSE -
    list: SECOND -
    list: THIRD -
    list: MEMBER -
    list: APPEND -
    list: LENGTH -
    list: SELECT -
    LISTARGP declaration: LISTARGP -
    LISTARGS switch: LISTARGS -
    LIST operator: LIST -
    LIST switch: LIST switch -
    LN operator: LN -
    LOAD PACKAGE command: LOAD PACKAGE -
    logarithm: LN -
    logarithm: LOG -
    logarithm: LOGB -
    logarithm: COMBINELOGS -
    logarithm: EXPANDLOGS -
    LOGB operator: LOGB -
    LOG operator: LOG -
    loop: FOR -
    loop: FOREACH -
    loop: REPEAT -
    loop: WHILE -
    LOW POW variable: LOW POW -
    LPOWER operator: LPOWER -
    LTERM operator: LTERM -
    lu decom operator: lu decom -
    main variable: MAINVAR -
    MAINVAR operator: MAINVAR -
    make identity operator: make identity -
    map: SELECT -
    MAP operator: MAP -
    MASS command: MASS -
    MATCH command: MATCH -
    MATEIGEN operator: MATEIGEN -
    MAT operator: MAT -
    matrix: CRAMER -
    matrix: COFACTOR -
    matrix: DET -
    matrix: MAT -
    matrix: MATEIGEN -
    matrix: NULLSPACE -
    matrix: RANK -
    matrix: TP -
    matrix: TRACE -
    matrix augment operator: matrix augment -
    MATRIX declaration: MATRIX -
    matrixp operator: matrixp -
    matrix stack operator: matrix stack -
    matrix term order concept: matrix term order -
    maximum: MAX -
    MAX operator: MAX -
    MCD switch: MCD -
    MeijerG operator: MeijerG -
    MEMBER operator: MEMBER -
    memory: RECLAIM -
    memory: GC -
    minimum: MIN -
    minimum: num min -
    MIN operator: MIN -
    minor operator: minor -
    MINUS operator: MINUS -
    minussign operator: minussign -
    Miscellaneous Packages introduction: Miscellaneous Pac -kages -
    MKID command: MKID -
    MKPOLY operator: MKPOLY -
    MODSR package: MODSR -
    modular: SETMOD -
    modular: BALANCED MOD -
    modular polynomial: MODSR -
    MODULAR switch: MODULAR -
    Module concept: Module -
    MSG switch: MSG -
    MSHELL command: MSHELL -
    mult columns operator: mult columns -
    MULTIPLICITIES switch: MULTIPLICITIES -
    mult rows operator: mult rows -
    NAT switch: NAT -
    NCPOLY package: NCPOLY -
    NEARESTROOT operator: NEARESTROOT -
    NEQ operator: NEQ -
    NERO switch: NERO -
    Newton iteration: num solve -
    NEXTPRIME operator: NEXTPRIME -
    NIL constant: NIL -
    NOARG switch: NOARG -
    NOCONVERT switch: NOCONVERT -
    NODEPEND declaration: NODEPEND -
    NOLNR switch: NOLNR -
    NONCOM declaration: NONCOM -
    non commutative: NONCOM -
    non-commutativity: NCPOLY -
    NONZERO declaration: NONZERO -
    NORM operator: NORM -
    NOSPLIT switch: NOSPLIT -
    NOSPUR declaration: NOSPUR -
    NOT operator: NOT -
    NPRIMITIVE operator: NPRIMITIVE -
    NULLSPACE operator: NULLSPACE -
    NUMBERP operator: NUMBERP -
    numerator: NUM -
    numeric accuracy concept: numeric accuracy -
    Numeric Package introduction: Numeric Package -
    num fit operator: num fit -
    num int operator: num int -
    num min operator: num min -
    num odesolve operator: num odesolve -
    NUM operator: NUM -
    num solve operator: num solve -
    NUMVAL switch: NUMVAL -
    ODD declaration: ODD -
    ODE: num odesolve -
    ODESOLVE operator: ODESOLVE -
    OFF command: OFF -
    ON command: ON -
    ONE OF type: ONE OF -
    open: OUT -
    operator: dot -
    operator: assign -
    operator: equalsign -
    operator: replace -
    operator: plussign -
    operator: minussign -
    operator: asterisk -
    operator: slash -
    operator: power -
    operator: caret -
    operator: geqsign -
    operator: greater -
    operator: leqsign -
    operator: less -
    operator: tilde -
    operator: AND -
    operator: CONS -
    operator: FIRST -
    operator: GEQ -
    operator: GREATERP -
    operator: LIST -
    operator: OR -
    operator: REST -
    operator: REVERSE -
    operator: SECOND -
    operator: SET -
    operator: SETQ -
    operator: THIRD -
    operator: WHEN -
    operator: ABS -
    operator: ARG -
    operator: CEILING -
    operator: CHOOSE -
    operator: DEG2DMS -
    operator: DEG2RAD -
    operator: DIFFERENCE -
    operator: DILOG -
    operator: DMS2DEG -
    operator: DMS2RAD -
    operator: FACTORIAL -
    operator: FIX -
    operator: FIXP -
    operator: FLOOR -
    operator: EXPT -
    operator: GCD -
    operator: LN -
    operator: LOG -
    operator: LOGB -
    operator: MAX -
    operator: MIN -
    operator: MINUS -
    operator: NEXTPRIME -
    operator: NORM -
    operator: PERM -
    operator: PLUS -
    operator: QUOTIENT -
    operator: RAD2DEG -
    operator: RAD2DMS -
    operator: RECIP -
    operator: REMAINDER -
    operator: ROUND -
    operator: SIGN -
    operator: SQRT -
    operator: TIMES -
    operator: EQUAL -
    operator: EVENP -
    operator: FREEOF -
    operator: LEQ -
    operator: LESSP -
    operator: MEMBER -
    operator: NEQ -
    operator: NOT -
    operator: NUMBERP -
    operator: ORDP -
    operator: PRIMEP -
    operator: RECLAIM -
    operator: APPEND -
    operator: ARBINT -
    operator: ARBCOMPLEX -
    operator: ARGLENGTH -
    operator: COEFF -
    operator: COEFFN -
    operator: CONJ -
    operator: CONTINUED FRACTION -
    operator: DECOMPOSE -
    operator: DEG -
    operator: DEN -
    operator: DF -
    operator: EXPAND CASES -
    operator: EXPREAD -
    operator: FACTORIZE -
    operator: HYPOT -
    operator: IMPART -
    operator: INT -
    operator: INTERPOL -
    operator: LCOF -
    operator: LENGTH -
    operator: LHS -
    operator: LIMIT -
    operator: LPOWER -
    operator: LTERM -
    operator: MAINVAR -
    operator: MAP -
    operator: NPRIMITIVE -
    operator: NUM -
    operator: ODESOLVE -
    operator: PART -
    operator: PF -
    operator: PROD -
    operator: REDUCT -
    operator: REPART -
    operator: RESULTANT -
    operator: RHS -
    operator: ROOT OF -
    operator: SELECT -
    operator: SHOWRULES -
    operator: SOLVE -
    operator: SORT -
    operator: STRUCTR -
    operator: SUB -
    operator: SUM -
    operator: WS -
    operator: INFIX -
    operator: LINEAR -
    operator: NONCOM -
    operator: NONZERO -
    operator: ODD -
    operator: PRECEDENCE -
    operator: SYMMETRIC -
    operator: WHERE -
    operator: ACOS -
    operator: ACOSH -
    operator: ACOT -
    operator: ACOTH -
    operator: ACSC -
    operator: ACSCH -
    operator: ASEC -
    operator: ASECH -
    operator: ASIN -
    operator: ASINH -
    operator: ATAN -
    operator: ATANH -
    operator: ATAN2 -
    operator: COS -
    operator: COSH -
    operator: COT -
    operator: COTH -
    operator: CSC -
    operator: CSCH -
    operator: ERF -
    operator: EXP -
    operator: SEC -
    operator: SECH -
    operator: SIN -
    operator: SINH -
    operator: TAN -
    operator: TANH -
    operator: LISTARGS -
    operator: COFACTOR -
    operator: DET -
    operator: MAT -
    operator: MATEIGEN -
    operator: NULLSPACE -
    operator: RANK -
    operator: TP -
    operator: TRACE -
    operator: torder -
    operator: torder compile -
    operator: gvars -
    operator: groebner -
    operator: groebner walk -
    operator: gzerodim -
    operator: gdimension -
    operator: gindependent sets -
    operator: dd groebner -
    operator: glexconvert -
    operator: greduce -
    operator: preduce -
    operator: idealquotient -
    operator: hilbertpolynomial -
    operator: saturation -
    operator: groebnerf -
    operator: groebnert -
    operator: preducet -
    operator: gsort -
    operator: gsplit -
    operator: gspoly -
    operator: HE dot -
    operator: EPS -
    operator: G -
    operator: num min -
    operator: num solve -
    operator: num int -
    operator: num odesolve -
    operator: bounds -
    operator: num fit -
    operator: MKPOLY -
    operator: NEARESTROOT -
    operator: REALROOTS -
    operator: ROOTACC -
    operator: ROOTS -
    operator: ROOT VAL -
    operator: BERNOULLI -
    operator: BERNOULLIP -
    operator: EULER -
    operator: EULERP -
    operator: ZETA -
    operator: BESSELJ -
    operator: BESSELY -
    operator: HANKEL1 -
    operator: HANKEL2 -
    operator: BESSELI -
    operator: BESSELK -
    operator: StruveH -
    operator: StruveL -
    operator: KummerM -
    operator: KummerU -
    operator: WhittakerW -
    operator: Airy Ai -
    operator: Airy Bi -
    operator: Airy Aiprime -
    operator: Airy Biprime -
    operator: JacobiSN -
    operator: JacobiCN -
    operator: JacobiDN -
    operator: JacobiCD -
    operator: JacobiSD -
    operator: JacobiND -
    operator: JacobiDC -
    operator: JacobiNC -
    operator: JacobiSC -
    operator: JacobiNS -
    operator: JacobiDS -
    operator: JacobiCS -
    operator: JacobiAMPLITUDE -
    operator: AGM FUNCTION -
    operator: LANDENTRANS -
    operator: EllipticF -
    operator: EllipticK -
    operator: EllipticKprime -
    operator: EllipticE -
    operator: EllipticTHETA -
    operator: JacobiZETA -
    operator: POCHHAMMER -
    operator: GAMMA -
    operator: BETA -
    operator: PSI -
    operator: POLYGAMMA -
    operator: DILOG extended -
    operator: Lambert W function -
    operator: ChebyshevT -
    operator: ChebyshevU -
    operator: HermiteP -
    operator: LaguerreP -
    operator: LegendreP -
    operator: JacobiP -
    operator: GegenbauerP -
    operator: SolidHarmonicY -
    operator: SphericalHarmonicY -
    operator: Si -
    operator: Shi -
    operator: s i -
    operator: Ci -
    operator: Chi -
    operator: ERF extended -
    operator: erfc -
    operator: Ei -
    operator: Fresnel C -
    operator: Fresnel S -
    operator: BINOMIAL -
    operator: STIRLING1 -
    operator: STIRLING2 -
    operator: ThreejSymbol -
    operator: Clebsch Gordan -
    operator: SixjSymbol -
    operator: HYPERGEOMETRIC -
    operator: MeijerG -
    operator: Heaviside -
    operator: erfi -
    operator: taylor -
    operator: taylorcombine -
    operator: taylororiginal -
    operator: taylorrevert -
    operator: taylorseriesp -
    operator: taylortemplate -
    operator: taylortostandard -
    operator: add columns -
    operator: add rows -
    operator: add to columns -
    operator: add to rows -
    operator: augment columns -
    operator: band matrix -
    operator: block matrix -
    operator: char matrix -
    operator: char poly -
    operator: cholesky -
    operator: coeff matrix -
    operator: column dim -
    operator: companion -
    operator: copy into -
    operator: diagonal -
    operator: extend -
    operator: find companion -
    operator: get columns -
    operator: get rows -
    operator: gram schmidt -
    operator: hermitian tp -
    operator: hessian -
    operator: hilbert -
    operator: jacobian -
    operator: jordan block -
    operator: lu decom -
    operator: make identity -
    operator: matrix augment -
    operator: matrixp -
    operator: matrix stack -
    operator: minor -
    operator: mult columns -
    operator: mult rows -
    operator: pivot -
    operator: pseudo inverse -
    operator: random matrix -
    operator: remove columns -
    operator: remove rows -
    operator: row dim -
    operator: rows pivot -
    operator: simplex -
    operator: squarep -
    operator: stack rows -
    operator: sub matrix -
    operator: svd -
    operator: swap columns -
    operator: swap entries -
    operator: swap rows -
    operator: symmetricp -
    operator: toeplitz -
    operator: vandermonde -
    operator: Smithex -
    operator: Smithex int -
    operator: Frobenius -
    operator: Ratjordan -
    operator: Jordansymbolic -
    operator: Jordan -
    OPERATOR declaration: OPERATOR -
    optimization: SCOPE -
    Optional Free Variable type: Optional Free Variable - -
    order: ORDP -
    order: KORDER -
    ORDER declaration: ORDER -
    ORDP operator: ORDP -
    OR operator: OR -
    ORTHOVEC package: ORTHOVEC -
    OUT command: OUT -
    Outmoded Operations: EDITDEF -
    output: CARD NO -
    output: FORT WIDTH -
    output: WRITE -
    output: SHOWRULES -
    output: FACTOR declaration -
    output: LINELENGTH -
    output: ORDER -
    output: PRINT PRECISION -
    output: REMFAC -
    output: SCIENTIFIC NOTATION -
    output: OUT -
    output: SHUT -
    output: ALLFAC -
    output: BFSPACE -
    output: DEMO -
    output: DFPRINT -
    output: DIV -
    output: ECHO -
    output: FACTOR -
    output: HORNER -
    output: INTSTR -
    output: LESSSPACE -
    output: MSG -
    output: NAT -
    output: NERO -
    output: NOARG -
    output: NOSPLIT -
    output: PERIOD -
    output: PRET -
    output: PRI -
    output: RAT -
    output: RATPRI -
    output: REVPRI -
    output: RLFI -
    output: TRI -
    OUTPUT switch: OUTPUT -
    OVERVIEW switch: OVERVIEW -
    package: LOAD PACKAGE -
    package: ALGINT package -
    package: APPLYSYM -
    package: ARNUM -
    package: ASSIST -
    package: AVECTOR -
    package: BOOLEAN -
    package: CALI -
    package: CAMAL -
    package: CHANGEVR -
    package: COMPACT -
    package: CRACK -
    package: CVIT -
    package: DEFINT -
    package: DESIR -
    package: DFPART -
    package: DUMMY -
    package: EXCALC -
    package: FPS -
    package: FIDE -
    package: GENTRAN -
    package: IDEALS -
    package: INEQ -
    package: INVBASE -
    package: LAPLACE -
    package: LIE -
    package: MODSR -
    package: NCPOLY -
    package: ORTHOVEC -
    package: PHYSOP -
    package: PM -
    package: RANDPOLY -
    package: REACTEQN -
    package: RESET -
    package: RESIDUE -
    package: RLFI -
    package: SCOPE -
    package: SETS -
    package: SPDE -
    package: SYMMETRY -
    package: TPS -
    package: TRI -
    package: TRIGSIMP -
    package: XCOLOR -
    package: XIDEAL -
    package: WU -
    package: ZEILBERG -
    package: ZTRANS -
    partial derivative: DF -
    partial derivative: DFPART -
    partial fraction: PF -
    PART operator: PART -
    pattern matching: PM -
    PAUSE command: PAUSE -
    percent command: percent -
    PERIOD switch: PERIOD -
    PERM operator: PERM -
    permutation: PERM -
    PF operator: PF -
    PHYSOP package: PHYSOP -
    PI constant: PI -
    pivot operator: pivot -
    plot: Pointset -
    plot: title -
    plot: xlabel -
    plot: ylabel -
    plot: zlabel -
    plot: terminal -
    plot: size -
    plot: view -
    plot: contour -
    plot: surface -
    plot: hidden3d -
    plot: SHOW GRID -
    plot: TRPLOT -
    PLOT command: PLOT -
    PLOTKEEP switch: PLOTKEEP -
    PLOTREFINE switch: PLOTREFINE -
    PLOTRESET command: PLOTRESET -
    plot xmesh variable: plot xmesh -
    plot ymesh variable: plot ymesh -
    PLUS operator: PLUS -
    plussign operator: plussign -
    PM package: PM -
    POCHHAMMER operator: POCHHAMMER -
    Pointset type: Pointset -
    polar angle: ARG -
    POLYGAMMA operator: POLYGAMMA -
    polynomial: HIGH POW -
    polynomial: LOW POW -
    polynomial: ROOT MULTIPLICITIES -
    polynomial: GCD -
    polynomial: REMAINDER -
    polynomial: DECOMPOSE -
    polynomial: DEG -
    polynomial: FACTORIZE -
    polynomial: INTERPOL -
    polynomial: LCOF -
    polynomial: LPOWER -
    polynomial: LTERM -
    polynomial: MAINVAR -
    polynomial: NPRIMITIVE -
    polynomial: REDUCT -
    polynomial: RESULTANT -
    polynomial: EZGCD -
    polynomial: FULLROOTS -
    polynomial: HORNER -
    polynomial: LIMITEDFACTORS -
    polynomial: RATARG -
    polynomial: RATIONAL -
    polynomial: TRIGFORM -
    polynomial: Ideal Parameters -
    polynomial: Roots Package -
    polynomial: MKPOLY -
    polynomial: ROOTS -
    polynomial: ROOT VAL -
    polynomial: CALI -
    polynomial: IDEALS -
    polynomial: WU -
    power operator: power -
    power series: FPS -
    power series: TPS -
    PRECEDENCE declaration: PRECEDENCE -
    PRECISE switch: PRECISE -
    precision: ADJPREC -
    precision: FULLPREC -
    PRECISION declaration: PRECISION -
    preduce operator: preduce -
    preducet operator: preducet -
    PRET switch: PRET -
    prime number: NEXTPRIME -
    prime number: PRIMEP -
    PRIMEP operator: PRIMEP -
    primitive part: NPRIMITIVE -
    PRINT PRECISION declaration: PRINT PRECISION -
    PRI switch: PRI -
    PROCEDURE command: PROCEDURE -
    PROD operator: PROD -
    product: PROD -
    pseudo inverse operator: pseudo inverse -
    PSI operator: PSI -
    QUIT command: QUIT -
    QUOTIENT operator: QUOTIENT -
    RAD2DEG operator: RAD2DEG -
    RAD2DMS operator: RAD2DMS -
    radians: DEG2DMS -
    radians: DEG2RAD -
    radians: DMS2DEG -
    radians: DMS2RAD -
    radians: RAD2DEG -
    radians: RAD2DMS -
    RAISE switch: RAISE -
    random matrix operator: random matrix -
    random polynomial: RANDPOLY -
    RANDPOLY package: RANDPOLY -
    RANK operator: RANK -
    RATARG switch: RATARG -
    rational expression: DEN -
    rational expression: NUM -
    rational expression: PF -
    rational expression: GCD switch -
    rational expression: LCM -
    rational expression: MCD -
    rational expression: RATARG -
    rational expression: RATIONAL -
    rational expression: RATIONALIZE -
    rational expression: RATPRI -
    rational expression: ROUNDALL -
    RATIONALIZE switch: RATIONALIZE -
    rational numbers: CONTINUED FRACTION -
    RATIONAL switch: RATIONAL -
    Ratjordan operator: Ratjordan -
    RATPRI switch: RATPRI -
    RAT switch: RAT -
    REACTEQN package: REACTEQN -
    REAL declaration: REAL -
    real part: REPART -
    REALROOTS operator: REALROOTS -
    RECIP operator: RECIP -
    RECLAIM operator: RECLAIM -
    REDERR command: REDERR -
    REDUCT operator: REDUCT -
    reductum: REDUCT -
    REMAINDER operator: REMAINDER -
    REMFAC declaration: REMFAC -
    REMIND declaration: REMIND -
    remove columns operator: remove columns -
    remove rows operator: remove rows -
    REPART operator: REPART -
    REPEAT command: REPEAT -
    replace operator: replace -
    requirements variable: requirements -
    RESET package: RESET -
    RESIDUE package: RESIDUE -
    REST operator: REST -
    RESULTANT operator: RESULTANT -
    RETRY command: RETRY -
    RETURN command: RETURN -
    REVERSE operator: REVERSE -
    revgradlex term order concept: revgradlex term order - -
    REVPRI switch: REVPRI -
    RHS operator: RHS -
    right-hand side: RHS -
    RLFI package: RLFI -
    RLISP88 switch: RLISP88 -
    rlrootno: Roots Package -
    root: SOLVE -
    root: num solve -
    ROOTACC operator: ROOTACC -
    ROOT MULTIPLICITIES variable: ROOT MULTIPLICITIES -
    ROOT OF operator: ROOT OF -
    roots: ROOT OF -
    roots: MKPOLY -
    roots: NEARESTROOT -
    roots: REALROOTS -
    roots: ROOTACC -
    roots: ROOT VAL -
    rootsat-prec: Roots Package -
    ROOTSCOMPLEX variable: ROOTSCOMPLEX -
    ROOTS operator: ROOTS -
    Roots Package introduction: Roots Package -
    ROOTSREAL variable: ROOTSREAL -
    rootval: Roots Package -
    ROOT VAL operator: ROOT VAL -
    ROUNDALL switch: ROUNDALL -
    ROUNDBF switch: ROUNDBF -
    rounded: PRECISION -
    rounded: PRINT PRECISION -
    rounded: SCIENTIFIC NOTATION -
    rounded: FULLPREC -
    rounded: NUMVAL -
    rounded: ROUNDALL -
    ROUNDED switch: ROUNDED -
    ROUND operator: ROUND -
    row dim operator: row dim -
    rows pivot operator: rows pivot -
    rule: WHEN -
    rule: SHOWRULES -
    rule: CLEARRULES -
    rule: LET -
    rule list: RULE -
    RULE type: RULE -
    Runge-Kutta: num odesolve -
    saturation operator: saturation -
    SAVEAS command: SAVEAS -
    SAVESTRUCTR switch: SAVESTRUCTR -
    SCALAR declaration: SCALAR -
    SCIENTIFIC NOTATION declaration: SCIENTIFIC NOTATION - -
    SCOPE package: SCOPE -
    SECH operator: SECH -
    SECOND operator: SECOND -
    SEC operator: SEC -
    SELECT operator: SELECT -
    semicolon command: semicolon -
    SETMOD command: SETMOD -
    SET operator: SET -
    SETQ operator: SETQ -
    SETS package: SETS -
    SHARE declaration: SHARE -
    Shi operator: Shi -
    SHOW GRID switch: SHOW GRID -
    SHOWRULES operator: SHOWRULES -
    SHOWTIME command: SHOWTIME -
    SHUT command: SHUT -
    SIGN operator: SIGN -
    simplex operator: simplex -
    simplification: EXP switch -
    simplification: PRECISE -
    simplification: RATIONALIZE -
    simplification: COMPACT -
    simplification: TRIGSIMP -
    sine: SIN -
    Sine integral function: Si -
    sine integral function: s i -
    singular value decomposition: svd -
    SINH operator: SINH -
    SIN operator: SIN -
    Si operator: Si -
    s i operator: s i -
    SixjSymbol operator: SixjSymbol -
    size variable: size -
    slash operator: slash -
    Smithex int operator: Smithex int -
    Smithex operator: Smithex -
    Solid harmonic polynomials: SolidHarmonicY -
    SolidHarmonicY operator: SolidHarmonicY -
    solve: assumptions -
    solve: requirements -
    solve: ROOT MULTIPLICITIES -
    solve: EXPAND CASES -
    solve: ODESOLVE -
    solve: ROOT OF -
    solve: ARBVARS -
    solve: CRAMER -
    solve: FULLROOTS -
    solve: MULTIPLICITIES -
    solve: TRIGFORM -
    solve: TRNONLNR -
    solve: VAROPT -
    solve: NEARESTROOT -
    solve: REALROOTS -
    solve: ROOTS -
    solve: ROOT VAL -
    SOLVE operator: SOLVE -
    SOLVESINGULAR switch: SOLVESINGULAR -
    sorting: SORT -
    SORT operator: SORT -
    SPDE package: SPDE -
    Special Function Package introduction: Special Functio -n Package -
    Spence's Integral: DILOG extended -
    Spherical harmonic polynomials: SphericalHarmonicY -
    SphericalHarmonicY operator: SphericalHarmonicY -
    SPUR declaration: SPUR -
    SQRT operator: SQRT -
    squarep operator: squarep -
    square root: SQRT -
    square root: PRECISE -
    stack rows operator: stack rows -
    steepest descent: num min -
    STIRLING1 operator: STIRLING1 -
    STIRLING2 operator: STIRLING2 -
    STRING type: STRING -
    STRUCTR operator: STRUCTR -
    STRUCTR OPERATOR: SAVESTRUCTR -
    StruveH operator: StruveH -
    StruveL operator: StruveL -
    sub matrix operator: sub matrix -
    SUB operator: SUB -
    substitution: SUB -
    substitution: FORALL -
    substitution: LET -
    substitution: MATCH -
    substitution: WHERE -
    summation: SUM -
    summation: ZEILBERG -
    SUM operator: SUM -
    surface switch: surface -
    svd operator: svd -
    swap columns operator: swap columns -
    swap entries operator: swap entries -
    swap rows operator: swap rows -
    switch: ADJPREC -
    switch: NOCONVERT -
    switch: OFF -
    switch: ON -
    switch: ALGINT -
    switch: ALLBRANCH -
    switch: ALLFAC -
    switch: ARBVARS -
    switch: BALANCED MOD -
    switch: BFSPACE -
    switch: COMBINEEXPT -
    switch: COMBINELOGS -
    switch: COMP -
    switch: COMPLEX -
    switch: CREF -
    switch: CRAMER -
    switch: DEFN -
    switch: DEMO -
    switch: DFPRINT -
    switch: DIV -
    switch: ECHO -
    switch: ERRCONT -
    switch: EVALLHSEQP -
    switch: EXP switch -
    switch: EXPANDLOGS -
    switch: EZGCD -
    switch: FACTOR -
    switch: FAILHARD -
    switch: FORT -
    switch: FORTUPPER -
    switch: FULLPREC -
    switch: FULLROOTS -
    switch: GC -
    switch: GCD switch -
    switch: HORNER -
    switch: IFACTOR -
    switch: INT switch -
    switch: INTSTR -
    switch: LCM -
    switch: LESSSPACE -
    switch: LIMITEDFACTORS -
    switch: LIST switch -
    switch: LISTARGS -
    switch: MCD -
    switch: MODULAR -
    switch: MSG -
    switch: MULTIPLICITIES -
    switch: NAT -
    switch: NERO -
    switch: NOARG -
    switch: NOLNR -
    switch: NOSPLIT -
    switch: NUMVAL -
    switch: OUTPUT -
    switch: OVERVIEW -
    switch: PERIOD -
    switch: PRECISE -
    switch: PRET -
    switch: PRI -
    switch: RAISE -
    switch: RAT -
    switch: RATARG -
    switch: RATIONAL -
    switch: RATIONALIZE -
    switch: RATPRI -
    switch: REVPRI -
    switch: RLISP88 -
    switch: ROUNDALL -
    switch: ROUNDBF -
    switch: ROUNDED -
    switch: SAVESTRUCTR -
    switch: SOLVESINGULAR -
    switch: TIME -
    switch: TRALLFAC -
    switch: TRFAC -
    switch: TRIGFORM -
    switch: TRINT -
    switch: TRNONLNR -
    switch: VAROPT -
    switch: groebopt -
    switch: groebprereduce -
    switch: groebfullreduction -
    switch: gltbasis -
    switch: groebstat -
    switch: trgroeb -
    switch: trgroebs -
    switch: groebprot -
    switch: TRNUMERIC -
    switch: taylorautocombine -
    switch: taylorautoexpand -
    switch: taylorkeeporiginal -
    switch: taylorprintorder -
    switch: contour -
    switch: surface -
    switch: hidden3d -
    switch: PLOTKEEP -
    switch: PLOTREFINE -
    switch: SHOW GRID -
    switch: TRPLOT -
    switch: fast la -
    SWITCHES introduction: SWITCHES -
    symbolic: EVAL MODE -
    SYMBOLIC command: SYMBOLIC -
    SYMMETRIC declaration: SYMMETRIC -
    symmetricp operator: symmetricp -
    symmetries: APPLYSYM -
    SYMMETRY package: SYMMETRY -
    TANH operator: TANH -
    TAN operator: TAN -
    Taylor: ORTHOVEC -
    taylorautocombine switch: taylorautocombine -
    taylorautoexpand switch: taylorautoexpand -
    taylorcombine operator: taylorcombine -
    TAYLOR introduction: TAYLOR introduction -
    taylorkeeporiginal switch: taylorkeeporiginal -
    taylor operator: taylor -
    taylororiginal operator: taylororiginal -
    taylorprintorder switch: taylorprintorder -
    taylorprintterms variable: taylorprintterms -
    taylorrevert operator: taylorrevert -
    Taylor series: TPS -
    taylorseriesp operator: taylorseriesp -
    taylortemplate operator: taylortemplate -
    taylortostandard operator: taylortostandard -
    T constant: T -
    terminal variable: terminal -
    term order: torder compile -
    term order: lex term order -
    term order: gradlex term order -
    term order: revgradlex term order -
    term order: gradlexgradlex term order -
    term order: gradlexrevgradlex term order -
    term order: lexgradlex term order -
    term order: lexrevgradlex term order -
    term order: weighted term order -
    term order: graded term order -
    term order: matrix term order -
    term order: glexconvert -
    Term order introduction: Term order -
    TEX: RLFI -
    TEX: TRI -
    then: IF -
    THIRD operator: THIRD -
    ThreejSymbol operator: ThreejSymbol -
    tilde operator: tilde -
    time: SHOWTIME -
    TIMES operator: TIMES -
    TIME switch: TIME -
    title variable: title -
    toeplitz operator: toeplitz -
    Top: EDITDEF -
    torder compile operator: torder compile -
    torder operator: torder -
    TP operator: TP -
    TPS package: TPS -
    trace: TR -
    trace: UNTR -
    TRACE operator: TRACE -
    TRALLFAC switch: TRALLFAC -
    transform: LAPLACE -
    transpose: TP -
    TR declaration: TR -
    TRFAC switch: TRFAC -
    trgroebs switch: trgroebs -
    trgroeb switch: trgroeb -
    TRIGFORM switch: TRIGFORM -
    TRIGSIMP package: TRIGSIMP -
    TRINT switch: TRINT -
    TRI package: TRI -
    TRNONLNR switch: TRNONLNR -
    TRNUMERIC switch: TRNUMERIC -
    TRPLOT switch: TRPLOT -
    TRUE concept: TRUE -
    type: IDENTIFIER -
    type: KERNEL -
    type: STRING -
    type: EQUATION -
    type: RULE -
    type: Free Variable -
    type: Optional Free Variable -
    type: ONE OF -
    type: Interval -
    type: Pointset -
    ultraspherical polynomials: GegenbauerP -
    univariate polynomial: glexconvert -
    until: REPEAT -
    UNTR declaration: UNTR -
    utilities: ASSIST -
    vandermonde operator: vandermonde -
    variable: assumptions -
    variable: CARD NO -
    variable: EVAL MODE -
    variable: FORT WIDTH -
    variable: HIGH POW -
    variable: LOW POW -
    variable: requirements -
    variable: ROOT MULTIPLICITIES -
    variable: Free Variable -
    variable: Optional Free Variable -
    variable: gvarslast -
    variable: gltb -
    variable: glterms -
    variable: groebmonfac -
    variable: groebresmax -
    variable: groebrestriction -
    variable: groebprotfile -
    variable: gmodule -
    variable: ROOTSCOMPLEX -
    variable: ROOTSREAL -
    variable: taylorprintterms -
    variable: title -
    variable: xlabel -
    variable: ylabel -
    variable: zlabel -
    variable: terminal -
    variable: size -
    variable: view -
    variable: plot xmesh -
    variable: plot ymesh -
    variable elimination: lex term order -
    variable order: KORDER -
    variable order: ORDER -
    VARNAME declaration: VARNAME -
    VAROPT switch: VAROPT -
    VECDIM command: VECDIM -
    vector algebra: AVECTOR -
    vector algebra: ORTHOVEC -
    vector calculus: ORTHOVEC -
    VECTOR declaration: VECTOR -
    view variable: view -
    Weber's function: BESSELY -
    WEIGHT command: WEIGHT -
    weighted term order concept: weighted term order -
    WHEN operator: WHEN -
    WHERE operator: WHERE -
    WHILE command: WHILE -
    WhittakerW operator: WhittakerW -
    work space: WS -
    WRITE command: WRITE -
    WS operator: WS -
    WTLEVEL command: WTLEVEL -
    WU package: WU -
    Wu-Wen-Tsun algorithm: WU -
    XCOLOR package: XCOLOR -
    XIDEAL package: XIDEAL -
    xlabel variable: xlabel -
    ylabel variable: ylabel -
    ZEILBERG package: ZEILBERG -
    ZETA operator: ZETA -
    zlabel variable: zlabel -
    ZTRANS package: ZTRANS -
    DELETED r38/help/hcrtf.exe Index: r38/help/hcrtf.exe ================================================================== --- r38/help/hcrtf.exe +++ /dev/null cannot compute difference between binary files DELETED r38/help/htmlhelp.exe Index: r38/help/htmlhelp.exe ================================================================== --- r38/help/htmlhelp.exe +++ /dev/null cannot compute difference between binary files DELETED r38/help/mkhelpw.log Index: r38/help/mkhelpw.log ================================================================== --- r38/help/mkhelpw.log +++ /dev/null @@ -1,2563 +0,0 @@ -+++ Transcript to mkhelpw.log started at Fri Mar 26 11:27:59 2004 +++ -Codemist Standard Lisp 5.00 for Windows: Mar 25 2004 -Created: Tue Mar 23 16:08:03 2004 - -REDUCE 3.8, 15-Oct-03 ... -Memory allocation: 54522624 bytes - -+++ About to read file "mkhelpw.red" - -% This file runs the "*.tex" to "redhelp.rtf" conversion code in CSL. -% As well as providing the top level direction to the process it patches -% up for at least some of the places where the conversion code had been -% written in a manner not strongly related to the portability objectives -% of Standard Lisp... - -symbolic; -nil - - -off echo; -nil - - -on backtrace; -nil - - -on comp; -nil - - -!*windows := t; -t - - - -fluid '(package); -nil - - - -package := 'redhelp; -redhelp - - - -symbolic procedure inf x; - char!-code x;+++ inf compiled as link to char-code - -inf - - - -symbolic procedure channellinelength(f, l); - begin - f := wrs f; - l := linelength l; - wrs f; - return l - end;+++ channellinelength compiled, 12 + 4 bytes - -channellinelength - - - -symbolic procedure channelprin2(f, x); - begin - f := wrs f; - prin2 x; - wrs f; - return x - end;+++ channelprin2 compiled, 10 + 8 bytes - -channelprin2 - - - -symbolic macro procedure channelprintf u; - begin - scalar g; - g := gensym(); - return list('prog, list g, - list('setq, g, list('wrs, cadr u)), - 'printf . cddr u, - list('wrs, g)) - end;+++ channelprintf_76z7r3p3pl4b compiled, 33 + 24 bytes - -channelprintf - - - -symbolic procedure channelterpri f; - begin - f := wrs f; - terpri(); - wrs f; - end;+++ channelterpri compiled, 10 + 4 bytes - -channelterpri - - - -symbolic procedure channelreadch f; - begin - scalar c; - f := rds f; - c := readch(); - rds f; - return c - end;+++ channelreadch compiled, 12 + 4 bytes - -channelreadch - - - -in "comphelp.red"$ -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -0 - -nil -+++++ global !*raise converted to fluid -+++ job compiled, 113 + 148 bytes - -job - -nil - -nil - -nil -+++ rdch compiled, 3 + 8 bytes - -rdch -+++ rdch!* compiled, 3 + 12 bytes - -rdch!* -+++ rdchr0 compiled, 54 + 64 bytes - -rdchr0 -+++ unrdch compiled, 3 + 12 bytes - -unrdch -+++ myskip compiled, 5 + 8 bytes - -myskip -+++ myskipl compiled, 9 + 8 bytes - -myskipl -+++ myskipstring compiled, 41 + 24 bytes - -myskipstring - -nil - -lower -+++ mytoken compiled, 83 + 44 bytes - -mytoken -+++ mystring compiled, 28 + 16 bytes - -mystring -+++ mystring2 compiled, 14 + 12 bytes - -mystring2 -+++ mystring2!] compiled, 14 + 12 bytes - -mystring2!] -+++ mystring_nodename compiled, 41 + 40 bytes - -mystring_nodename -+++ mystring3 compiled, 23 + 16 bytes - -mystring3 -+++ raisestring compiled, 67 + 20 bytes - -raisestring -+++ lowerstring compiled, 75 + 20 bytes - -lowerstring -+++ mycompress compiled, 12 + 8 bytes - -mycompress -+++ mainloop compiled, 200 + 156 bytes - -mainloop - -*** local variable u in procedure include not used -+++ include compiled, 129 + 100 bytes - -include - -include - -include - -null - -null -+++ print_indent compiled, 21 + 20 bytes - -print_indent - -nil - -0 - -type - -seq - -lab - -count - -name -+++ reset compiled, 51 + 40 bytes - -reset -+++ sectappend compiled, 11 + 8 bytes - -sectappend -+++ section compiled, 10 + 20 bytes - -section -+++ close_section compiled, 39 + 24 bytes - -close_section -+++ close_section1 compiled, 40 + 40 bytes - -close_section1 -+++ write_sections compiled, 15 + 12 bytes - -write_sections -+++ write_section compiled, 67 + 52 bytes - -write_section -+++ make_dir_entry compiled, 8 + 8 bytes - -make_dir_entry -+++ help_gensym compiled, 10 + 12 bytes - -help_gensym -+++ open_section compiled, 172 + 112 bytes - -open_section - -section - -section - -section - -*** local variable u in procedure beg not used -+++ beg compiled, 87 + 68 bytes - -beg - -beg - -*** local variable u in procedure mmain not used -+++ mmain compiled as link to mainloop - -mmain - -mmain - -nil -+++ clean_name compiled, 27 + 16 bytes - -clean_name - -(((!,) . comma_sign) ((!.) . dot_sign) ((!;) . semicolon_sign) ((!%) . -percent_sign) ((!$) . dollar_sign) ((!: !=) . assign_sign) ((!=) . equal_sign) ( -(!+) . plus_sign) ((!-) . minus_sign) ((!*) . times_sign) ((!/) . slash_sign) (( -!* !*) . power_sign) ((!$ !> != !$) . geq_sign) ((!> !=) . geq_sign) ((!>) . -greater_sign) ((!$ !< != !$) . leq_sign) ((!< !=) . leq_sign) ((!<) . less_sign) -((!< !<) . block)) -+++ make_label compiled, 64 + 40 bytes - -make_label -+++ get_label compiled, 8 + 8 bytes - -get_label -+++ patch_ compiled, 29 + 16 bytes - -patch_ -+++ get_label1 compiled, 32 + 40 bytes - -get_label1 -+++ get_label2 compiled, 103 + 56 bytes - -get_label2 -+++ update_labels compiled, 47 + 36 bytes - -update_labels -+++ node compiled, 197 + 136 bytes - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node -+++ part compiled, 63 + 68 bytes - -part -+++ par_heading compiled, 26 + 16 bytes - -par_heading - -*** local variable type in procedure vpart not used -+++ vpart compiled, 13 + 32 bytes - -vpart -+++ vpart0 compiled, 81 + 72 bytes - -vpart0 -+++ compareahead compiled, 6 + 8 bytes - -compareahead -+++ compareahead1 compiled, 28 + 12 bytes - -compareahead1 -+++ look_ahead_suctx941k0ih compiled, 11 + 16 bytes - -look_ahead -REHASHING: chunks = 1, grow=1 - -*** local variable type in procedure examples_part not used -+++ examples_part compiled, 381 + 204 bytes - -examples_part -+++ non_verb_block compiled, 15 + 36 bytes - -non_verb_block -+++ make_multi_out compiled, 121 + 60 bytes - -make_multi_out -+++ cut_lines compiled, 37 + 8 bytes - -cut_lines -+++ matchleft compiled, 22 + 16 bytes - -matchleft -+++ matcharb compiled, 12 + 8 bytes - -matcharb -+++ read_one_line compiled, 15 + 12 bytes - -read_one_line - -part - -part - -part - -part - -part - -part - -part - -part - -*** local variable type in procedure do-itemize not used -+++ do!-itemize compiled, 6 + 20 bytes - -do!-itemize - -do!-itemize -+++ context_error compiled, 11 + 20 bytes - -context_error - -*** local variable u in procedure verb not used -+++ verb compiled, 12 + 24 bytes - -verb - -verb - -*** local variable u in procedure ldots not used -+++ ldots compiled, 3 + 12 bytes - -ldots - -ldots - -nil - -*** local variable u in procedure cdots not used -+++ cdots compiled, 3 + 12 bytes - -cdots - -cdots - -nil - -*** local variable u in procedure cdot not used -+++ cdot compiled, 3 + 12 bytes - -cdot - -cdot - -nil - -*** local variable u in procedure write_pi not used -+++ write_pi compiled, 3 + 12 bytes - -write_pi - -write_pi - -nil - -*** local variable u in procedure emphase not used -+++ emphase compiled, 3 + 12 bytes - -emphase - -emphase - -*** local variable u in procedure meta not used -+++ meta compiled, 18 + 20 bytes - -meta - -meta - -*** local variable u in procedure italic not used -+++ italic compiled, 8 + 24 bytes - -italic - -*** local variable u in procedure switchitalic not used -+++ switchitalic compiled, 1 + 4 bytes - -switchitalic - -italic - -italic - -italic - -*** local variable u in procedure nameref not used -+++ nameref compiled, 3 + 12 bytes - -nameref - -nameref - -*** local variable u in procedure ref not used -+++ ref compiled, 3 + 12 bytes - -ref - -ref -+++ see compiled, 4 + 12 bytes - -see - -see - -*** local variable u in procedure myname not used -+++ myname compiled, 3 + 12 bytes - -myname - -myname - -*** local variable u in procedure myindex not used -+++ myindex compiled, 5 + 20 bytes - -myindex - -myindex - -*** local variable u in procedure nameindex not used -+++ nameindex compiled, 10 + 24 bytes - -nameindex - -nameindex - -*** local variable u in procedure reduce not used -+++ reduce compiled, 3 + 12 bytes - -reduce - -reduce - -nil - -*** local variable u in procedure rept not used -+++ rept compiled, 3 + 12 bytes - -rept - -rept - -nil - -*** local variable u in procedure optional not used -+++ optional compiled, 3 + 12 bytes - -optional - -optional - -nil - -*** local variable u in procedure myexp not used -+++ myexp compiled, 5 + 16 bytes - -myexp - -myexp - -*** local variable u in procedure formula not used -+++ formula compiled, 3 + 12 bytes - -formula - -formula - -formula - -*** local variable u in procedure rfrac not used -+++ rfrac compiled, 8 + 24 bytes - -rfrac - -rfrac - -*** local variable u in procedure item not used -+++ item compiled, 14 + 32 bytes - -item - -item - -*** local variable u in procedure texonly1 not used -+++ texonly1 compiled, 48 + 44 bytes - -texonly1 - -texonly1 - -*** local variable u in procedure texonly2 not used -+++ texonly2 compiled, 67 + 68 bytes - -texonly2 - -texonly2 - -*** local variable u in procedure infoonly not used -+++ infoonly compiled, 6 + 12 bytes - -infoonly - -infoonly -+++ reporttopic compiled, 12 + 20 bytes - -reporttopic -+++ substipq compiled, 32 + 12 bytes - -substipq - -nil - - -in "helpwin.red"$ -nil - -t - -"f2" - -"f4" -+++ initoutput compiled, 404 + 520 bytes - -initoutput -+++ endoutput compiled, 11 + 16 bytes - -endoutput -+++ verbatim compiled, 3 + 8 bytes - -verbatim -+++ newfont compiled, 10 + 16 bytes - -newfont -+++ fontoff compiled, 11 + 24 bytes - -fontoff -+++ fonton compiled, 22 + 32 bytes - -fonton -+++ myprin2 compiled, 6 + 16 bytes - -myprin2 -+++ myprin2_protected compiled, 10 + 16 bytes - -myprin2_protected - -nil -+++ emit_start_verbatim compiled, 1 + 4 bytes - -emit_start_verbatim -+++ emit_end_verbatim compiled, 1 + 4 bytes - -emit_end_verbatim -+++ verbprin2 compiled, 56 + 60 bytes - -verbprin2 -+++ myterpri compiled, 3 + 12 bytes - -myterpri -+++ number4out compiled, 24 + 32 bytes - -number4out -+++ textout compiled, 132 + 84 bytes - -textout - -+++ par_heading redefined -+++ par_heading compiled, 24 + 16 bytes - -par_heading - -*** local variable name in procedure base_new_dir not used -+++ base_new_dir compiled, 1 + 4 bytes - -base_new_dir -+++ emit_dir_new compiled, 1 + 4 bytes - -emit_dir_new -+++ emit_dir_key compiled as link to emit_node_key - -emit_dir_key -+++ emit_dir_separator compiled as link to emit_node_separator - -emit_dir_separator -+++ emit_dir_label compiled as link to emit_node_label - -emit_dir_label -+++ emit_dir_title compiled, 6 + 12 bytes - -emit_dir_title -+++ emit_dir_browse compiled as link to emit_node_browse - -emit_dir_browse -+++ emit_node_separator compiled, 16 + 40 bytes - -emit_node_separator -+++ set_tab compiled, 3 + 12 bytes - -set_tab -+++ release_tab compiled, 3 + 12 bytes - -release_tab -+++ textoutl compiled, 26 + 16 bytes - -textoutl -+++ textout2 compiled, 26 + 16 bytes - -textout2 -+++ printem compiled, 18 + 16 bytes - -printem - -+++ printem redefined -+++ printem compiled, 19 + 24 bytes - -printem -+++ printref compiled, 49 + 40 bytes - -printref -+++ printnameref compiled as link to printref - -printnameref - -nil -+++ emit_node_keys compiled, 33 + 36 bytes - -emit_node_keys -+++ emit_node_key compiled as link to emit_hidden_node_key - -emit_node_key -+++ emit_hidden_node_key compiled, 33 + 16 bytes - -emit_hidden_node_key -+++ emit_node_label compiled, 10 + 28 bytes - -emit_node_label - -*** local variable dummy in procedure emit_node_title not used - -*** local variable type in procedure emit_node_title not used -+++ emit_node_title compiled, 10 + 28 bytes - -emit_node_title -+++ emit_node_browse compiled, 16 + 36 bytes - -emit_node_browse -+++ print_bold compiled, 19 + 20 bytes - -print_bold -+++ emit_dir_header compiled, 5 + 20 bytes - -emit_dir_header -+++ emit_dir_entry compiled, 45 + 48 bytes - -emit_dir_entry -+++ print_newline compiled, 13 + 32 bytes - -print_newline -+++ second_newline compiled, 4 + 12 bytes - -second_newline -+++ print_tab compiled, 4 + 16 bytes - -print_tab -+++ printstruct compiled, 7 + 16 bytes - -printstruct -+++ printstruct1 compiled, 58 + 16 bytes - -printstruct1 - -nil - - -in "minitex.red"$ -nil - -nil - -nil - -!\ - -!^ - -!_ - -2 - -3 - -4 -+++ mintex_convert0 compiled, 38 + 12 bytes - -mintex_convert0 -+++ mintex_convert compiled as link to mintex_convert0 - -mintex_convert -+++ minitex compiled, 102 + 40 bytes - -minitex -+++ minitex_pop_char compiled, 11 + 8 bytes - -minitex_pop_char -+++ minitex_skip compiled, 11 + 8 bytes - -minitex_skip -+++ minitex_next_char compiled, 6 + 8 bytes - -minitex_next_char -+++ struct compiled, 9 + 8 bytes - -struct -+++ make_chain compiled, 317 + 120 bytes - -make_chain - -*** local variable font in procedure make_char not used - -*** local variable cs in procedure make_char not used -+++ make_char compiled, 23 + 48 bytes - -make_char -+++ make_frac compiled, 211 + 76 bytes - -make_frac - -*** local variable y1 in procedure make_line not used -+++ make_line compiled, 22 + 32 bytes - -make_line -+++ make_multi compiled, 63 + 60 bytes - -make_multi - -*** local variable font in procedure make_end not used -+++ make_end compiled, 4 + 16 bytes - -make_end - -nil - -(chain 0 0 0) - -nil - -*** local variable term in procedure make_escape not used -+++ make_escape compiled, 77 + 72 bytes - -make_escape -+++ my_compare compiled, 23 + 16 bytes - -my_compare -+++ minitex_collect compiled, 8 + 12 bytes - -minitex_collect -+++ minitex_do compiled, 25 + 20 bytes - -minitex_do - -minitex_chain -+++ minitex_chain compiled, 37 + 24 bytes - -minitex_chain - -minitex_char - -*** local variable font in procedure minitex_char not used -+++ minitex_char compiled, 23 + 24 bytes - -minitex_char - -minitex_line - -*** local variable font in procedure minitex_line not used -+++ minitex_line compiled, 38 + 28 bytes - -minitex_line -+++ minitex_putchar compiled, 31 + 24 bytes - -minitex_putchar - -nil - - - -dir_src := "$reduce/doc/help/"; -"$reduce/doc/help/" - - - -job(bldmsg("%w.tex",package),"null.fil"); -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file $reduce/doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file $reduce/doc/help/concept.tex - ---- input file $reduce/doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file $reduce/doc/help/variable.tex - ---- input file $reduce/doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file $reduce/doc/help/syntax.tex - ---- input file $reduce/doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file $reduce/doc/help/arith.tex - ---- input file $reduce/doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file $reduce/doc/help/boolean.tex - ---- input file $reduce/doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file $reduce/doc/help/command.tex - ---- input file $reduce/doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file $reduce/doc/help/algebra.tex - ---- input file $reduce/doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file $reduce/doc/help/declare.tex - ---- input file $reduce/doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file $reduce/doc/help/io.tex - ---- input file $reduce/doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file $reduce/doc/help/elemfn.tex - ---- input file $reduce/doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file $reduce/doc/help/switch.tex - ---- input file $reduce/doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file $reduce/doc/help/matrix.tex - ---- input file $reduce/doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file $reduce/doc/help/pk-groeb.tex - ---- input file $reduce/doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file $reduce/doc/help/hephys.tex - ---- input file $reduce/doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file $reduce/doc/help/pk-numer.tex - ---- input file $reduce/doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file $reduce/doc/help/pk-roots.tex - ---- input file $reduce/doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file $reduce/doc/help/pk-specf.tex - ---- input file $reduce/doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file $reduce/doc/help/taylor.tex - ---- input file $reduce/doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file $reduce/doc/help/pk-gplot.tex - ---- input file $reduce/doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file $reduce/doc/help/linalg.tex - ---- input file $reduce/doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file $reduce/doc/help/normform.tex - ---- input file $reduce/doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file $reduce/doc/help/pk-misc.tex - ---- input file $reduce/doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file $reduce/doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -delete!-file "null.fil"; -t - - - -job(bldmsg("%w.tex",package),bldmsg("%w.rtf",package)); - ------- updating node labels ----- ------- updating done ------------ -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file $reduce/doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file $reduce/doc/help/concept.tex - ---- input file $reduce/doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file $reduce/doc/help/variable.tex - ---- input file $reduce/doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file $reduce/doc/help/syntax.tex - ---- input file $reduce/doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file $reduce/doc/help/arith.tex - ---- input file $reduce/doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file $reduce/doc/help/boolean.tex - ---- input file $reduce/doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file $reduce/doc/help/command.tex - ---- input file $reduce/doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file $reduce/doc/help/algebra.tex - ---- input file $reduce/doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file $reduce/doc/help/declare.tex - ---- input file $reduce/doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file $reduce/doc/help/io.tex - ---- input file $reduce/doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file $reduce/doc/help/elemfn.tex - ---- input file $reduce/doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file $reduce/doc/help/switch.tex - ---- input file $reduce/doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file $reduce/doc/help/matrix.tex - ---- input file $reduce/doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - ######## reference to (l e x) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (k e x) not found, - ######## reference to (l e x) not found, - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file $reduce/doc/help/pk-groeb.tex - ---- input file $reduce/doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file $reduce/doc/help/hephys.tex - ---- input file $reduce/doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file $reduce/doc/help/pk-numer.tex - ---- input file $reduce/doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file $reduce/doc/help/pk-roots.tex - ---- input file $reduce/doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file $reduce/doc/help/pk-specf.tex - ---- input file $reduce/doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file $reduce/doc/help/taylor.tex - ---- input file $reduce/doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file $reduce/doc/help/pk-gplot.tex - ---- input file $reduce/doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file $reduce/doc/help/linalg.tex - ---- input file $reduce/doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file $reduce/doc/help/normform.tex - ---- input file $reduce/doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file $reduce/doc/help/pk-misc.tex - ---- input file $reduce/doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file $reduce/doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -bye; - -End of Lisp run after 6.61+0.35 seconds - -+++ Transcript closed at end of run +++ DELETED r38/help/mkhtml.log Index: r38/help/mkhtml.log ================================================================== --- r38/help/mkhtml.log +++ /dev/null @@ -1,2671 +0,0 @@ -+++ Transcript to mkhtml.log started at Fri Apr 16 10:24:02 2004 +++ -Codemist Standard Lisp 5.00 for Windows: Apr 13 2004 -Created: Tue Apr 13 21:59:08 2004 - -REDUCE 3.8, 15-Apr-04 ... -Memory allocation: 54522624 bytes - -+++ About to read file "mkhtml.red" - -% -% This file runs the "*.tex" to "redhelp.html" conversion code. As -% well as providing the top level direction to the process it patches up -% for at least some of the places where the conversion code had been -% written in a manner not strongly related to the portability objectives of -% Standard Lisp... -% - -symbolic; -nil - - -off echo; -nil - - -on backtrace; -nil - - -on comp; -nil - - -!*windows := t; -t - - - -fluid '(package); -nil - - - -package := 'redhelp; -redhelp - - - -symbolic procedure deletip(a, b); - delete(a, b);+++ deletip compiled as link to delete - -deletip - - - -symbolic procedure inf x; - char!-code x;+++ inf compiled as link to char-code - -inf - - - -symbolic procedure channellinelength(f, l); - begin - f := wrs f; - l := linelength l; - wrs f; - return l - end;+++ channellinelength compiled, 12 + 4 bytes - -channellinelength - - - -symbolic procedure channelprin2(f, x); - begin - f := wrs f; - prin2 x; - wrs f; - return x - end;+++ channelprin2 compiled, 10 + 8 bytes - -channelprin2 - - - -symbolic procedure channelprin2t(f, x); - begin - f := wrs f; - prin2t x; - wrs f; - return x - end;+++ channelprin2t compiled, 10 + 8 bytes - -channelprin2t - - - -symbolic macro procedure channelprintf u; - begin - scalar g; - g := gensym(); - return list('prog, list g, - list('setq, g, list('wrs, cadr u)), - 'printf . cddr u, - list('wrs, g)) - end;+++ channelprintf_76z7r3p3pl4b compiled, 33 + 24 bytes - -channelprintf - - - -symbolic procedure channelterpri f; - begin - f := wrs f; - terpri(); - wrs f; - end;+++ channelterpri compiled, 10 + 4 bytes - -channelterpri - - - -symbolic procedure channelreadch f; - begin - scalar c; - f := rds f; - c := readch(); - rds f; - return c - end;+++ channelreadch compiled, 12 + 4 bytes - -channelreadch - - - -in "comphelp.red"$ -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -0 - -nil -+++++ global !*raise converted to fluid -+++ job compiled, 113 + 148 bytes - -job - -nil - -nil - -nil -+++ rdch compiled, 3 + 8 bytes - -rdch -+++ rdch!* compiled, 3 + 12 bytes - -rdch!* -+++ rdchr0 compiled, 54 + 64 bytes - -rdchr0 -+++ unrdch compiled, 3 + 12 bytes - -unrdch -+++ myskip compiled, 5 + 8 bytes - -myskip -+++ myskipl compiled, 9 + 8 bytes - -myskipl -+++ myskipstring compiled, 41 + 24 bytes - -myskipstring - -nil - -lower -+++ mytoken compiled, 83 + 44 bytes - -mytoken -+++ mystring compiled, 28 + 16 bytes - -mystring -+++ mystring2 compiled, 14 + 12 bytes - -mystring2 -+++ mystring2!] compiled, 14 + 12 bytes - -mystring2!] -+++ mystring_nodename compiled, 41 + 40 bytes - -mystring_nodename -+++ mystring3 compiled, 23 + 16 bytes - -mystring3 -+++ raisestring compiled, 67 + 20 bytes - -raisestring -+++ lowerstring compiled, 75 + 20 bytes - -lowerstring -+++ mycompress compiled, 12 + 8 bytes - -mycompress -+++ mainloop compiled, 200 + 156 bytes - -mainloop - -*** local variable u in procedure include not used -+++ include compiled, 129 + 100 bytes - -include - -include - -include - -null - -null -+++ print_indent compiled, 21 + 20 bytes - -print_indent - -nil - -0 - -type - -seq - -lab - -count - -name -+++ reset compiled, 51 + 40 bytes - -reset -+++ sectappend compiled, 11 + 8 bytes - -sectappend -+++ section compiled, 10 + 20 bytes - -section -+++ close_section compiled, 39 + 24 bytes - -close_section -+++ close_section1 compiled, 40 + 40 bytes - -close_section1 -+++ write_sections compiled, 15 + 12 bytes - -write_sections -+++ write_section compiled, 67 + 52 bytes - -write_section -+++ make_dir_entry compiled, 8 + 8 bytes - -make_dir_entry -+++ help_gensym compiled, 10 + 12 bytes - -help_gensym -+++ open_section compiled, 172 + 112 bytes - -open_section - -section - -section - -section - -*** local variable u in procedure beg not used -+++ beg compiled, 87 + 68 bytes - -beg - -beg - -*** local variable u in procedure mmain not used -+++ mmain compiled as link to mainloop - -mmain - -mmain - -nil -+++ clean_name compiled, 27 + 16 bytes - -clean_name - -(((!,) . comma_sign) ((!.) . dot_sign) ((!;) . semicolon_sign) ((!%) . -percent_sign) ((!$) . dollar_sign) ((!: !=) . assign_sign) ((!=) . equal_sign) ( -(!+) . plus_sign) ((!-) . minus_sign) ((!*) . times_sign) ((!/) . slash_sign) (( -!* !*) . power_sign) ((!$ !> != !$) . geq_sign) ((!> !=) . geq_sign) ((!>) . -greater_sign) ((!$ !< != !$) . leq_sign) ((!< !=) . leq_sign) ((!<) . less_sign) -((!< !<) . block)) -+++ make_label compiled, 64 + 40 bytes - -make_label -+++ get_label compiled, 8 + 8 bytes - -get_label -+++ patch_ compiled, 29 + 16 bytes - -patch_ -+++ get_label1 compiled, 32 + 40 bytes - -get_label1 -+++ get_label2 compiled, 103 + 56 bytes - -get_label2 -+++ update_labels compiled, 47 + 36 bytes - -update_labels -+++ node compiled, 197 + 136 bytes - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node -+++ part compiled, 63 + 68 bytes - -part -+++ par_heading compiled, 26 + 16 bytes - -par_heading - -*** local variable type in procedure vpart not used -+++ vpart compiled, 13 + 32 bytes - -vpart -+++ vpart0 compiled, 81 + 72 bytes - -vpart0 -+++ compareahead compiled, 6 + 8 bytes - -compareahead -+++ compareahead1 compiled, 28 + 12 bytes - -compareahead1 -+++ look_ahead_suctx941k0ih compiled, 11 + 16 bytes - -look_ahead - -*** local variable type in procedure examples_part not used -+++ examples_part compiled, 381 + 204 bytes - -examples_part -+++ non_verb_block compiled, 15 + 36 bytes - -non_verb_block -+++ make_multi_out compiled, 121 + 60 bytes - -make_multi_out -+++ cut_lines compiled, 37 + 8 bytes - -cut_lines -+++ matchleft compiled, 22 + 16 bytes - -matchleft -+++ matcharb compiled, 12 + 8 bytes - -matcharb -+++ read_one_line compiled, 15 + 12 bytes - -read_one_line - -part - -part - -part - -part - -part - -part - -part - -part - -*** local variable type in procedure do-itemize not used -+++ do!-itemize compiled, 6 + 20 bytes - -do!-itemize - -do!-itemize -+++ context_error compiled, 11 + 20 bytes - -context_error - -*** local variable u in procedure verb not used -+++ verb compiled, 12 + 24 bytes - -verb - -verb - -*** local variable u in procedure ldots not used -+++ ldots compiled, 3 + 12 bytes - -ldots - -ldots - -nil - -*** local variable u in procedure cdots not used -+++ cdots compiled, 3 + 12 bytes - -cdots - -cdots - -nil - -*** local variable u in procedure cdot not used -+++ cdot compiled, 3 + 12 bytes - -cdot - -cdot - -nil - -*** local variable u in procedure write_pi not used -+++ write_pi compiled, 3 + 12 bytes - -write_pi - -write_pi - -nil - -*** local variable u in procedure emphase not used -+++ emphase compiled, 3 + 12 bytes - -emphase - -emphase - -*** local variable u in procedure meta not used -+++ meta compiled, 18 + 20 bytes - -meta - -meta - -*** local variable u in procedure italic not used -+++ italic compiled, 8 + 24 bytes - -italic - -*** local variable u in procedure switchitalic not used -+++ switchitalic compiled, 1 + 4 bytes - -switchitalic - -italic - -italic - -italic - -*** local variable u in procedure nameref not used -+++ nameref compiled, 3 + 12 bytes - -nameref - -nameref - -*** local variable u in procedure ref not used -+++ ref compiled, 3 + 12 bytes - -ref - -ref -+++ see compiled, 4 + 12 bytes - -see - -see - -*** local variable u in procedure myname not used -+++ myname compiled, 3 + 12 bytes - -myname - -myname - -*** local variable u in procedure myindex not used -+++ myindex compiled, 5 + 20 bytes - -myindex - -myindex - -*** local variable u in procedure nameindex not used -+++ nameindex compiled, 10 + 24 bytes - -nameindex - -nameindex - -*** local variable u in procedure reduce not used -+++ reduce compiled, 3 + 12 bytes - -reduce - -reduce - -nil - -*** local variable u in procedure rept not used -+++ rept compiled, 3 + 12 bytes - -rept - -rept - -nil - -*** local variable u in procedure optional not used -+++ optional compiled, 3 + 12 bytes - -optional - -optional - -nil - -*** local variable u in procedure myexp not used -+++ myexp compiled, 5 + 16 bytes - -myexp - -myexp - -*** local variable u in procedure formula not used -+++ formula compiled, 3 + 12 bytes - -formula - -formula - -formula - -*** local variable u in procedure rfrac not used -+++ rfrac compiled, 8 + 24 bytes - -rfrac - -rfrac - -*** local variable u in procedure item not used -+++ item compiled, 14 + 32 bytes - -item - -item - -*** local variable u in procedure texonly1 not used -+++ texonly1 compiled, 48 + 44 bytes - -texonly1 - -texonly1 - -*** local variable u in procedure texonly2 not used -+++ texonly2 compiled, 67 + 68 bytes - -texonly2 - -texonly2 - -*** local variable u in procedure infoonly not used -+++ infoonly compiled, 6 + 12 bytes - -infoonly - -infoonly -+++ reporttopic compiled, 12 + 20 bytes - -reporttopic -+++ substipq compiled, 32 + 12 bytes - -substipq - -nil - - -in "helphtml.red"$ -nil - -nil - -t - -t - -"R" - -"TT" - -nil -+++ rootname compiled, 13 + 16 bytes - -rootname -+++ dest_directory compiled, 13 + 16 bytes - -dest_directory - -nil - -0 -+++ reset_html compiled, 8 + 24 bytes - -reset_html -+++ html_open compiled, 15 + 20 bytes - -html_open -+++ html_close compiled, 17 + 24 bytes - -html_close - -*** local variable u in procedure open_current_base_dir not used -+++ open_current_base_dir compiled, 1 + 4 bytes - -open_current_base_dir -+++ close_current_base_dir compiled, 1 + 4 bytes - -close_current_base_dir -+++ make_html_file_name compiled, 74 + 52 bytes - -make_html_file_name -+++ open_node_file compiled, 73 + 64 bytes - -open_node_file -+++ close_node_file compiled, 11 + 12 bytes - -close_node_file -+++ node_file_name compiled, 2 + 8 bytes - -node_file_name -+++ initoutput compiled, 1 + 4 bytes - -initoutput -+++ endoutput compiled, 1 + 4 bytes - -endoutput -+++ verbatim compiled, 3 + 8 bytes - -verbatim -+++ newfont compiled, 10 + 16 bytes - -newfont -+++ fontoff compiled, 5 + 12 bytes - -fontoff -+++ fonton compiled, 5 + 12 bytes - -fonton -+++ myprin2 compiled, 6 + 16 bytes - -myprin2 - -(!< !> !" !&) - -(!< !> !" !&) -+++ myprin2_protected compiled, 14 + 16 bytes - -myprin2_protected - -nil -+++ emit_start_verbatim compiled, 7 + 20 bytes - -emit_start_verbatim -+++ emit_end_verbatim compiled, 7 + 24 bytes - -emit_end_verbatim -+++ verbprin2 compiled, 55 + 56 bytes - -verbprin2 -+++ myterpri compiled, 3 + 12 bytes - -myterpri -+++ number4out compiled, 24 + 32 bytes - -number4out -+++ textout compiled, 149 + 84 bytes - -textout - -+++ par_heading redefined -+++ par_heading compiled, 26 + 24 bytes - -par_heading -+++ base_new_dir compiled, 6 + 16 bytes - -base_new_dir -+++ emit_dir_new compiled, 1 + 4 bytes - -emit_dir_new -+++ emit_dir_key compiled as link to emit_node_key - -emit_dir_key -+++ emit_dir_separator compiled as link to emit_node_separator - -emit_dir_separator -+++ emit_dir_label compiled as link to emit_node_label - -emit_dir_label -+++ emit_dir_title compiled, 6 + 12 bytes - -emit_dir_title -+++ emit_dir_browse compiled as link to emit_node_browse - -emit_dir_browse -+++ emit_node_separator compiled, 15 + 40 bytes - -emit_node_separator -+++ set_tab compiled, 1 + 4 bytes - -set_tab -+++ release_tab compiled, 1 + 4 bytes - -release_tab -+++ textout_name compiled, 26 + 16 bytes - -textout_name -+++ textout2 compiled, 29 + 16 bytes - -textout2 -+++ printem compiled, 18 + 24 bytes - -printem - -+++ printem redefined -+++ printem compiled, 19 + 28 bytes - -printem -+++ printref compiled, 234 + 124 bytes - -printref -+++ printnameref compiled as link to printref - -printnameref - -nil -+++ emit_node_keys compiled, 28 + 24 bytes - -emit_node_keys -+++ emit_node_key compiled as link to emit_hidden_node_key - -emit_node_key -+++ emit_hidden_node_key compiled, 33 + 16 bytes - -emit_hidden_node_key -+++ emit_node_label compiled, 24 + 40 bytes - -emit_node_label - -*** local variable dummy in procedure emit_node_title not used - -*** local variable type in procedure emit_node_title not used -+++ emit_node_title compiled, 33 + 52 bytes - -emit_node_title -+++ emit_node_browse compiled, 11 + 20 bytes - -emit_node_browse -+++ print_bold compiled, 19 + 28 bytes - -print_bold -+++ emit_dir_header compiled, 8 + 28 bytes - -emit_dir_header -+++ emit_dir_entry compiled, 66 + 68 bytes - -emit_dir_entry -+++ print_newline compiled, 13 + 32 bytes - -print_newline -+++ second_newline compiled, 4 + 12 bytes - -second_newline -+++ print_tab compiled, 4 + 16 bytes - -print_tab -+++ html_indexfile compiled, 327 + 124 bytes - -html_indexfile -+++ sort_term compiled, 60 + 12 bytes - -sort_term -+++ html_indexfile_sort compiled, 4 + 8 bytes - -html_indexfile_sort -+++ html_indexfile_sort1 compiled, 27 + 12 bytes - -html_indexfile_sort1 -+++ html_indexfile_subsetp compiled, 18 + 4 bytes - -html_indexfile_subsetp -+++ lisp_indexfile compiled, 329 + 136 bytes - -lisp_indexfile -+++ printstruct compiled, 7 + 16 bytes - -printstruct -+++ printstruct1 compiled, 58 + 16 bytes - -printstruct1 - -nil - - -in "minitex.red"$ -nil - -nil - -nil - -!\ - -!^ - -!_ - -2 - -3 - -4 -+++ mintex_convert0 compiled, 38 + 12 bytes - -mintex_convert0 -+++ mintex_convert compiled as link to mintex_convert0 - -mintex_convert -+++ minitex compiled, 102 + 40 bytes - -minitex -+++ minitex_pop_char compiled, 11 + 8 bytes - -minitex_pop_char -+++ minitex_skip compiled, 11 + 8 bytes - -minitex_skip -+++ minitex_next_char compiled, 6 + 8 bytes - -minitex_next_char -+++ struct compiled, 9 + 8 bytes - -struct -+++ make_chain compiled, 317 + 120 bytes - -make_chain - -*** local variable font in procedure make_char not used - -*** local variable cs in procedure make_char not used -+++ make_char compiled, 23 + 48 bytes - -make_char -+++ make_frac compiled, 211 + 76 bytes - -make_frac - -*** local variable y1 in procedure make_line not used -+++ make_line compiled, 22 + 32 bytes - -make_line -+++ make_multi compiled, 63 + 60 bytes - -make_multi - -*** local variable font in procedure make_end not used -+++ make_end compiled, 4 + 16 bytes - -make_end - -nil - -(chain 0 0 0) - -nil - -*** local variable term in procedure make_escape not used -+++ make_escape compiled, 77 + 72 bytes - -make_escape -+++ my_compare compiled, 23 + 16 bytes - -my_compare -+++ minitex_collect compiled, 8 + 12 bytes - -minitex_collect -+++ minitex_do compiled, 25 + 20 bytes - -minitex_do - -minitex_chain -+++ minitex_chain compiled, 37 + 24 bytes - -minitex_chain - -minitex_char - -*** local variable font in procedure minitex_char not used -+++ minitex_char compiled, 23 + 24 bytes - -minitex_char - -minitex_line - -*** local variable font in procedure minitex_line not used -+++ minitex_line compiled, 38 + 28 bytes - -minitex_line -+++ minitex_putchar compiled, 31 + 24 bytes - -minitex_putchar - -nil - - - -dir_src := "../doc/help/"; -"../doc/help/" - - -% dir_src := "~/reduce/doc/help/"; - -on backtrace; -nil - - - -reset_html(); -nil - - - -job(bldmsg("%w.tex",package), "null.fil"); -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file ../doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file ../doc/help/concept.tex - ---- input file ../doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file ../doc/help/variable.tex - ---- input file ../doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file ../doc/help/syntax.tex - ---- input file ../doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file ../doc/help/arith.tex - ---- input file ../doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file ../doc/help/boolean.tex - ---- input file ../doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file ../doc/help/command.tex - ---- input file ../doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file ../doc/help/algebra.tex - ---- input file ../doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file ../doc/help/declare.tex - ---- input file ../doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file ../doc/help/io.tex - ---- input file ../doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file ../doc/help/elemfn.tex - ---- input file ../doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file ../doc/help/switch.tex - ---- input file ../doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file ../doc/help/matrix.tex - ---- input file ../doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file ../doc/help/pk-groeb.tex - ---- input file ../doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file ../doc/help/hephys.tex - ---- input file ../doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file ../doc/help/pk-numer.tex - ---- input file ../doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file ../doc/help/pk-roots.tex - ---- input file ../doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file ../doc/help/pk-specf.tex - ---- input file ../doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file ../doc/help/taylor.tex - ---- input file ../doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file ../doc/help/pk-gplot.tex - ---- input file ../doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file ../doc/help/linalg.tex - ---- input file ../doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file ../doc/help/normform.tex - ---- input file ../doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file ../doc/help/pk-misc.tex - ---- input file ../doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file ../doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -reset_html(); -nil - - - -job(bldmsg("%w.tex",package), "null.fil"); - ------- updating node labels ----- ------- updating done ------------ -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file ../doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file ../doc/help/concept.tex - ---- input file ../doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file ../doc/help/variable.tex - ---- input file ../doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file ../doc/help/syntax.tex - ---- input file ../doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file ../doc/help/arith.tex - ---- input file ../doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file ../doc/help/boolean.tex - ---- input file ../doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file ../doc/help/command.tex - ---- input file ../doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file ../doc/help/algebra.tex - ---- input file ../doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file ../doc/help/declare.tex - ---- input file ../doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file ../doc/help/io.tex - ---- input file ../doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file ../doc/help/elemfn.tex - ---- input file ../doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file ../doc/help/switch.tex - ---- input file ../doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file ../doc/help/matrix.tex - ---- input file ../doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - ######## reference to (l e x) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (k e x) not found, - ######## reference to (l e x) not found, - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file ../doc/help/pk-groeb.tex - ---- input file ../doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file ../doc/help/hephys.tex - ---- input file ../doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file ../doc/help/pk-numer.tex - ---- input file ../doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file ../doc/help/pk-roots.tex - ---- input file ../doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file ../doc/help/pk-specf.tex - ---- input file ../doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file ../doc/help/taylor.tex - ---- input file ../doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file ../doc/help/pk-gplot.tex - ---- input file ../doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file ../doc/help/linalg.tex - ---- input file ../doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file ../doc/help/normform.tex - ---- input file ../doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file ../doc/help/pk-misc.tex - ---- input file ../doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file ../doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -html_indexfile();..... compiling html index file - -nil - - - -LISP_indexfile();..... compiling independent index file - -nil - - - -bye; - -End of Lisp run after 24.73+0.68 seconds - -+++ Transcript closed at end of run +++ DELETED r38/help/mkhtml1.log Index: r38/help/mkhtml1.log ================================================================== --- r38/help/mkhtml1.log +++ /dev/null @@ -1,2680 +0,0 @@ -+++ Transcript to mkhtml1.log started at Sat Aug 07 16:05:54 2004 +++ -Codemist Standard Lisp 6.00 for Windows: Aug 5 2004 -Created: Thu Aug 05 11:50:03 2004 - -REDUCE 3.8, 15-Apr-04 ... -Memory allocation: 54522624 bytes - -+++ About to read file "mkhtml1.red" - -% -% This file runs the "*.tex" to "redhelp.html" conversion code. As -% well as providing the top level direction to the process it patches up -% for at least some of the places where the conversion code had been -% written in a manner not strongly related to the portability objectives of -% Standard Lisp... -% - -symbolic; -nil - - -off echo; -nil - - -on backtrace; -nil - - -on comp; -nil - - -!*windows := t; -t - - - -fluid '(package); -nil - - - -package := 'redhelp; -redhelp - - - -symbolic procedure deletip(a, b); - delete(a, b);+++ deletip compiled as link to delete - -deletip - - - -symbolic procedure inf x; - char!-code x;+++ inf compiled as link to char-code - -inf - - - -symbolic procedure channellinelength(f, l); - begin - f := wrs f; - l := linelength l; - wrs f; - return l - end;+++ channellinelength compiled, 12 + 4 bytes - -channellinelength - - - -symbolic procedure channelprin2(f, x); - begin - f := wrs f; - prin2 x; - wrs f; - return x - end;+++ channelprin2 compiled, 10 + 8 bytes - -channelprin2 - - - -symbolic procedure channelprin2t(f, x); - begin - f := wrs f; - prin2t x; - wrs f; - return x - end;+++ channelprin2t compiled, 10 + 8 bytes - -channelprin2t - - - -symbolic macro procedure channelprintf u; - begin - scalar g; - g := gensym(); - return list('prog, list g, - list('setq, g, list('wrs, cadr u)), - 'printf . cddr u, - list('wrs, g)) - end;+++ channelprintf_76z7r3p3pl4b compiled, 33 + 24 bytes - -channelprintf - - - -symbolic procedure channelterpri f; - begin - f := wrs f; - terpri(); - wrs f; - end;+++ channelterpri compiled, 10 + 4 bytes - -channelterpri - - - -symbolic procedure channelreadch f; - begin - scalar c; - f := rds f; - c := readch(); - rds f; - return c - end;+++ channelreadch compiled, 12 + 4 bytes - -channelreadch - - - -in "comphelp.red"$ -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -nil - -0 - -nil -+++++ global !*raise converted to fluid -+++ job compiled, 113 + 148 bytes - -job - -nil - -nil - -nil -+++ rdch compiled, 3 + 8 bytes - -rdch -+++ rdch!* compiled, 3 + 12 bytes - -rdch!* -+++ rdchr0 compiled, 54 + 64 bytes - -rdchr0 -+++ unrdch compiled, 3 + 12 bytes - -unrdch -+++ myskip compiled, 5 + 8 bytes - -myskip -+++ myskipl compiled, 9 + 8 bytes - -myskipl -+++ myskipstring compiled, 41 + 24 bytes - -myskipstring - -nil - -lower -+++ mytoken compiled, 83 + 44 bytes - -mytoken -+++ mystring compiled, 28 + 16 bytes - -mystring -+++ mystring2 compiled, 14 + 12 bytes - -mystring2 -+++ mystring2!] compiled, 14 + 12 bytes - -mystring2!] -+++ mystring_nodename compiled, 41 + 40 bytes - -mystring_nodename -+++ mystring3 compiled, 23 + 16 bytes - -mystring3 -+++ raisestring compiled, 67 + 20 bytes - -raisestring -+++ lowerstring compiled, 75 + 20 bytes - -lowerstring -+++ mycompress compiled, 12 + 8 bytes - -mycompress -+++ mainloop compiled, 200 + 156 bytes - -mainloop - -*** local variable u in procedure include not used -+++ include compiled, 129 + 100 bytes - -include - -include - -include - -null - -null -+++ print_indent compiled, 21 + 20 bytes - -print_indent - -nil - -0 - -type - -seq - -lab - -count - -name -+++ reset compiled, 51 + 40 bytes - -reset -+++ sectappend compiled, 11 + 8 bytes - -sectappend -+++ section compiled, 10 + 20 bytes - -section -+++ close_section compiled, 39 + 24 bytes - -close_section -+++ close_section1 compiled, 40 + 40 bytes - -close_section1 -+++ write_sections compiled, 15 + 12 bytes - -write_sections -+++ write_section compiled, 67 + 52 bytes - -write_section -+++ make_dir_entry compiled, 8 + 8 bytes - -make_dir_entry -+++ help_gensym compiled, 10 + 12 bytes - -help_gensym -+++ open_section compiled, 172 + 112 bytes - -open_section - -section - -section - -section - -*** local variable u in procedure beg not used -+++ beg compiled, 87 + 68 bytes - -beg - -beg - -*** local variable u in procedure mmain not used -+++ mmain compiled as link to mainloop - -mmain - -mmain - -nil -+++ clean_name compiled, 27 + 16 bytes - -clean_name - -(((!,) . comma_sign) ((!.) . dot_sign) ((!;) . semicolon_sign) ((!%) . -percent_sign) ((!$) . dollar_sign) ((!: !=) . assign_sign) ((!=) . equal_sign) ( -(!+) . plus_sign) ((!-) . minus_sign) ((!*) . times_sign) ((!/) . slash_sign) (( -!* !*) . power_sign) ((!$ !> != !$) . geq_sign) ((!> !=) . geq_sign) ((!>) . -greater_sign) ((!$ !< != !$) . leq_sign) ((!< !=) . leq_sign) ((!<) . less_sign) -((!< !<) . block)) -+++ make_label compiled, 64 + 40 bytes - -make_label -+++ get_label compiled, 8 + 8 bytes - -get_label -+++ patch_ compiled, 29 + 16 bytes - -patch_ -+++ get_label1 compiled, 32 + 40 bytes - -get_label1 -+++ get_label2 compiled, 103 + 56 bytes - -get_label2 -+++ update_labels compiled, 47 + 36 bytes - -update_labels -+++ node compiled, 197 + 136 bytes - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node - -node -+++ part compiled, 63 + 68 bytes - -part -+++ par_heading compiled, 26 + 16 bytes - -par_heading - -*** local variable type in procedure vpart not used -+++ vpart compiled, 13 + 32 bytes - -vpart -+++ vpart0 compiled, 81 + 72 bytes - -vpart0 -+++ compareahead compiled, 6 + 8 bytes - -compareahead -+++ compareahead1 compiled, 28 + 12 bytes - -compareahead1 -+++ look_ahead_suctx941k0ih compiled, 11 + 16 bytes - -look_ahead - -*** local variable type in procedure examples_part not used -+++ examples_part compiled, 381 + 204 bytes - -examples_part -+++ non_verb_block compiled, 15 + 36 bytes - -non_verb_block -+++ make_multi_out compiled, 121 + 60 bytes - -make_multi_out -+++ cut_lines compiled, 37 + 8 bytes - -cut_lines -+++ matchleft compiled, 22 + 16 bytes - -matchleft -+++ matcharb compiled, 12 + 8 bytes - -matcharb -+++ read_one_line compiled, 15 + 12 bytes - -read_one_line - -part - -part - -part - -part - -part - -part - -part - -part - -*** local variable type in procedure do-itemize not used -+++ do!-itemize compiled, 6 + 20 bytes - -do!-itemize - -do!-itemize -+++ context_error compiled, 11 + 20 bytes - -context_error - -*** local variable u in procedure verb not used -+++ verb compiled, 12 + 24 bytes - -verb - -verb - -*** local variable u in procedure ldots not used -+++ ldots compiled, 3 + 12 bytes - -ldots - -ldots - -nil - -*** local variable u in procedure cdots not used -+++ cdots compiled, 3 + 12 bytes - -cdots - -cdots - -nil - -*** local variable u in procedure cdot not used -+++ cdot compiled, 3 + 12 bytes - -cdot - -cdot - -nil - -*** local variable u in procedure write_pi not used -+++ write_pi compiled, 3 + 12 bytes - -write_pi - -write_pi - -nil - -*** local variable u in procedure emphase not used -+++ emphase compiled, 3 + 12 bytes - -emphase - -emphase - -*** local variable u in procedure meta not used -+++ meta compiled, 18 + 20 bytes - -meta - -meta - -*** local variable u in procedure italic not used -+++ italic compiled, 8 + 24 bytes - -italic - -*** local variable u in procedure switchitalic not used -+++ switchitalic compiled, 1 + 4 bytes - -switchitalic - -italic - -italic - -italic - -*** local variable u in procedure nameref not used -+++ nameref compiled, 3 + 12 bytes - -nameref - -nameref - -*** local variable u in procedure ref not used -+++ ref compiled, 3 + 12 bytes - -ref - -ref -+++ see compiled, 4 + 12 bytes - -see - -see - -*** local variable u in procedure myname not used -+++ myname compiled, 3 + 12 bytes - -myname - -myname - -*** local variable u in procedure myindex not used -+++ myindex compiled, 5 + 20 bytes - -myindex - -myindex - -*** local variable u in procedure nameindex not used -+++ nameindex compiled, 10 + 24 bytes - -nameindex - -nameindex - -*** local variable u in procedure reduce not used -+++ reduce compiled, 3 + 12 bytes - -reduce - -reduce - -nil - -*** local variable u in procedure rept not used -+++ rept compiled, 3 + 12 bytes - -rept - -rept - -nil - -*** local variable u in procedure optional not used -+++ optional compiled, 3 + 12 bytes - -optional - -optional - -nil - -*** local variable u in procedure myexp not used -+++ myexp compiled, 5 + 16 bytes - -myexp - -myexp - -*** local variable u in procedure formula not used -+++ formula compiled, 3 + 12 bytes - -formula - -formula - -formula - -*** local variable u in procedure rfrac not used -+++ rfrac compiled, 8 + 24 bytes - -rfrac - -rfrac - -*** local variable u in procedure item not used -+++ item compiled, 14 + 32 bytes - -item - -item - -*** local variable u in procedure texonly1 not used -+++ texonly1 compiled, 48 + 44 bytes - -texonly1 - -texonly1 - -*** local variable u in procedure texonly2 not used -+++ texonly2 compiled, 67 + 68 bytes - -texonly2 - -texonly2 - -*** local variable u in procedure infoonly not used -+++ infoonly compiled, 6 + 12 bytes - -infoonly - -infoonly -+++ reporttopic compiled, 12 + 20 bytes - -reporttopic -+++ substipq compiled, 32 + 12 bytes - -substipq - -nil - - -in "helphtml1.red"$ -nil - -nil - -t - -t - -"R" - -"TT" - -nil -+++ rootname compiled, 13 + 16 bytes - -rootname -+++ dest_directory compiled, 13 + 16 bytes - -dest_directory - -nil - -0 -+++ reset_html compiled, 8 + 24 bytes - -reset_html -+++ html_open compiled, 15 + 20 bytes - -html_open -+++ html_close compiled, 17 + 24 bytes - -html_close - -*** local variable u in procedure open_current_base_dir not used -+++ open_current_base_dir compiled, 1 + 4 bytes - -open_current_base_dir -+++ close_current_base_dir compiled, 1 + 4 bytes - -close_current_base_dir -+++ make_html_file_name compiled, 72 + 56 bytes - -make_html_file_name -+++ open_node_file compiled, 92 + 80 bytes - -open_node_file -+++ close_node_file compiled, 1 + 4 bytes - -close_node_file -+++ node_file_name compiled, 2 + 8 bytes - -node_file_name -+++ initoutput compiled, 1 + 4 bytes - -initoutput -+++ endoutput compiled, 1 + 4 bytes - -endoutput -+++ verbatim compiled, 3 + 8 bytes - -verbatim -+++ newfont compiled, 10 + 16 bytes - -newfont -+++ fontoff compiled, 5 + 12 bytes - -fontoff -+++ fonton compiled, 5 + 12 bytes - -fonton -+++ myprin2 compiled, 6 + 16 bytes - -myprin2 - -(!< !> !" !&) - -(!< !> !" !&) -+++ myprin2_protected compiled, 14 + 16 bytes - -myprin2_protected - -nil -+++ emit_start_verbatim compiled, 7 + 20 bytes - -emit_start_verbatim -+++ emit_end_verbatim compiled, 7 + 24 bytes - -emit_end_verbatim -+++ verbprin2 compiled, 55 + 56 bytes - -verbprin2 -+++ myterpri compiled, 3 + 12 bytes - -myterpri -+++ number4out compiled, 24 + 32 bytes - -number4out -+++ textout compiled, 149 + 84 bytes - -textout - -+++ par_heading redefined -+++ par_heading compiled, 26 + 24 bytes - -par_heading -+++ base_new_dir compiled, 6 + 16 bytes - -base_new_dir -+++ emit_dir_new compiled, 1 + 4 bytes - -emit_dir_new -+++ emit_dir_key compiled as link to emit_node_key - -emit_dir_key -+++ emit_dir_separator compiled as link to emit_node_separator - -emit_dir_separator -+++ emit_dir_label compiled as link to emit_node_label - -emit_dir_label -+++ emit_dir_title compiled, 6 + 12 bytes - -emit_dir_title -+++ emit_dir_browse compiled as link to emit_node_browse - -emit_dir_browse -+++ emit_node_separator compiled, 15 + 40 bytes - -emit_node_separator -+++ set_tab compiled, 1 + 4 bytes - -set_tab -+++ release_tab compiled, 1 + 4 bytes - -release_tab -+++ textout_name compiled, 26 + 16 bytes - -textout_name -+++ textout2 compiled, 29 + 16 bytes - -textout2 -+++ printem compiled, 18 + 24 bytes - -printem - -+++ printem redefined -+++ printem compiled, 19 + 28 bytes - -printem -+++ printref compiled, 235 + 128 bytes - -printref -+++ printnameref compiled as link to printref - -printnameref - -nil -+++ emit_node_keys compiled, 28 + 24 bytes - -emit_node_keys -+++ emit_node_key compiled as link to emit_hidden_node_key - -emit_node_key -+++ emit_hidden_node_key compiled, 33 + 16 bytes - -emit_hidden_node_key -+++ remove_html compiled, 13 + 4 bytes - -remove_html -+++ emit_node_label compiled, 25 + 40 bytes - -emit_node_label - -*** local variable dummy in procedure emit_node_title not used - -*** local variable type in procedure emit_node_title not used -+++ emit_node_title compiled, 49 + 56 bytes - -emit_node_title -+++ emit_node_browse compiled, 11 + 20 bytes - -emit_node_browse -+++ print_bold compiled, 19 + 28 bytes - -print_bold -+++ emit_dir_header compiled, 8 + 28 bytes - -emit_dir_header -+++ dig4 compiled, 14 + 16 bytes - -dig4 -+++ refout compiled, 39 + 32 bytes - -refout -+++ emit_dir_entry compiled, 66 + 68 bytes - -emit_dir_entry -+++ print_newline compiled, 13 + 32 bytes - -print_newline -+++ second_newline compiled, 4 + 12 bytes - -second_newline -+++ print_tab compiled, 4 + 16 bytes - -print_tab -+++ html_indexfile compiled, 353 + 144 bytes - -html_indexfile -+++ sort_term compiled, 60 + 12 bytes - -sort_term -+++ html_indexfile_sort compiled, 4 + 8 bytes - -html_indexfile_sort -+++ html_indexfile_sort1 compiled, 27 + 12 bytes - -html_indexfile_sort1 -+++ html_indexfile_subsetp compiled, 18 + 4 bytes - -html_indexfile_subsetp -+++ lisp_indexfile compiled, 329 + 136 bytes - -lisp_indexfile -+++ printstruct compiled, 7 + 16 bytes - -printstruct -+++ printstruct1 compiled, 58 + 16 bytes - -printstruct1 - -nil - - -in "minitex.red"$ -nil - -nil - -nil - -!\ - -!^ - -!_ - -2 - -3 - -4 -+++ mintex_convert0 compiled, 38 + 12 bytes - -mintex_convert0 -+++ mintex_convert compiled as link to mintex_convert0 - -mintex_convert -+++ minitex compiled, 102 + 40 bytes - -minitex -+++ minitex_pop_char compiled, 11 + 8 bytes - -minitex_pop_char -+++ minitex_skip compiled, 11 + 8 bytes - -minitex_skip -+++ minitex_next_char compiled, 6 + 8 bytes - -minitex_next_char -+++ struct compiled, 9 + 8 bytes - -struct -+++ make_chain compiled, 317 + 120 bytes - -make_chain - -*** local variable font in procedure make_char not used - -*** local variable cs in procedure make_char not used -+++ make_char compiled, 23 + 48 bytes - -make_char -+++ make_frac compiled, 211 + 76 bytes - -make_frac - -*** local variable y1 in procedure make_line not used -+++ make_line compiled, 22 + 32 bytes - -make_line -+++ make_multi compiled, 63 + 60 bytes - -make_multi - -*** local variable font in procedure make_end not used -+++ make_end compiled, 4 + 16 bytes - -make_end - -nil - -(chain 0 0 0) - -nil - -*** local variable term in procedure make_escape not used -+++ make_escape compiled, 77 + 72 bytes - -make_escape -+++ my_compare compiled, 23 + 16 bytes - -my_compare -+++ minitex_collect compiled, 8 + 12 bytes - -minitex_collect -+++ minitex_do compiled, 25 + 20 bytes - -minitex_do - -minitex_chain -+++ minitex_chain compiled, 37 + 24 bytes - -minitex_chain - -minitex_char - -*** local variable font in procedure minitex_char not used -+++ minitex_char compiled, 23 + 24 bytes - -minitex_char - -minitex_line - -*** local variable font in procedure minitex_line not used -+++ minitex_line compiled, 38 + 28 bytes - -minitex_line -+++ minitex_putchar compiled, 31 + 24 bytes - -minitex_putchar - -nil - - - -dir_src := "../doc/help/"; -"../doc/help/" - - -% dir_src := "~/reduce/doc/help/"; - -on backtrace; -nil - - - -reset_html(); -nil - - - -job(bldmsg("%w.tex",package), "null.fil"); -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file ../doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file ../doc/help/concept.tex - ---- input file ../doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file ../doc/help/variable.tex - ---- input file ../doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file ../doc/help/syntax.tex - ---- input file ../doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file ../doc/help/arith.tex - ---- input file ../doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file ../doc/help/boolean.tex - ---- input file ../doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file ../doc/help/command.tex - ---- input file ../doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file ../doc/help/algebra.tex - ---- input file ../doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file ../doc/help/declare.tex - ---- input file ../doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file ../doc/help/io.tex - ---- input file ../doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file ../doc/help/elemfn.tex - ---- input file ../doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file ../doc/help/switch.tex - ---- input file ../doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file ../doc/help/matrix.tex - ---- input file ../doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file ../doc/help/pk-groeb.tex - ---- input file ../doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file ../doc/help/hephys.tex - ---- input file ../doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file ../doc/help/pk-numer.tex - ---- input file ../doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file ../doc/help/pk-roots.tex - ---- input file ../doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file ../doc/help/pk-specf.tex - ---- input file ../doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file ../doc/help/taylor.tex - ---- input file ../doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file ../doc/help/pk-gplot.tex - ---- input file ../doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file ../doc/help/linalg.tex - ---- input file ../doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file ../doc/help/normform.tex - ---- input file ../doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file ../doc/help/pk-misc.tex - ---- input file ../doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file ../doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -reset_html(); -nil - - - -job(bldmsg("%w.tex",package), "null.fil"); - ------- updating node labels ----- ------- updating done ------------ -**** unknown token: documentclass -**** unknown token: usepackage -**** unknown token: usepackage - ---- input file ../doc/help/concept.tex -section 2 g2 Concepts - type IDENTIFIER 1 - type KERNEL 2 - type STRING 3 - ---- return from file ../doc/help/concept.tex - ---- input file ../doc/help/variable.tex - section end: 4 -section 3 g3 Variables - variable assumptions 5 - variable CARD\_NO 6 - constant E 7 - variable EVAL\_MODE 8 - variable FORT\_WIDTH 9 - variable HIGH\_POW 10 - constant I 11 - constant INFINITY 12 - variable LOW\_POW 13 - constant NIL 14 - constant PI 15 - variable requirements 16 - variable ROOT\_MULTIPLICITIES 17 - constant T 18 - ---- return from file ../doc/help/variable.tex - ---- input file ../doc/help/syntax.tex - section end: 19 -section 4 g4 Syntax - command semicolon 20 - command dollar 21 - command percent 22 - operator dot 23 - operator assign 24 - operator equalsign 25 - operator replace 26 - operator plussign 27 - operator minussign 28 - operator asterisk 29 - operator slash 30 - operator power 31 - operator caret 32 - operator geqsign 33 - operator greater 34 - operator leqsign 35 - operator less 36 - operator tilde 37 - command group 38 - operator AND 39 - command BEGIN 40 - command block 41 - command COMMENT 42 - operator CONS 43 - command END 44 - type EQUATION 45 - operator FIRST 46 - command FOR 47 - command FOREACH 48 - operator GEQ 49 - command GOTO 50 - operator GREATERP 51 - command IF 52 - operator LIST 53 - operator OR 54 - command PROCEDURE 55 - command REPEAT 56 - operator REST 57 - command RETURN 58 - operator REVERSE 59 - type RULE 60 - type Free Variable 61 - type Optional Free Variable 62 - operator SECOND 63 - operator SET 64 - operator SETQ 65 - operator THIRD 66 - operator WHEN 67 - ---- return from file ../doc/help/syntax.tex - ---- input file ../doc/help/arith.tex - section end: 68 -section 5 g5 Arithmetic Operations - introduction ARITHMETIC\_OPERATIONS 69 - operator ABS 70 - switch ADJPREC 71 - operator ARG 72 - operator CEILING 73 - operator CHOOSE 74 - operator DEG2DMS 75 - operator DEG2RAD 76 - operator DIFFERENCE 77 - operator DILOG 78 - operator DMS2DEG 79 - operator DMS2RAD 80 - operator FACTORIAL 81 - operator FIX 82 - operator FIXP 83 - operator FLOOR 84 - operator EXPT 85 - operator GCD 86 - operator LN 87 - operator LOG 88 - operator LOGB 89 - operator MAX 90 - operator MIN 91 - operator MINUS 92 - operator NEXTPRIME 93 - switch NOCONVERT 94 - operator NORM 95 - operator PERM 96 - operator PLUS 97 - operator QUOTIENT 98 - operator RAD2DEG 99 - operator RAD2DMS 100 - operator RECIP 101 - operator REMAINDER 102 - operator ROUND 103 - command SETMOD 104 - operator SIGN 105 - operator SQRT 106 - operator TIMES 107 - ---- return from file ../doc/help/arith.tex - ---- input file ../doc/help/boolean.tex - section end: 108 -section 6 g6 Boolean Operators - concept boolean value 109 - operator EQUAL 110 - operator EVENP 111 - concept false 112 - operator FREEOF 113 - operator LEQ 114 - operator LESSP 115 - operator MEMBER 116 - operator NEQ 117 - operator NOT 118 - operator NUMBERP 119 - operator ORDP 120 - operator PRIMEP 121 - concept TRUE 122 - ---- return from file ../doc/help/boolean.tex - ---- input file ../doc/help/command.tex - section end: 123 -section 7 g7 General Commands - command BYE 124 - command CONT 125 - command DISPLAY 126 - command LOAD\_PACKAGE 127 - command PAUSE 128 - command QUIT 129 - operator RECLAIM 130 - command REDERR 131 - command RETRY 132 - command SAVEAS 133 - command SHOWTIME 134 - command WRITE 135 - ---- return from file ../doc/help/command.tex - ---- input file ../doc/help/algebra.tex - section end: 136 -section 8 g8 Algebraic Operators - operator APPEND 137 - operator ARBINT 138 - operator ARBCOMPLEX 139 - operator ARGLENGTH 140 - operator COEFF 141 - operator COEFFN 142 - operator CONJ 143 - operator CONTINUED_FRACTION 144 - operator DECOMPOSE 145 - operator DEG 146 - operator DEN 147 - operator DF 148 - operator EXPAND\_CASES 149 - operator EXPREAD 150 - operator FACTORIZE 151 - operator HYPOT 152 - operator IMPART 153 - operator INT 154 - operator INTERPOL 155 - operator LCOF 156 - operator LENGTH 157 - operator LHS 158 - operator LIMIT 159 - operator LPOWER 160 - operator LTERM 161 - operator MAINVAR 162 - operator MAP 163 - command MKID 164 - operator NPRIMITIVE 165 - operator NUM 166 - operator ODESOLVE 167 - type ONE\_OF 168 - operator PART 169 - operator PF 170 - operator PROD 171 - operator REDUCT 172 - operator REPART 173 - operator RESULTANT 174 - operator RHS 175 - operator ROOT\_OF 176 - operator SELECT 177 - operator SHOWRULES 178 - operator SOLVE 179 - operator SORT 180 - operator STRUCTR 181 - operator SUB 182 - operator SUM 183 - operator WS 184 - ---- return from file ../doc/help/algebra.tex - ---- input file ../doc/help/declare.tex - section end: 185 -section 9 g9 Declarations - command ALGEBRAIC 186 - declaration ANTISYMMETRIC 187 - declaration ARRAY 188 - command CLEAR 189 - command CLEARRULES 190 - command DEFINE 191 - declaration DEPEND 192 - declaration EVEN 193 - declaration FACTOR 194 - command FORALL 195 - declaration INFIX 196 - declaration INTEGER 197 - declaration KORDER 198 - command LET 199 - declaration LINEAR 200 - declaration LINELENGTH 201 - command LISP 202 - declaration LISTARGP 203 - declaration NODEPEND 204 - command MATCH 205 - declaration NONCOM 206 - declaration NONZERO 207 - declaration ODD 208 - command OFF 209 - command ON 210 - declaration OPERATOR 211 - declaration ORDER 212 - declaration PRECEDENCE 213 - declaration PRECISION 214 - declaration PRINT\_PRECISION 215 - declaration REAL 216 - declaration REMFAC 217 - declaration SCALAR 218 - declaration SCIENTIFIC\_NOTATION 219 - declaration SHARE 220 - command SYMBOLIC 221 - declaration SYMMETRIC 222 - declaration TR 223 - declaration UNTR 224 - declaration VARNAME 225 - command WEIGHT 226 - operator WHERE 227 - command WHILE 228 - command WTLEVEL 229 - ---- return from file ../doc/help/declare.tex - ---- input file ../doc/help/io.tex - section end: 230 -section 10 g10 Input and Output - command IN 231 - command INPUT 232 - command OUT 233 - command SHUT 234 - ---- return from file ../doc/help/io.tex - ---- input file ../doc/help/elemfn.tex - section end: 235 -section 11 g11 Elementary Functions - operator ACOS 236 - operator ACOSH 237 - operator ACOT 238 - operator ACOTH 239 - operator ACSC 240 - operator ACSCH 241 - operator ASEC 242 - operator ASECH 243 - operator ASIN 244 - operator ASINH 245 - operator ATAN 246 - operator ATANH 247 - operator ATAN2 248 - operator COS 249 - operator COSH 250 - operator COT 251 - operator COTH 252 - operator CSC 253 - operator CSCH 254 - operator ERF 255 - operator EXP 256 - operator SEC 257 - operator SECH 258 - operator SIN 259 - operator SINH 260 - operator TAN 261 - operator TANH 262 - ---- return from file ../doc/help/elemfn.tex - ---- input file ../doc/help/switch.tex - section end: 263 -section 12 g12 General Switches - introduction SWITCHES 264 - switch ALGINT 265 - switch ALLBRANCH 266 - switch ALLFAC 267 - switch ARBVARS 268 - switch BALANCED\_MOD 269 - switch BFSPACE 270 - switch COMBINEEXPT 271 - switch COMBINELOGS 272 - switch COMP 273 - switch COMPLEX 274 - switch CREF 275 - switch CRAMER 276 - switch DEFN 277 - switch DEMO 278 - switch DFPRINT 279 - switch DIV 280 - switch ECHO 281 - switch ERRCONT 282 - switch EVALLHSEQP 283 - switch EXP 284 - switch EXPANDLOGS 285 - switch EZGCD 286 - switch FACTOR 287 - switch FAILHARD 288 - switch FORT 289 - switch FORTUPPER 290 - switch FULLPREC 291 - switch FULLROOTS 292 - switch GC 293 - switch GCD 294 - switch HORNER 295 - switch IFACTOR 296 - switch INT 297 - switch INTSTR 298 - switch LCM 299 - switch LESSSPACE 300 - switch LIMITEDFACTORS 301 - switch LIST 302 - switch LISTARGS 303 - switch MCD 304 - switch MODULAR 305 - switch MSG 306 - switch MULTIPLICITIES 307 - switch NAT 308 - switch NERO 309 - switch NOARG 310 - switch NOLNR 311 - switch NOSPLIT 312 - switch NUMVAL 313 - switch OUTPUT 314 - switch OVERVIEW 315 - switch PERIOD 316 - switch PRECISE 317 - switch PRET 318 - switch PRI 319 - switch RAISE 320 - switch RAT 321 - switch RATARG 322 - switch RATIONAL 323 - switch RATIONALIZE 324 - switch RATPRI 325 - switch REVPRI 326 - switch RLISP88 327 - switch ROUNDALL 328 - switch ROUNDBF 329 - switch ROUNDED 330 - switch SAVESTRUCTR 331 - switch SOLVESINGULAR 332 - switch TIME 333 - switch TRALLFAC 334 - switch TRFAC 335 - switch TRIGFORM 336 - switch TRINT 337 - switch TRNONLNR 338 - switch VAROPT 339 - ---- return from file ../doc/help/switch.tex - ---- input file ../doc/help/matrix.tex - section end: 340 -section 13 g13 Matrix Operations - operator COFACTOR 341 - operator DET 342 - operator MAT 343 - operator MATEIGEN 344 - declaration MATRIX 345 - operator NULLSPACE 346 - operator RANK 347 - operator TP 348 - operator TRACE 349 - ---- return from file ../doc/help/matrix.tex - ---- input file ../doc/help/pk-groeb.tex - section end: 350 -section 14 g14 Groebner package - introduction Groebner bases 351 - concept Ideal Parameters 352 - subsection 15 g15 Term order - introduction Term order 353 - operator torder 354 - operator torder_compile 355 - concept lex term order 356 - concept gradlex term order 357 - concept revgradlex term order 358 - concept gradlexgradlex term order 359 - concept gradlexrevgradlex term order 360 - concept lexgradlex term order 361 - concept lexrevgradlex term order 362 - concept weighted term order 363 - concept graded term order 364 - concept matrix term order 365 - section end: 366 - subsection 16 g16 Basic Groebner operators - operator gvars 367 - operator groebner 368 - operator groebner\_walk 369 - ######## reference to (l e x) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (g r a d e d) not found, - ######## reference to (w e i g h t e d) not found, - ######## reference to (k e x) not found, - ######## reference to (l e x) not found, - switch groebopt 370 - variable gvarslast 371 - switch groebprereduce 372 - switch groebfullreduction 373 - switch gltbasis 374 - variable gltb 375 - variable glterms 376 - switch groebstat 377 - switch trgroeb 378 - switch trgroebs 379 - operator gzerodim? 380 - operator gdimension 381 - operator gindependent\_sets 382 - operator dd_groebner 383 - operator glexconvert 384 - operator greduce 385 - operator preduce 386 - operator idealquotient 387 - operator hilbertpolynomial 388 - operator saturation 389 - section end: 390 - subsection 17 g17 Factorizing Groebner bases - operator groebnerf 391 - variable groebmonfac 392 - variable groebresmax 393 - variable groebrestriction 394 - section end: 395 - subsection 18 g18 Tracing Groebner bases - switch groebprot 396 - variable groebprotfile 397 - operator groebnert 398 - operator preducet 399 - section end: 400 - subsection 19 g19 Groebner Bases for Modules - concept Module 401 - variable gmodule 402 - section end: 403 - subsection 20 g20 Computing with distributive polynomials - operator gsort 404 - operator gsplit 405 - operator gspoly 406 - ---- return from file ../doc/help/pk-groeb.tex - ---- input file ../doc/help/hephys.tex - section end: 407 - section end: 408 -section 21 g21 High Energy Physics - introduction HEPHYS 409 - operator HE-dot 410 - operator EPS 411 - operator G 412 - declaration INDEX 413 - command MASS 414 - command MSHELL 415 - declaration NOSPUR 416 - declaration REMIND 417 - declaration SPUR 418 - command VECDIM 419 - declaration VECTOR 420 - ---- return from file ../doc/help/hephys.tex - ---- input file ../doc/help/pk-numer.tex - section end: 421 -section 22 g22 Numeric Package - introduction Numeric Package 422 - type Interval 423 - concept numeric accuracy 424 - switch TRNUMERIC 425 - operator num_min 426 - operator num_solve 427 - operator num_int 428 - operator num_odesolve 429 - operator bounds 430 - concept Chebyshev fit 431 - operator num_fit 432 - ---- return from file ../doc/help/pk-numer.tex - ---- input file ../doc/help/pk-roots.tex - section end: 433 -section 23 g23 Roots Package - introduction Roots Package 434 - operator MKPOLY 435 - operator NEARESTROOT 436 - operator REALROOTS 437 - operator ROOTACC 438 - operator ROOTS 439 - operator ROOT\_VAL 440 - variable ROOTSCOMPLEX 441 - variable ROOTSREAL 442 - ---- return from file ../doc/help/pk-roots.tex - ---- input file ../doc/help/pk-specf.tex - section end: 443 -section 24 g24 Special Functions - introduction Special Function Package 444 - concept Constants 445 - subsection 25 g25 Bernoulli Euler Zeta - operator BERNOULLI 446 - operator BERNOULLIP 447 - operator EULER 448 - operator EULERP 449 - operator ZETA 450 - section end: 451 - subsection 26 g26 Bessel Functions - operator BESSELJ 452 - operator BESSELY 453 - operator HANKEL1 454 - operator HANKEL2 455 - operator BESSELI 456 - operator BESSELK 457 - operator StruveH 458 - operator StruveL 459 - operator KummerM 460 - operator KummerU 461 - operator WhittakerW 462 - section end: 463 - subsection 27 g27 Airy Functions - operator Airy_Ai 464 - operator Airy_Bi 465 - operator Airy_Aiprime 466 - operator Airy_Biprime 467 - section end: 468 - subsection 28 g28 Jacobi's Elliptic Functions and Elliptic Integrals - operator JacobiSN 469 - operator JacobiCN 470 - operator JacobiDN 471 - operator JacobiCD 472 - operator JacobiSD 473 - operator JacobiND 474 - operator JacobiDC 475 - operator JacobiNC 476 - operator JacobiSC 477 - operator JacobiNS 478 - operator JacobiDS 479 - operator JacobiCS 480 - operator JacobiAMPLITUDE 481 - operator AGM_FUNCTION 482 - operator LANDENTRANS 483 - operator EllipticF 484 - operator EllipticK 485 - operator EllipticKprime 486 - operator EllipticE 487 - operator EllipticTHETA 488 - operator JacobiZETA 489 - section end: 490 - subsection 29 g29 Gamma and Related Functions - operator POCHHAMMER 491 - operator GAMMA 492 - operator BETA 493 - operator PSI 494 - operator POLYGAMMA 495 - section end: 496 - subsection 30 g30 Miscellaneous Functions - operator DILOG extended 497 - operator Lambert\_W function 498 - section end: 499 - subsection 31 g31 Orthogonal Polynomials - operator ChebyshevT 500 - operator ChebyshevU 501 - operator HermiteP 502 - operator LaguerreP 503 - operator LegendreP 504 - operator JacobiP 505 - operator GegenbauerP 506 - operator SolidHarmonicY 507 - operator SphericalHarmonicY 508 - section end: 509 - subsection 32 g32 Integral Functions - operator Si 510 - operator Shi 511 - operator s_i 512 - operator Ci 513 - operator Chi 514 - operator ERF extended 515 - operator erfc 516 - operator Ei 517 - operator Fresnel_C 518 - operator Fresnel_S 519 - section end: 520 - subsection 33 g33 Combinatorial Operators - operator BINOMIAL 521 - operator STIRLING1 522 - operator STIRLING2 523 - section end: 524 - subsection 34 g34 3j and 6j symbols - operator ThreejSymbol 525 - operator Clebsch_Gordan 526 - operator SixjSymbol 527 - section end: 528 - subsection 35 g35 Miscellaneous - operator HYPERGEOMETRIC 529 - operator MeijerG 530 - operator Heaviside 531 - operator erfi 532 - ---- return from file ../doc/help/pk-specf.tex - ---- input file ../doc/help/taylor.tex - section end: 533 - section end: 534 -section 36 g36 Taylor series - introduction TAYLOR 535 - operator taylor 536 - switch taylorautocombine 537 - switch taylorautoexpand 538 - operator taylorcombine 539 - switch taylorkeeporiginal 540 - operator taylororiginal 541 - switch taylorprintorder 542 - variable taylorprintterms 543 - operator taylorrevert 544 - operator taylorseriesp 545 - operator taylortemplate 546 - operator taylortostandard 547 - ---- return from file ../doc/help/taylor.tex - ---- input file ../doc/help/pk-gplot.tex - section end: 548 -section 37 g37 Gnuplot package - introduction GNUPLOT and REDUCE 549 - concept Axes names 550 - type Pointset 551 - command PLOT 552 - command PLOTRESET 553 - variable title 554 - variable xlabel 555 - variable ylabel 556 - variable zlabel 557 - variable terminal 558 - variable size 559 - variable view 560 - switch contour 561 - switch surface 562 - switch hidden3d 563 - switch PLOTKEEP 564 - switch PLOTREFINE 565 - variable plot_xmesh 566 - variable plot_ymesh 567 - switch SHOW_GRID 568 - switch TRPLOT 569 - ---- return from file ../doc/help/pk-gplot.tex - ---- input file ../doc/help/linalg.tex - section end: 570 -section 38 g38 Linear Algebra package - introduction Linear Algebra package 571 - switch fast_la 572 - operator add_columns 573 - operator add_rows 574 - operator add_to_columns 575 - operator add_to_rows 576 - operator augment_columns 577 - operator band_matrix 578 - operator block_matrix 579 - operator char_matrix 580 - operator char_poly 581 - operator cholesky 582 - operator coeff_matrix 583 - operator column_dim 584 - operator companion 585 - operator copy_into 586 - operator diagonal 587 - operator extend 588 - operator find_companion 589 - operator get_columns 590 - operator get_rows 591 - operator gram_schmidt 592 - operator hermitian_tp 593 - operator hessian 594 - operator hilbert 595 - operator jacobian 596 - operator jordan_block 597 - operator lu_decom 598 - operator make_identity 599 - operator matrix_augment 600 - operator matrixp 601 - operator matrix_stack 602 - operator minor 603 - operator mult_columns 604 - operator mult_rows 605 - operator pivot 606 - operator pseudo_inverse 607 - operator random_matrix 608 - operator remove_columns 609 - operator remove_rows 610 - operator row_dim 611 - operator rows_pivot 612 - operator simplex 613 - operator squarep 614 - operator stack_rows 615 - operator sub_matrix 616 - operator svd 617 - operator swap_columns 618 - operator swap_entries 619 - operator swap_rows 620 - operator symmetricp 621 - operator toeplitz 622 - operator vandermonde 623 - ---- return from file ../doc/help/linalg.tex - ---- input file ../doc/help/normform.tex - section end: 624 -section 39 g39 Matrix Normal Forms - operator Smithex 625 - operator Smithex\_int 626 - operator Frobenius 627 - operator Ratjordan 628 - operator Jordansymbolic 629 - operator Jordan 630 - ---- return from file ../doc/help/normform.tex - ---- input file ../doc/help/pk-misc.tex - section end: 631 -section 40 g40 Miscellaneous Packages - introduction Miscellaneous Packages 632 - package ALGINT 633 - package APPLYSYM 634 - package ARNUM 635 - package ASSIST 636 - package AVECTOR 637 - package BOOLEAN 638 - package CALI 639 - package CAMAL 640 - package CHANGEVR 641 - package COMPACT 642 - package CRACK 643 - package CVIT 644 - package DEFINT 645 - package DESIR 646 - package DFPART 647 - package DUMMY 648 - package EXCALC 649 - package FPS 650 - package FIDE 651 - package GENTRAN 652 - package IDEALS 653 - package INEQ 654 - package INVBASE 655 - package LAPLACE 656 - package LIE 657 - package MODSR 658 - package NCPOLY 659 - package ORTHOVEC 660 - package PHYSOP 661 - package PM 662 - package RANDPOLY 663 - package REACTEQN 664 - package RESET 665 - package RESIDUE 666 - package RLFI 667 - package SCOPE 668 - package SETS 669 - package SPDE 670 - package SYMMETRY 671 - package TPS 672 - package TRI 673 - package TRIGSIMP 674 - package XCOLOR 675 - package XIDEAL 676 - package WU 677 - package ZEILBERG 678 - package ZTRANS 679 - ---- return from file ../doc/help/pk-misc.tex - ---- input file ../doc/help/outmode.tex - section end: 680 -section 41 g41 Outmoded Operations - command ED 681 - command EDITDEF 682 - ---- return from file ../doc/help/outmode.tex - section end: 683 - section end: 684 - -nil - - - -html_indexfile();..... compiling html index file - -nil - - - -LISP_indexfile();..... compiling independent index file - -nil - - - -bye; - -End of Lisp run after 11.39+0.61 seconds - -+++ Transcript closed at end of run +++ DELETED r38/help/redhelp.rtf Index: r38/help/redhelp.rtf ================================================================== --- r38/help/redhelp.rtf +++ /dev/null @@ -1,37984 +0,0 @@ -{\rtf1\ansi \deff0{\fonttbl{\f0\froman Tms Rmn;} -{\f1\fdecor Symbol;} -{\f2\fswiss Helv;} -{\f3\fmodern pica;} -{\f4\fmodern Courier;} -{\f5\fmodern elite;} -{\f6\fmodern prestige;} -{\f7\fmodern lettergothic;} -{\f8\fmodern gothicPS;} -{\f9\fmodern cubicPS;} -{\f10\fmodern lineprinter;} -{\f11\fswiss Helvetica;} -{\f12\fmodern avantegarde;} -{\f13\fmodern spartan;} -{\f14\fmodern metro;} -{\f15\fmodern presentation;} -{\f16\fmodern APL;} -{\f17\fmodern OCRA;} -{\f18\fmodern OCRB;} -{\f19\froman boldPS;} -{\f20\froman emperorPS;} -{\f21\froman madaleine;} -{\f22\froman zapf humanist;} -{\f23\froman classic;} -{\f24\froman roman f;} -{\f25\froman roman g;} -{\f26\froman roman h;} -{\f27\froman timesroman;} -{\f28\froman century;} -{\f29\froman palantino;} -{\f30\froman souvenir;} -{\f31\froman garamond;} -{\f32\froman caledonia;} -{\f33\froman bodini;} -{\f34\froman university;} -{\f35\fscript Script;} -{\f36\fscript scriptPS;} -{\f37\fscript script c;} -{\f38\fscript script d;} -{\f39\fscript commercial script;} -{\f40\fscript park avenue;} -{\f41\fscript coronet;} -{\f42\fscript script h;} -{\f43\fscript greek;} -{\f44\froman kana;} -{\f45\froman hebrew;} -{\f46\froman roman s;} -{\f47\froman russian;} -{\f48\froman roman u;} -{\f49\froman roman v;} -{\f50\froman roman w;} -{\f51\fdecor narrator;} -{\f52\fdecor emphasis;} -{\f53\fdecor zapf chancery;} -{\f54\fdecor decor d;} -{\f55\fdecor old english;} -{\f56\fdecor decor f;} -{\f57\fdecor decor g;} -{\f58\fdecor cooper black;} -{\f59\fnil linedraw;} -{\f60\fnil math7;} -{\f61\fnil math8;} -{\f62\fnil bar3of9;} -{\f63\fnil EAN;} -{\f64\fnil pcline;} -{\f65\fnil tech h;} -{\f66\fswiss Helvetica-Narrow;} -{\f67\fmodern Modern;} -{\f68\froman Roman;}} - -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; -\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;} -{\stylesheet{\s244 \fs16\up6 \sbasedon0\snext0 footnote reference;} -{\s245 \fs20 \sbasedon0\snext245 footnote text;} -{\s246\li720 \i\fs20 -\sbasedon0\snext255 heading 9;} -{\s247\li720 \i\fs20 \sbasedon0\snext255 heading 8;} -{\s248\li720 \i\fs20 \sbasedon0\snext255 heading 7;} -{\s249\li720 \fs20\ul \sbasedon0\snext255 heading 6;} -{\s250\li720 \b\fs20 \sbasedon0\snext255 heading 5;} -{\s251\li360 -\ul \sbasedon0\snext255 heading 4;} -{\s252\li360 \b \sbasedon0\snext255 heading 3;} -{\s253\sb120 \b\f2 \sbasedon0\snext0 heading 2;} -{\s254\sb240 \b\f2\ul \sbasedon0\snext0 heading 1;} -{\s255\li720 \fs20 \sbasedon0\snext255 Normal Indent;} -{\fs20 -\snext0 Normal;} -{\s2\fi-240\li480\sb80\tx480 \f11 \sbasedon0\snext2 nscba;} -{\s3\fi-240\li240\sa20 \f11 \sbasedon0\snext3 j;} -{\s4\li480\sa20 \f11 \sbasedon0\snext4 ij;} -{\s5\sb80\sa20 \f11 \sbasedon0\snext5 btb;} -{\s6\fi-240\li2400\sb20\sa20 \f11\fs20 -\sbasedon0\snext6 ctcb;} -{\s7\fi-240\li480\sa40\tx480 \f11 \sbasedon0\snext7 ns;} -{\s8\sa120 \f11\fs28 \sbasedon0\snext8 TT;} -{\s9\fi-240\li2400\sa20 \f11 \sbasedon0\snext9 crtj;} -{\s10\fi-240\li480\tx480 \f11 \sbasedon0\snext10 nsca;} -{\s11\sa20 \f11 -\sbasedon0\snext11 bt;} -{\s12\li240\sb120\sa40 \f11 \sbasedon0\snext12 Hf;} -{\s13\li240\sb120\sa40 \f11 \sbasedon0\snext13 Hs;} -{\s14\li480\sb120\sa40 \f11 \sbasedon0\snext14 RT;} -{\s15\fi-2160\li2160\sb240\sa80\tx2160 \f11 \sbasedon0\snext15 c;} -{ -\s16\li2160\sa20 \f11 \sbasedon0\snext16 ct;} -{\s17\li240\sa20 \f11 \sbasedon0\snext17 it;} -{\s18\li480 \f11\fs20 \sbasedon0\snext18 nsct;} -{\s19\fi-160\li400\sb80\sa40 \f11 \sbasedon0\snext19 nscb;} -{\s20\fi-2640\li2880\sb120\sa40\brdrb\brdrs \brdrbtw\brdrs -\tx2880 \f11 \sbasedon0\snext20 HC2;} -{\s21\fi-2640\li2880\sb120\sa20\tx2880 \f11 \sbasedon0\snext21 C2;} -{\s22\fi-240\li2400\sa20 \f11\fs20 \sbasedon0\snext22 ctc;} -{\s23\li2160\sb160 \f11 \sbasedon0\snext23 crt;} -{\s24\li480\sb20\sa40 \f11 -\sbasedon0\snext24 or;}} - -{\info{\author Dan Davids}{\operator Dan Davids}{\creatim\yr2137\mo8\dy7} -{\revtim\yr1990\mo5\dy9\hr16\min54}{\version3}{\edmins3134}{\nofpages0} -{\nofwords65536}{\nofchars69885}{\vern8310}} - -\ftnbj \sectd \linex576\endnhere -\pard\plain \sl240 \fs20 - - - -{\f2 -#{\footnote \pard\plain \sl240 \fs20 # IDENTIFIER} - -${\footnote \pard\plain \sl240 \fs20 $ IDENTIFIER} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0644} - - K{\footnote \pard\plain \sl240 \fs20 K IDENTIFIER type;type} - -}{\b\f2 IDENTIFIER}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -Identifiers in REDUCE consist of one or more alphanumeric characters, of -which the first must be alphabetical. The maximum number of characters -allowed is system dependent, but is usually over 100. However, printing -is simplified if they are kept under 25 characters. -\par -\par -You can also use special characters in your identifiers, but each must be -preceded by an exclamation point }{\f3 !} {\f2 as an escape character. Useful -special characters are }{\f3 # $ % ^ & * - + = ? < > ~ | / !} {\f2 and -the space. Note that the use of the exclamation point as a special -character requires a second exclamation point as an escape character. -The underscore }{\f3 _} {\f2 is special in this regard. It must be preceded -by an escape character in the first position in an identifier, but is -treated like a normal letter within an identifier. -\par -\par -Other characters, such as }{\f3 ( ) # ; ` ' "} {\f2 can also be used if -preceded by a }{\f3 !} {\f2 , but as they have special meanings to the Lisp -reader it is best to avoid them to avoid confusion. -\par -\par -Many system identifiers have * before or after their names, or - between -words. If you accidentally pick one of these names for your own identifier, -it could have disastrous effects. For this reason it is wise not to include -* or - anywhere in your identifiers. -\par -\par -You will notice that REDUCE does not use the escape characters when it prints -identifiers containing special characters; however, you still must use them -when you refer to these identifiers. Be careful when editing statements -containing escaped special characters to treat the character and its escape -as an inseparable pair. -\par -\par -Identifiers are used for variable names, labels for }{\f3 go to} {\f2 statements, -and names of arrays, matrices, operators, and procedures. Once an identifier is -used as a matrix, array, scalar or operator identifier, it may not be used -again as a matrix, array or operator. An operator or array identifier may -later be used as a scalar without problems, but a matrix identifier cannot be -used as a scalar. All procedures are entered into the system as operators, so -the name of a procedure may not be used as a matrix, array, or operator -identifier either. - \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # KERNEL} - -${\footnote \pard\plain \sl240 \fs20 $ KERNEL} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0645} - - K{\footnote \pard\plain \sl240 \fs20 K KERNEL type;type} - -}{\b\f2 KERNEL}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -A }{\f3 kernel} {\f2 is a form that cannot be modified further by the REDUCE -canonical simplifier. Scalar variables are always kernels. The -other important class of kernels are operators with their arguments. -Some examples should help clarify this concept: -\par -\par -\pard \tx3420 }{\f4 \par - Expression Kernel? \par - \par - x Yes \par - varname Yes \par - cos(a) Yes \par - log(sin(x**2)) Yes \par - a*b No \par - (x+y)**4 No \par - matrix-identifier No \par -\pard \sl240 }{\f2 Many REDUCE operators expect kernels among their arguments. Error messages -result from attempts to use non-kernel expressions for these arguments. - \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # STRING} - -${\footnote \pard\plain \sl240 \fs20 $ STRING} - -+{\footnote \pard\plain \sl240 \fs20 + g2:0646} - - K{\footnote \pard\plain \sl240 \fs20 K STRING type;type} - -}{\b\f2 STRING}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - -A }{\f3 string} {\f2 is any collection of characters enclosed in double quotation -marks (}{\f3 "} {\f2 ). It may be used as an argument for a variety of commands -and operators, such as }{\f3 in} {\f2 , }{\f3 rederr} {\f2 and }{\f3 write} {\f2 . - \par -examples: \par -\pard \tx3420 }{\f4 \par -write "this is a string"; \par - \par - this is a string \par - \par - \par -write a, " ", b, " ",c,"!"; \par - \par - A B C! \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g2} - -${\footnote \pard\plain \sl240 \fs20 $ Concepts} - -+{\footnote \pard\plain \sl240 \fs20 + index:0002} -}{\b\f2 Concepts}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb IDENTIFIER type} -{\v\f2 IDENTIFIER}{\f2 \par -}{\f2 \tab}{\f2\uldb KERNEL type} -{\v\f2 KERNEL}{\f2 \par -}{\f2 \tab}{\f2\uldb STRING type} -{\v\f2 STRING}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # assumptions} - -${\footnote \pard\plain \sl240 \fs20 $ assumptions} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0647} - - K{\footnote \pard\plain \sl240 \fs20 K solve;assumptions variable;variable} - -}{\b\f2 ASSUMPTIONS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -After solving a linear or polynomial equation system -with parameters, the variable }{\f3 assumptions} {\f2 contains a list -of side relations for the parameters. The solution is valid only -as long as none of these expression is zero. - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{a*x-b*y+x,y-c\},\{x,y\}); \par - \par - b*c \par - \{\{x=-----,y=c\}\} \par - a + 1 \par - \par - \par -assumptions; \par - \par - \{a + 1\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CARD\_NO} - -${\footnote \pard\plain \sl240 \fs20 $ CARD_NO} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0648} - - K{\footnote \pard\plain \sl240 \fs20 K output;FORTRAN;CARD_NO variable;variable} - -}{\b\f2 CARD\_NO}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -}{\f3 card_no} {\f2 sets the total number of cards allowed in a Fortran -output statement when }{\f3 fort} {\f2 is on. Default is 20. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on fort; \par - \par -card_no := 4; \par - \par - CARD_NO=4. \par - \par - \par -z := (x + y)**15; \par - \par - ANS1=5005.*X**6*Y**9+3003.*X**5*Y**10+1365.*X**4*Y** \par - . 11+455.*X**3*Y**12+105.*X**2*Y**13+15.*X*Y**14+Y**15 \par - Z=X**15+15.*X**14*Y+105.*X**13*Y**2+455.*X**12*Y**3+ \par - . 1365.*X**11*Y**4+3003.*X**10*Y**5+5005.*X**9*Y**6+ \par - . 6435.*X**8*Y**7+6435.*X**7*Y**8+ANS1 \par - \par -\pard \sl240 }{\f2 Twenty total cards means 19 continuation cards. You may set it for more -if your Fortran system allows more. Expressions are broken apart in a -Fortran-compatible way if they extend for more than }{\f3 card_no} {\f2 -continuation cards. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # E} - -${\footnote \pard\plain \sl240 \fs20 $ E} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0649} - - K{\footnote \pard\plain \sl240 \fs20 K E constant;constant} - -}{\b\f2 E}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The constant }{\f3 e} {\f2 is reserved for use as the base of the natural -logarithm. Its value is approximately 2.71828284590, which REDUCE gives -to the current decimal precision when the switch } -{\f2\uldb rounded}{\v\f2 ROUNDED} -{\f2 is on. -\par -\par -}{\f3 e} {\f2 may be used as an iterative variable in a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement, -or as a local variable or a } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 . If }{\f3 e} {\f2 is defined -as a local -variable inside the procedure, the normal definition as the base of the -natural logarithm would be suspended inside the procedure. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EVAL\_MODE} - -${\footnote \pard\plain \sl240 \fs20 $ EVAL_MODE} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0650} - - K{\footnote \pard\plain \sl240 \fs20 K symbolic;algebraic;EVAL_MODE variable;variable} - -}{\b\f2 EVAL\_MODE}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The system variable }{\f3 eval_mode} {\f2 contains the current mode, either -} -{\f2\uldb algebraic}{\v\f2 ALGEBRAIC} -{\f2 or } -{\f2\uldb symbolic}{\v\f2 SYMBOLIC} -{\f2 . -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -EVAL\_MODE; \par - \par - ALGEBRAIC \par - \par -\pard \sl240 }{\f2 Some commands do not behave the same way in algebraic and symbolic modes. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FORT\_WIDTH} - -${\footnote \pard\plain \sl240 \fs20 $ FORT_WIDTH} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0651} - - K{\footnote \pard\plain \sl240 \fs20 K FORTRAN;output;FORT_WIDTH variable;variable} - -}{\b\f2 FORT\_WIDTH}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The }{\f3 fort_width} {\f2 variable sets the number of characters in a line of -Fortran-compatible output produced when the } -{\f2\uldb fort}{\v\f2 FORT} -{\f2 switch is on. -Default is 70. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -fort_width := 30; \par - \par - FORT_WIDTH := 30 \par - \par - \par -on fort; \par - \par -df(sin(x**3*y),x); \par - \par - ANS=3.*COS(X \par - . **3*Y)*X**2* \par - . Y \par - \par -\pard \sl240 }{\f2 }{\f3 fort_width} {\f2 includes the usually blank characters at the beginning -of the card. As you may notice above, it is conservative and makes the -lines even shorter than it was told. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # HIGH\_POW} - -${\footnote \pard\plain \sl240 \fs20 $ HIGH_POW} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0652} - - K{\footnote \pard\plain \sl240 \fs20 K degree;polynomial;HIGH_POW variable;variable} - -}{\b\f2 HIGH\_POW}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The variable }{\f3 high_pow} {\f2 is set by } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 to the highest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -coeff((x+1)^5*(x*(y+3)^2)^2,x); \par - \par - \{0, \par - 0, \par - 4 3 2 \par - Y + 12*Y + 54*Y + 108*Y + 81, \par - 4 3 2 \par - 5*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 10*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 10*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - 5*(Y + 12*Y + 54*Y + 108*Y + 81), \par - 4 3 2 \par - Y + 12*Y + 54*Y + 108*Y + 81\} \par - \par - \par -high_pow; \par - \par - 7 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # I} - -${\footnote \pard\plain \sl240 \fs20 $ I} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0653} - - K{\footnote \pard\plain \sl240 \fs20 K complex;I constant;constant} - -}{\b\f2 I}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - - \par -\par -REDUCE knows }{\f3 i} {\f2 is the square root of -1, - and that i^2 = -1. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(a + b*i)*(c + d*i); \par - \par - A*C + A*D*I + B*C*I - B*D \par - \par - \par -i**2; \par - \par - -1 \par - \par -\pard \sl240 }{\f2 }{\f3 i} {\f2 cannot be used as an identifier. It is all right to use }{\f3 i} {\f2 -as an index variable in a }{\f3 for} {\f2 loop, or as a local (}{\f3 scalar} {\f2 ) -variable inside a }{\f3 begin...end} {\f2 block, but it loses its definition as -the square root of -1 inside the block in that case. -\par -\par -Only the simplest properties of i are known by REDUCE unless -the switch } -{\f2\uldb complex}{\v\f2 COMPLEX} -{\f2 is turned on, which implements full complex -arithmetic in factoring, simplification, and functional values. -}{\f3 complex} {\f2 is ordinarily off. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # INFINITY} - -${\footnote \pard\plain \sl240 \fs20 $ INFINITY} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0654} - - K{\footnote \pard\plain \sl240 \fs20 K INFINITY constant;constant} - -}{\b\f2 INFINITY}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The name }{\f3 infinity} {\f2 is used to represent the infinite positive number. -However, at the present time, arithmetic in terms of this operator reflects -finite arithmetic, rather than true operations on infinity. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # LOW\_POW} - -${\footnote \pard\plain \sl240 \fs20 $ LOW_POW} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0655} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;degree;LOW_POW variable;variable} - -}{\b\f2 LOW\_POW}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The variable }{\f3 low_pow} {\f2 is set by } -{\f2\uldb coeff}{\v\f2 COEFF} -{\f2 to the lowest power -of the variable of interest in the given expression. You can access this -variable for use in further computation or display. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -coeff((x+2*y)**6,y); \par - \par - 6 \par - \{X , \par - 5 \par - 12*X , \par - 4 \par - 60*X , \par - 3 \par - 160*X , \par - 2 \par - 240*X , \par - 192*X, \par - 64\} \par - \par - \par -low_pow; \par - \par - 0 \par - \par - \par -coeff(x**2*(x*sin(y) + 1),x); \par - \par - \par - \par - \{0,0,1,SIN(Y)\} \par - \par - \par -low_pow; \par - \par - 2 \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # NIL} - -${\footnote \pard\plain \sl240 \fs20 $ NIL} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0656} - - K{\footnote \pard\plain \sl240 \fs20 K false;NIL constant;constant} - -}{\b\f2 NIL}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - - \par -\par -}{\f3 nil} {\f2 represents the truth value false in symbolic mode, and is -a synonym for 0 in algebraic mode. It cannot be used for any other -purpose, even inside procedures or } -{\f2\uldb for}{\v\f2 FOR} -{\f2 loops. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # PI} - -${\footnote \pard\plain \sl240 \fs20 $ PI} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0657} - - K{\footnote \pard\plain \sl240 \fs20 K PI constant;constant} - -}{\b\f2 PI}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The identifier }{\f3 pi} {\f2 is reserved for use as the circular constant. -Its value is given by 3.14159265358..., which REDUCE gives to the current -decimal precision when REDUCE is in a floating-point mode. -\par -\par -}{\f3 pi} {\f2 may be used as a looping variable in a } -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement, -or as a local variable in a } -{\f2\uldb procedure}{\v\f2 PROCEDURE} -{\f2 . Its value in such cases -will be taken from the local environment. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # requirements} - -${\footnote \pard\plain \sl240 \fs20 $ requirements} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0658} - - K{\footnote \pard\plain \sl240 \fs20 K solve;requirements variable;variable} - -}{\b\f2 REQUIREMENTS}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -After an attempt to solve an inconsistent equation system -with parameters, the variable }{\f3 requirements} {\f2 contains a list -of expressions. These expressions define a set of conditions implicitly -equated with zero. Any solution to this system defines a setting for -the parameters sufficient to make the original system consistent. - \par -examples: \par -\pard \tx3420 }{\f4 \par -solve(\{x-a,x-y,y-1\},\{x,y\}); \par - \par - \{\} \par - \par - \par -requirements; \par - \par - \{a - 1\} \par - \par -\pard \sl240 }{\f2 \par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # ROOT\_MULTIPLICITIES} - -${\footnote \pard\plain \sl240 \fs20 $ ROOT_MULTIPLICITIES} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0659} - - K{\footnote \pard\plain \sl240 \fs20 K polynomial;solve;root;ROOT_MULTIPLICITIES variable;variable} - -}{\b\f2 ROOT\_MULTIPLICITIES}{\f2 \tab \tab \tab \tab }{\b\f2 variable}{\f2 \par -\par - - \par -\par -The }{\f3 root_multiplicities} {\f2 variable is set to the list of the -multiplicities of the roots of an equation by the } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 operator. -\par -\par -} -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 returns its solutions in a list. The multiplicities of -each solution are put in the corresponding locations of the list -}{\f3 root_multiplicities} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # T} - -${\footnote \pard\plain \sl240 \fs20 $ T} - -+{\footnote \pard\plain \sl240 \fs20 + g3:0660} - - K{\footnote \pard\plain \sl240 \fs20 K T constant;constant} - -}{\b\f2 T}{\f2 \tab \tab \tab \tab }{\b\f2 constant}{\f2 \par -\par - -The constant }{\f3 t} {\f2 stands for the truth value true. It cannot be used -as a scalar variable in a } -{\f2\uldb block}{\v\f2 block} -{\f2 , as a looping variable in a -} -{\f2\uldb for}{\v\f2 FOR} -{\f2 statement or as an } -{\f2\uldb operator}{\v\f2 OPERATOR} -{\f2 name. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # g3} - -${\footnote \pard\plain \sl240 \fs20 $ Variables} - -+{\footnote \pard\plain \sl240 \fs20 + index:0003} -}{\b\f2 Variables}{\f2 \par }\pard \sl240 {\f2 \par } -{\f2 \tab}{\f2\uldb assumptions variable} -{\v\f2 assumptions}{\f2 \par -}{\f2 \tab}{\f2\uldb CARD\_NO variable} -{\v\f2 CARD\_NO}{\f2 \par -}{\f2 \tab}{\f2\uldb E constant} -{\v\f2 E}{\f2 \par -}{\f2 \tab}{\f2\uldb EVAL\_MODE variable} -{\v\f2 EVAL\_MODE}{\f2 \par -}{\f2 \tab}{\f2\uldb FORT\_WIDTH variable} -{\v\f2 FORT\_WIDTH}{\f2 \par -}{\f2 \tab}{\f2\uldb HIGH\_POW variable} -{\v\f2 HIGH\_POW}{\f2 \par -}{\f2 \tab}{\f2\uldb I constant} -{\v\f2 I}{\f2 \par -}{\f2 \tab}{\f2\uldb INFINITY constant} -{\v\f2 INFINITY}{\f2 \par -}{\f2 \tab}{\f2\uldb LOW\_POW variable} -{\v\f2 LOW\_POW}{\f2 \par -}{\f2 \tab}{\f2\uldb NIL constant} -{\v\f2 NIL}{\f2 \par -}{\f2 \tab}{\f2\uldb PI constant} -{\v\f2 PI}{\f2 \par -}{\f2 \tab}{\f2\uldb requirements variable} -{\v\f2 requirements}{\f2 \par -}{\f2 \tab}{\f2\uldb ROOT\_MULTIPLICITIES variable} -{\v\f2 ROOT\_MULTIPLICITIES}{\f2 \par -}{\f2 \tab}{\f2\uldb T constant} -{\v\f2 T}{\f2 \par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # semicolon} - -${\footnote \pard\plain \sl240 \fs20 $ semicolon} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0661} - - K{\footnote \pard\plain \sl240 \fs20 K semicolon command;command} - -}{\b\f2 ;}{\f2 \tab }{\b\f2 SEMICOLON}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The semicolon is a statement delimiter, indicating results are to be printed -when used in interactive mode. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -(x+1)**2; \par - \par - 2 \par - X + 2*X + 1 \par - \par - \par -df(x**2 + 1,x); \par - \par - 2*X \par - \par -\pard \sl240 }{\f2 Entering a }{\f3 Return} {\f2 without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can be -added at this point to execute the statement. In interactive mode, a -statement that is ended with a semicolon and }{\f3 Return} {\f2 has its results -printed on the screen. -\par -\par -Inside a group statement }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 -or a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block, a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a block without a specific }{\f3 return} {\f2 -statement, there is no difference between using the semicolon or dollar -sign. In a group statement, the last value produced is the value -returned by the group statement. Thus, if a semicolon or dollar sign is -placed between the last statement and the ending brackets, the group -statement returns the value 0 or nil, rather than the value of the -last statement. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # dollar} - -${\footnote \pard\plain \sl240 \fs20 $ dollar} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0662} - - K{\footnote \pard\plain \sl240 \fs20 K dollar command;command} - -}{\b\f2 $}{\f2 \tab }{\b\f2 DOLLAR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The dollar sign is a statement delimiter, indicating results are not to be -printed when used in interactive mode. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -(x+1)**2$ \pard \sl240 }{\f2 The workspace is set to }{\f4 x^2 + 2x + 1}{\f2 - but nothing shows on the screen}{\f4 \pard \tx3420 \par - \par - \par -ws; \par - \par - 2 \par - X + 2*X + 1 \par - \par -\pard \sl240 }{\f2 -\par -\par -Entering a }{\f3 Return} {\f2 without a semicolon or dollar sign results in a -prompt on the following line. A semicolon or dollar sign can -be added at this point to execute the statement. In interactive mode, a -statement that ends with a dollar sign }{\f3 $} {\f2 and a }{\f3 Return} {\f2 is -executed, but the results not printed. -\par -\par -Inside a } -{\f2\uldb group}{\v\f2 group} -{\f2 statement }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 -or a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , a -semicolon or dollar sign separates individual REDUCE statements. Since -results are not printed from a } -{\f2\uldb block}{\v\f2 block} -{\f2 without a specific -} -{\f2\uldb return}{\v\f2 RETURN} -{\f2 \par -\par -statement, there is no difference between using the semicolon or dollar -sign. -\par -\par -In a group statement, the last value produced is the value returned by the -group statement. Thus, if a semicolon or dollar sign is placed between the -last statement and the ending brackets, the group statement returns the -value 0 or nil, rather than the value of the last statement. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # percent} - -${\footnote \pard\plain \sl240 \fs20 $ percent} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0663} - - K{\footnote \pard\plain \sl240 \fs20 K percent command;command} - -}{\b\f2 %}{\f2 \tab }{\b\f2 PERCENT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The percent sign is used to precede comments; everything from a percent -to the end of the line is ignored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -df(x**3 + y,x);\% This is a comment \key\{Return\} \par - \par - \par - 2 \par - 3*X \par - \par - \par -int(3*x**2,x) \%This is a comment; \key\{Return\} \par -\pard \sl240 }{\f2 A prompt is given, waiting for the semicolon that was not -detected in the comment}{\f4 \pard \tx3420 \pard \sl240 }{\f2 -\par -\par -Statement delimiters }{\f3 ;} {\f2 and }{\f3 $} {\f2 are not detected between a -percent sign and the end of the line. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # dot} - -${\footnote \pard\plain \sl240 \fs20 $ dot} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0664} - - K{\footnote \pard\plain \sl240 \fs20 K list;dot operator;operator} - -}{\b\f2 .}{\f2 \tab }{\b\f2 DOT}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The . (dot) infix binary operator adds a new item to the beginning of an -existing } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . In high energy physics expressions, -it can also be used -to represent the scalar product of two Lorentz four-vectors. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 .} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression, including a list; - must be a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 to avoid producing an error message. -The dot operator is right associative. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -liss := a . \{\}; \par - \par - LISS := \{A\} \par - \par - \par -liss := b . liss; \par - \par - LISS := \{B,A\} \par - \par - \par -newliss := liss . liss; \par - \par - NEWLISS := \{\{B,A\},B,A\} \par - \par - \par -firstlis := a . b . \{c\}; \par - \par - FIRSTLIS := \{A,B,C\} \par - \par - \par -secondlis := x . y . \{z\}; \par - \par - SECONDLIS := \{X,Y,Z\} \par - \par - \par -for i := 1:3 sum part(firstlis,i)*part(secondlis,i); \par - \par - \par - \par - A*X + B*Y + C*Z \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # assign} - -${\footnote \pard\plain \sl240 \fs20 $ assign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0665} - - K{\footnote \pard\plain \sl240 \fs20 K assign;assign operator;operator} - -}{\b\f2 :=}{\f2 \tab }{\b\f2 ASSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 :=} {\f2 is the assignment operator, assigning the value on the right-hand -side to the identifier or other valid expression on the left-hand side. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 :=} {\f4 -\par -\par -}{\f2 \par - is ordinarily a single identifier, though simple -expressions may be used (see Comments below). is any -valid REDUCE expression. If is a } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 -identifier, then - can be a matrix identifier (redimensioned if -necessary) which has each element set to the corresponding elements -of the identifier on the right-hand side. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := x**2 + 1; \par - \par - 2 \par - A := X + 1 \par - \par - \par -a; \par - \par - 2 \par - X + 1 \par - \par - \par -first := second := third; \par - \par - FIRST := SECOND := THIRD \par - \par - \par -first; \par - \par - THIRD \par - \par - \par -second; \par - \par - THIRD \par - \par - \par -b := for i := 1:5 product i; \par - \par - B := 120 \par - \par - \par -b; \par - \par - 120 \par - \par - \par -w + (c := x + 3) + z; \par - \par - W + X + Z + 3 \par - \par - \par -c; \par - \par - X + 3 \par - \par - \par -y + b := c; \par - \par - Y + B := C \par - \par - \par -y; \par - \par - - (B - C) \par - \par -\pard \sl240 }{\f2 The assignment operator is right associative, as shown in the second and -third examples. A string of such assignments has all but the last -item set to the value of the last item. Embedding an assignment statement -in another expression has the side effect of making the assignment, as well -as causing the given replacement in the expression. -\par -\par -Assignments of values to expressions rather than simple identifiers (such as in -the last example above) can also be done, subject to the following remarks: -\par -\par -\tab (i) -If the left-hand side is an identifier, an operator, or a power, the -substitution rule is added to the rule table. -\par -\par -\tab (ii) -If the operators }{\f3 - + /} {\f2 appear on the left-hand side, all but the first -term of the expression is moved to the right-hand side. -\par -\par -\tab (iii) -If the operator }{\f3 *} {\f2 appears on the left-hand side, any constant terms are -moved to the right-hand side, but the symbolic factors remain. -\par -\par -Assignment is valid for } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 elements, but not for entire arrays. -The assignment operator can also be used to attach functionality to operators. -\par -\par -A recursive construction such as }{\f3 a := a + b} {\f2 is allowed, but when -}{\f3 a} {\f2 is referenced again, the process of resubstitution continues -until the expression stack overflows (you get an error message). -Recursive assignments can be done safely inside controlled loop -expressions, such as } -{\f2\uldb for}{\v\f2 FOR} -{\f2 ... or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # equalsign} - -${\footnote \pard\plain \sl240 \fs20 $ equalsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0666} - - K{\footnote \pard\plain \sl240 \fs20 K equalsign operator;operator} - -}{\b\f2 =}{\f2 \tab }{\b\f2 EQUALSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 =} {\f2 operator is a prefix or infix equality comparison operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 =} {\f4 (}{\f3 ,} {\f4 ) - or - }{\f3 =} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 4; \par - \par - A := 4 \par - \par - \par -if =(a,10) then write "yes" else write "no"; \par - \par - \par - \par - no \par - \par - \par -b := c; \par - \par - B := C \par - \par - \par -if b = c then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par - \par -on rounded; \par - \par -if 4.0 = 4 then write "yes" else write "no"; \par - \par - \par - \par - yes \par - \par -\pard \sl240 }{\f2 This logical equality operator can only be used inside a conditional -statement, such as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . In other places the equal -sign establishes an algebraic object of type } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # replace} - -${\footnote \pard\plain \sl240 \fs20 $ replace} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0667} - - K{\footnote \pard\plain \sl240 \fs20 K replace operator;operator} - -}{\b\f2 =>}{\f2 \tab }{\b\f2 REPLACE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -\par -\par -The }{\f3 =>} {\f2 operator is a binary operator used in } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 lists to -denote replacements. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -operator f; \par - \par -let f(x) => x^2; \par - \par -f(x); \par - \par - 2 \par - x \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # plussign} - -${\footnote \pard\plain \sl240 \fs20 $ plussign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0668} - - K{\footnote \pard\plain \sl240 \fs20 K plussign operator;operator} - -}{\b\f2 +}{\f2 \tab }{\b\f2 PLUSSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 +} {\f2 operator is a prefix or infix n-ary addition operator. -\par -\par - \par -syntax: \par -}{\f4 \{}{\f3 +} {\f4 \}+ -\par -\par -or }{\f3 +} {\f4 ( \{,\}+) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**4 + 4*x**2 + 17*x + 1; \par - \par - 4 2 \par - X + 4*X + 17*X + 1 \par - \par - \par -14 + 15 + x; \par - \par - X + 29 \par - \par - \par -+(1,2,3,4,5); \par - \par - 15 \par - \par -\pard \sl240 }{\f2 }{\f3 +} {\f2 is also valid as an addition operator for } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 variables -that are of the same dimensions and for } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # minussign} - -${\footnote \pard\plain \sl240 \fs20 $ minussign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0669} - - K{\footnote \pard\plain \sl240 \fs20 K minussign operator;operator} - -}{\b\f2 -}{\f2 \tab }{\b\f2 MINUSSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 -} {\f2 operator is a prefix or infix binary subtraction operator, as well -as the unary minus operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 -} {\f4 -or }{\f3 -} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -15 - 4; \par - \par - 11 \par - \par - \par -x*(-5); \par - \par - - 5*X \par - \par - \par -a - b - 15; \par - \par - A - B - 15 \par - \par - \par --(a,4); \par - \par - A - 4 \par - \par -\pard \sl240 }{\f2 The subtraction operator is left associative, so that a - b - c is equivalent -to (a - b) - c, as shown in the third example. The subtraction operator is -also valid with } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions of the correct dimensions -and with } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # asterisk} - -${\footnote \pard\plain \sl240 \fs20 $ asterisk} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0670} - - K{\footnote \pard\plain \sl240 \fs20 K asterisk operator;operator} - -}{\b\f2 *}{\f2 \tab }{\b\f2 ASTERISK}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 *} {\f2 operator is a prefix or infix n-ary multiplication operator. -\par -\par - \par -syntax: \par -}{\f4 \{}{\f3 *} {\f4 \}+ -\par -\par -or }{\f3 *} {\f4 ( \{,\}+) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -15*3; \par - \par - 45 \par - \par - \par -24*x*yvalue*2; \par - \par - 48*X*YVALUE \par - \par - \par -*(6,x); \par - \par - 6*X \par - \par - \par -on rounded; \par - \par -3*1.5*x*x*x; \par - \par - 3 \par - 4.5*X \par - \par - \par -off rounded; \par - \par -2x**2; \par - \par - 2 \par - 2*X \par - \par -\pard \sl240 }{\f2 REDUCE assumes you are using an implicit multiplication operator when an -identifier is preceded by a number, as shown in the last line above. Since -no valid identifiers can begin with numbers, there is no ambiguity in -making this assumption. -\par -\par -The multiplication operator is also valid with } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions -of the -proper dimensions: matrices A and B -can be multiplied if -A is n x m and B is -m x p. Matrices and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s can also be -multiplied by scalars: the -result is as if each element was multiplied by the scalar. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # slash} - -${\footnote \pard\plain \sl240 \fs20 $ slash} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0671} - - K{\footnote \pard\plain \sl240 \fs20 K slash operator;operator} - -}{\b\f2 /}{\f2 \tab }{\b\f2 SLASH}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 /} {\f2 operator is a prefix or infix binary division operator or -prefix unary } -{\f2\uldb recip}{\v\f2 RECIP} -{\f2 rocal operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 /} {\f4 or - }{\f3 /} {\f4 -\par -\par -or }{\f3 /} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -20/5; \par - \par - 4 \par - \par - \par -100/6; \par - \par - 50 \par - -- \par - 3 \par - \par - \par -16/2/x; \par - \par - 8 \par - - \par - X \par - \par - \par -/b; \par - \par - 1 \par - - \par - B \par - \par - \par -/(y,5); \par - \par - Y \par - - \par - 5 \par - \par - \par -on rounded; \par - \par -35/4; \par - \par - 8.75 \par - \par - \par -/20; \par - \par - 0.05 \par - \par -\pard \sl240 }{\f2 The division operator is left associative, so that }{\f3 a/b/c} {\f2 is equivalent -to }{\f3 (a/b)/c} {\f2 . The division operator is also valid with square -} -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 expressions of the same dimensions: With A and -B both n x n matrices and B -invertible, A/B is -given by A*B^-1. -Division of a matrix by a scalar is defined, with the results being the -division of each element of the matrix by the scalar. Division of a -scalar by a matrix is defined if the matrix is invertible, and has the -effect of multiplying the scalar by the inverse of the matrix. When -}{\f3 /} {\f2 is used as a reciprocal operator for a matrix, the inverse of -the matrix is returned if it exists. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # power} - -${\footnote \pard\plain \sl240 \fs20 $ power} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0672} - - K{\footnote \pard\plain \sl240 \fs20 K power operator;operator} - -}{\b\f2 **}{\f2 \tab }{\b\f2 POWER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 **} {\f2 operator is a prefix or infix binary exponentiation operator. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 **} {\f4 - or }{\f3 **} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x**15; \par - \par - 15 \par - X \par - \par - \par -x**y**z; \par - \par - Y*Z \par - X \par - \par - \par -x**(y**z); \par - \par - Z \par - Y \par - X \par - \par - \par - **(y,4); \par - \par - 4 \par - Y \par - \par - \par -on rounded; \par - \par -2**pi; \par - \par - 8.82497782708 \par - \par -\pard \sl240 }{\f2 The exponentiation operator is left associative, so that }{\f3 a**b**c} {\f2 is -equivalent to }{\f3 (a**b)**c} {\f2 , as shown in the second example. Note -that this is not }{\f3 a**(b**c)} {\f2 , which would be right associative. -\par -\par -When } -{\f2\uldb nat}{\v\f2 NAT} -{\f2 is on (the default), REDUCE output produces raised -exponents, as shown. The symbol }{\f3 ^} {\f2 , which is the upper-case 6 on -most keyboards, may be used in the place of }{\f3 **} {\f2 . -\par -\par -A square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 may also be raised to positive and negative powers -with the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s may be raised to -fractional and floating-point powers. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # caret} - -${\footnote \pard\plain \sl240 \fs20 $ caret} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0673} - - K{\footnote \pard\plain \sl240 \fs20 K caret operator;operator} - -}{\b\f2 ^}{\f2 \tab }{\b\f2 CARET}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ^} {\f2 operator is a prefix or infix binary exponentiation operator. -It is equivalent to } -{\f2\uldb power}{\v\f2 power} -{\f2 or **. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 ^} {\f4 - or }{\f3 ^} {\f4 (,) -\par -\par -}{\f2 \par - may be any valid REDUCE expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -x^15; \par - \par - 15 \par - X \par - \par - \par -x^y^z; \par - \par - Y*Z \par - X \par - \par - \par -x^(y^z); \par - \par - Z \par - Y \par - X \par - \par - \par -^(y,4); \par - \par - 4 \par - Y \par - \par - \par -on rounded; \par - \par -2^pi; \par - \par - 8.82497782708 \par - \par -\pard \sl240 }{\f2 The exponentiation operator is left associative, so that }{\f3 a^b^c} {\f2 is -equivalent to }{\f3 (a^b)^c} {\f2 , as shown in the second example. Note -that this is }{\f3 a^(b^c)} {\f2 , which would be right associative. -\par -\par -When } -{\f2\uldb nat}{\v\f2 NAT} -{\f2 is on (the default), REDUCE output produces raised -exponents, as shown. -\par -\par -A square } -{\f2\uldb matrix}{\v\f2 MATRIX} -{\f2 may also be raised to positive -and negative powers with -the exponentiation operator (negative powers require the matrix to be -invertible). Scalar expressions and } -{\f2\uldb equation}{\v\f2 EQUATION} -{\f2 s -may be raised to fractional and floating-point powers. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # geqsign} - -${\footnote \pard\plain \sl240 \fs20 $ geqsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0674} - - K{\footnote \pard\plain \sl240 \fs20 K geqsign operator;operator} - -}{\b\f2 >=}{\f2 \tab }{\b\f2 GEQSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 >=} {\f2 is an infix binary comparison operator, which returns true if -its first argument is greater than or equal to its second argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 >=} {\f4 -\par -\par -}{\f2 \par - must evaluate to an integer or floating-point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -if (3 >= 2) then yes; \par - \par - yes \par - \par - \par -a := 15; \par - \par - A := 15 \par - \par - \par -if a >= 20 then big else small; \par - \par - \par - small \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # greater} - -${\footnote \pard\plain \sl240 \fs20 $ greater} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0675} - - K{\footnote \pard\plain \sl240 \fs20 K greater operator;operator} - -}{\b\f2 >}{\f2 \tab }{\b\f2 GREATER}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 >} {\f2 is an infix binary comparison operator that returns - true if its first argument is strictly greater than its second. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 >} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -on rounded; \par - \par -if 3.0 > 3 then write "different" else write "same"; \par - \par - \par - same \par - \par - \par -off rounded; \par - \par -a := 20; \par - \par - A := 20 \par - \par - \par -if a > 20 then write "bigger" else write "not bigger"; \par - \par - \par - not bigger \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # leqsign} - -${\footnote \pard\plain \sl240 \fs20 $ leqsign} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0676} - - K{\footnote \pard\plain \sl240 \fs20 K leqsign operator;operator} - -}{\b\f2 <=}{\f2 \tab }{\b\f2 LEQSIGN}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 <=} {\f2 is an infix binary comparison operator that returns - true if its first argument is less than or equal to its second argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <=} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 10; \par - \par - A := 10 \par - \par - \par -if a <= 10 then true; \par - \par - true \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # less} - -${\footnote \pard\plain \sl240 \fs20 $ less} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0677} - - K{\footnote \pard\plain \sl240 \fs20 K less operator;operator} - -}{\b\f2 <}{\f2 \tab }{\b\f2 LESS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -}{\f3 <} {\f2 is an infix binary logical comparison operator that -returns true if its first argument is strictly less than its second -argument. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <} {\f4 -\par -\par -}{\f2 \par - must evaluate to a number, e.g., integer, rational or -floating point number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -f := -3; \par - \par - F := -3 \par - \par - \par -if f < -3 then write "yes" else write "no"; \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 The binary comparison operators can only be used for comparisons between -numbers or variables that evaluate to numbers. The truth values returned -by such a comparison can only be used inside programming constructs, such -as } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 -or } -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 or -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # tilde} - -${\footnote \pard\plain \sl240 \fs20 $ tilde} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0678} - - K{\footnote \pard\plain \sl240 \fs20 K tilde operator;operator} - -}{\b\f2 ~}{\f2 \tab }{\b\f2 TILDE}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 ~} {\f2 is used as a unary prefix operator in the left-hand -sides of } -{\f2\uldb rule}{\v\f2 RULE} -{\f2 s to mark } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 s. A double tilde -marks an optional } -{\f2\uldb free variable}{\v\f2 Free_Variable} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # group} - -${\footnote \pard\plain \sl240 \fs20 $ group} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0679} - - K{\footnote \pard\plain \sl240 \fs20 K group command;command} - -}{\b\f2 <<}{\f2 \tab }{\b\f2 GROUP}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The }{\f3 <<} {\f2 ...}{\f3 >>} {\f2 command is a group statement, -used to group statements -together where REDUCE expects a single statement. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 <<} {\f4 \{; }{\f3 or} {\f4 - }{\f2 \}* }{\f3 >>} {\f2 -\par -\par -\par - may be any valid REDUCE statement or expression. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 2; \par - \par - A := 2 \par - \par - \par -if a < 5 then <>; \par - \par - \par - 12 \par - \par - \par -<>; \par - \par - \par - 2 \par - C + 90*C + 202 \par - ---------------- \par - 225 \par - \par -\pard \sl240 }{\f2 The value returned from a group statement is the value of the last -individual statement executed inside it. Note that when a semicolon is -placed between the last statement and the closing brackets, 0 or - nil is returned. Group statements are often used in the -consequence portions of } -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 , -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 , and -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 -clauses. They may also be used in interactive -operation to execute several statements at one time. Statements inside -the group statement are separated by semicolons or dollar signs. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # AND} - -${\footnote \pard\plain \sl240 \fs20 $ AND} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0680} - - K{\footnote \pard\plain \sl240 \fs20 K AND operator;operator} - -}{\b\f2 AND}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 and} {\f2 binary logical operator returns true if both of its -arguments are true. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 and} {\f4 -\par -\par -}{\f2 \par - must evaluate to true or nil. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 12; \par - \par - A := 12 \par - \par - \par -if numberp a and a < 15 then write a**2 else write "no"; \par - \par - \par - \par - 144 \par - \par - \par -clear a; \par - \par -if numberp a and a < 15 then write a**2 else write "no"; \par - \par - \par - \par - no \par - \par -\pard \sl240 }{\f2 Logical operators can only be used inside conditional statements, such as -} -{\f2\uldb while}{\v\f2 WHILE} -{\f2 ...}{\f3 do} {\f2 or -} -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 . }{\f3 and} {\f2 examines each of -its arguments in order, and quits, returning nil, on finding an -argument that is not true. An error results if it is used in other -contexts. -\par -\par -}{\f3 and} {\f2 is left associative: }{\f3 x and y and z} {\f2 is equivalent to -}{\f3 (x and y) and z} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # BEGIN} - -${\footnote \pard\plain \sl240 \fs20 $ BEGIN} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0681} - - K{\footnote \pard\plain \sl240 \fs20 K BEGIN command;command} - -}{\b\f2 BEGIN}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -}{\f3 begin} {\f2 is used to start a } -{\f2\uldb block}{\v\f2 block} -{\f2 statement, which is closed with -}{\f3 end} {\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 begin} {\f4 \{}{\f3 ;} {\f4 \}* }{\f3 end} {\f4 -\par -\par -}{\f2 \par - is any valid REDUCE statement. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -begin for i := 1:3 do write i end; \par - \par - \par - 1 \par - 2 \par - 3 \par - \par - \par -begin scalar n;n:=1;b:=for i:=1:4 product(x-i);return n end; \par - \par - \par - \par - 1 \par - \par - \par -b; \par - \par - 4 3 2 \par - X - 10*X + 35*X - 50*X + 24 \par - \par -\pard \sl240 }{\f2 A }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block can do actions (such as }{\f3 write} {\f2 ), but -does not -return a value unless instructed to by a } -{\f2\uldb return}{\v\f2 RETURN} -{\f2 statement, which must -be the last statement executed in the block. It is unnecessary to insert -a semicolon before the }{\f3 end} {\f2 . -\par -\par -Local variables, if any, are declared in the first statement immediately -after }{\f3 begin} {\f2 , and may be defined as }{\f3 scalar, integer,} {\f2 or -}{\f3 real} {\f2 . } -{\f2\uldb array}{\v\f2 ARRAY} -{\f2 variables declared -within a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 block -are global in every case, and } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements have global -effects. A } -{\f2\uldb let}{\v\f2 LET} -{\f2 statement involving a formal parameter affects -the calling parameter that corresponds to it. } -{\f2\uldb let}{\v\f2 LET} -{\f2 statements -involving local variables make global assignments, overwriting outside -variables by the same name or creating them if they do not exist. You -can use this feature to affect global variables from procedures, but be -careful that you do not do it inadvertently. -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # block} - -${\footnote \pard\plain \sl240 \fs20 $ block} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0682} - - K{\footnote \pard\plain \sl240 \fs20 K block command;command} - -}{\b\f2 BLOCK}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -A }{\f3 block} {\f2 is a sequence of statements enclosed by -commands } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 and } -{\f2\uldb end}{\v\f2 END} -{\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 begin} {\f4 \{}{\f3 ;} {\f4 \}* }{\f3 end} {\f4 -\par -\par -}{\f2 \par -For more details see } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 . -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # COMMENT} - -${\footnote \pard\plain \sl240 \fs20 $ COMMENT} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0683} - - K{\footnote \pard\plain \sl240 \fs20 K COMMENT command;command} - -}{\b\f2 COMMENT}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -Beginning with the word }{\f3 comment} {\f2 , all text until the next statement -terminator (}{\f3 ;} {\f2 or }{\f3 $} {\f2 ) is ignored. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -x := a**2 comment--a is the velocity of the particle;; \par - \par - \par - \par - 2 \par - X := A \par - \par -\pard \sl240 }{\f2 Note that the first semicolon ends the comment and the second one -terminates the original REDUCE statement. -\par -\par -Multiple-line comments are often needed in interactive files. The -}{\f3 comment} {\f2 command allows a normal-looking text to accompany the -REDUCE statements in the file. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # CONS} - -${\footnote \pard\plain \sl240 \fs20 $ CONS} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0684} - - K{\footnote \pard\plain \sl240 \fs20 K CONS operator;operator} - -}{\b\f2 CONS}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 cons} {\f2 operator adds a new element to the beginning of a -} -{\f2\uldb list}{\v\f2 LIST} -{\f2 . Its -operation is identical to the symbol } -{\f2\uldb dot}{\v\f2 dot} -{\f2 (dot). It can be used -infix or prefix. -\par -\par - \par -syntax: \par -}{\f4 }{\f3 cons} {\f4 (,) or }{\f3 cons} {\f4 -\par -\par -}{\f2 \par - can be any REDUCE scalar expression, including a list; -must be a list. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par - \par -liss := cons(a,\{b\}); \par - \par - \{A,B\} \par - \par - \par - \par -liss := c cons liss; \par - \par - \{C,A,B\} \par - \par - \par - \par -newliss := for each y in liss collect cons(y,list x); \par - \par - \par - \par - NEWLISS := \{\{C,X\},\{A,X\},\{B,X\}\} \par - \par - \par - \par -for each y in newliss sum (first y)*(second y); \par - \par - \par - \par - X*(A + B + C) \par - \par -\pard \sl240 }{\f2 If you want to use }{\f3 cons} {\f2 to put together two elements into a new list, -you must make the second one into a list with curly brackets or the }{\f3 list} {\f2 -command. You can also start with an empty list created by }{\f3 \{\}} {\f2 . -\par -\par -The }{\f3 cons} {\f2 operator is right associative: }{\f3 a cons b cons c} {\f2 is valid -if }{\f3 c} {\f2 is a list; }{\f3 b} {\f2 need not be a list. The list produced is -}{\f3 \{a,b,c\}} {\f2 . -\par -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # END} - -${\footnote \pard\plain \sl240 \fs20 $ END} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0685} - - K{\footnote \pard\plain \sl240 \fs20 K END command;command} - -}{\b\f2 END}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -The command }{\f3 end} {\f2 has two main uses: -\par -\par -\tab (i) -as the ending of a } -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 ; and -\par -\tab (ii) -to end input from a file. -\par -\par -In a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , there need not be a delimiter -(}{\f3 ;} {\f2 or }{\f3 $} {\f2 ) before the }{\f3 end} {\f2 , though there must be one -after it, or a right bracket matching an earlier left bracket. -\par -\par -Files to be read into REDUCE should end with }{\f3 end;} {\f2 , which must be -preceded by a semicolon (usually the last character of the previous line). -The additional semicolon avoids problems with mistakes in the files. If -you have suspended file operation by answering }{\f3 n} {\f2 to a }{\f3 pause} {\f2 -command, you are still, technically speaking, ``in" the file. Use -}{\f3 end} {\f2 to exit the file. -\par -\par -An }{\f3 end} {\f2 at the top level of a program is ignored. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # EQUATION} - -${\footnote \pard\plain \sl240 \fs20 $ EQUATION} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0686} - - K{\footnote \pard\plain \sl240 \fs20 K =;arithmetic;equal;equation;EQUATION type;type} - -}{\b\f2 EQUATION}{\f2 \tab \tab \tab \tab }{\b\f2 type}{\f2 \par -\par - - \par -\par -An }{\f3 equation} {\f2 is an expression where two algebraic expressions -are connected by the (infix) operator } -{\f2\uldb equal}{\v\f2 EQUAL} -{\f2 or by }{\f3 =} {\f2 . -For access to the components of an }{\f3 equation} {\f2 the operators -} -{\f2\uldb lhs}{\v\f2 LHS} -{\f2 , } -{\f2\uldb rhs}{\v\f2 RHS} -{\f2 or } -{\f2\uldb part}{\v\f2 PART} -{\f2 can be used. The -evaluation of the left-hand side of an }{\f3 equation} {\f2 is controlled -by the switch } -{\f2\uldb evallhseqp}{\v\f2 EVALLHSEQP} -{\f2 , while the right-hand side is -evaluated unconditionally. When an }{\f3 equation} {\f2 is part of a -logical expression, e.g. in a } -{\f2\uldb if}{\v\f2 IF} -{\f2 or } -{\f2\uldb while}{\v\f2 WHILE} -{\f2 statement, -the equation is evaluated by subtracting both sides can comparing -the result with zero. -\par -\par -Equations occur in many contexts, e.g. as arguments of the } -{\f2\uldb sub}{\v\f2 SUB} -{\f2 -operator and in the arguments and the results -of the operator } -{\f2\uldb solve}{\v\f2 SOLVE} -{\f2 . An equation can be member of a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 -and you may assign an equation to a variable. Elementary arithmetic is supported -for equations: if } -{\f2\uldb evallhseqp}{\v\f2 EVALLHSEQP} -{\f2 is on, you may add and subtract -equations, and you can combine an equation with a scalar expression by -addition, subtraction, multiplication, division and raise an equation -to a power. - \par -examples: \par -\pard \tx3420 }{\f4 \par -on evallhseqp; \par - \par -u:=x+y=1$ \par - \par -v:=2x-y=0$ \par - \par -2*u-v; \par - \par - - 3*y=-2 \par - \par - \par -ws/3; \par - \par - 2 \par - y=-- \par - 3 \par - \par -\pard \sl240 }{\f2 \par -\par -Important: the equation must occur in the leftmost term of such an expression. -For other operations, e.g. taking function values of both sides, use the -} -{\f2\uldb map}{\v\f2 MAP} -{\f2 operator. -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FIRST} - -${\footnote \pard\plain \sl240 \fs20 $ FIRST} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0687} - - K{\footnote \pard\plain \sl240 \fs20 K decomposition;list;FIRST operator;operator} - -}{\b\f2 FIRST}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - - \par -\par -The }{\f3 first} {\f2 operator returns the first element of a } -{\f2\uldb list}{\v\f2 LIST} -{\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 first} {\f4 () or }{\f3 first} {\f4 -\par -\par -}{\f2 \par - must be a non-empty list to avoid an error message. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -alist := \{a,b,c,d\}; \par - \par - ALIST := \{A,B,C,D\} \par - \par - \par -first alist; \par - \par - A \par - \par - \par -blist := \{x,y,\{ww,aa,qq\},z\}; \par - \par - BLIST := \{X,Y,\{WW,AA,QQ\},Z\} \par - \par - \par -first third blist; \par - \par - WW \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FOR} - -${\footnote \pard\plain \sl240 \fs20 $ FOR} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0688} - - K{\footnote \pard\plain \sl240 \fs20 K loop;FOR command;command} - -}{\b\f2 FOR}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -The }{\f3 for} {\f2 command is used for iterative loops. There are many -possible forms it can take. -\par -\par -\pard \tx3420 }{\f4 \par - / \ \par - / |STEP UNTIL| \ \par - |:=| || \par -FOR| | : | | \par - | \ / | \par - |EACH IN | \par - \ / \par - \par - where ::= DO|PRODUCT|SUM|COLLECT|JOIN. \par -\pard \sl240 }{\f2 can be any valid REDUCE identifier except }{\f3 t} {\f2 or -}{\f3 nil} {\f2 , , and can be any expression -that evaluates to a positive or negative integer. must be a -valid } -{\f2\uldb list}{\v\f2 LIST} -{\f2 structure. -The action taken must be one of the actions shown -above, each of which is followed by a single REDUCE expression, statement -or a } -{\f2\uldb group}{\v\f2 group} -{\f2 (}{\f3 <<} {\f2 ...}{\f3 >>} {\f2 ) or } -{\f2\uldb block}{\v\f2 block} -{\f2 -(} -{\f2\uldb begin}{\v\f2 BEGIN} -{\f2 ...} -{\f2\uldb end}{\v\f2 END} -{\f2 ) statement. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -for i := 1:10 sum i; \par - \par - \par - \par - 55 \par - \par - \par -for a := -2 step 3 until 6 product a; \par - \par - \par - \par - -8 \par - \par - \par -a := 3; \par - \par - A := 3 \par - \par - \par -for iter := 4:a do write iter; \par - \par -m := 0; \par - \par - M := 0 \par - \par - \par -for s := 10 step -1 until 3 do <>; \par - \par -m; \par - \par - 520 \par - \par - \par -for each x in \{q,r,s\} sum x**2; \par - \par - 2 2 2 \par - Q + R + S \par - \par - \par -for i := 1:4 collect 1/i; \par - \par - \par - \par - 1 1 1 \par - \{1,-,-,-\} \par - 2 3 4 \par - \par - \par -for i := 1:3 join list solve(x**2 + i*x + 1,x); \par - \par - \par - \par - SQRT(3)*I + 1 \par - \{\{X= --------------, \par - 2 \par - SQRT(3)*I - 1 \par - X= --------------\} \par - 2 \par - \{X=-1\}, \par - SQRT(5) + 3 SQRT(5) - 3 \par - \{X= - -----------,X=-----------\}\} \par - 2 2 \par - \par -\pard \sl240 }{\f2 The behavior of each of the five action words follows: -\par -\par -\pard \tx3420 }{\f4 \par - Action Word Behavior \par -Keyword Argument Type Action \par - do statement, command, group Evaluates its argument once \par - or block for each iteration of the loop, \par - not saving results \par -collect expression, statement, Evaluates its argument once for \par - command, group, block, list each iteration of the loop, \par - storing the results in a list \par - which is returned by the for \par - statement when done \par - join list or an operator which Evaluates its argument once for \par - produces a list each iteration of the loop, \par - appending the elements in each \par - individual result list onto the \par - overall result list \par -product expression, statement, Evaluates its argument once for \par - command, group or block each iteration of the loop, \par - multiplying the results together \par - and returning the overall product \par - sum expression, statement, Evaluates its argument once for \par - command, group or block each iteration of the loop, \par - adding the results together and \par - returning the overall sum \par -\pard \sl240 }{\f2 For number-driven }{\f3 for} {\f2 statements, if the ending limit is smaller -than the beginning limit (larger in the case of negative steps) the action -statement is not executed at all. The iterative variable is local to the -}{\f3 for} {\f2 statement, and does not affect the value of an identifier with -the same name. For list-driven }{\f3 for} {\f2 statements, if the list is -empty, the action statement is not executed, but no error occurs. -\par -\par -You can use nested }{\f3 for} {\f2 statements, with the inner }{\f3 for} {\f2 -statement after the action keyword. You must make sure that your inner -statement returns an expression that the outer statement can handle. -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # FOREACH} - -${\footnote \pard\plain \sl240 \fs20 $ FOREACH} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0689} - - K{\footnote \pard\plain \sl240 \fs20 K loop;FOREACH command;command} - -}{\b\f2 FOREACH}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - - \par -\par -}{\f3 foreach} {\f2 is a synonym for the }{\f3 for each} {\f2 variant of the -} -{\f2\uldb for}{\v\f2 FOR} -{\f2 construct. It is designed to iterate down a list, and an -error will occur if a list is not used. The use of }{\f3 for each} {\f2 is -preferred to }{\f3 foreach} {\f2 . -\par -\par - \par -syntax: \par -}{\f4 }{\f3 foreach} {\f4 in -\par -\par -where ::= }{\f3 do | product | sum | collect | join} {\f4 -\par -\par -}{\f2 \par - \par -examples: \par -\pard \tx3420 }{\f4 \par -foreach x in \{q,r,s\} sum x**2; \par - \par - 2 2 2 \par - Q + R + S \par - \par -\pard \sl240 }{\f2 - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GEQ} - -${\footnote \pard\plain \sl240 \fs20 $ GEQ} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0690} - - K{\footnote \pard\plain \sl240 \fs20 K GEQ operator;operator} - -}{\b\f2 GEQ}{\f2 \tab \tab \tab \tab }{\b\f2 operator}{\f2 \par -\par - -The }{\f3 geq} {\f2 operator is a binary infix or prefix logical operator. It -returns true if its first argument is greater than or equal to its second -argument. As an infix operator it is identical with }{\f3 >=} {\f2 . - \par -syntax: \par -}{\f4 \par -\par -}{\f3 geq} {\f4 (,) or -}{\f3 geq} {\f4 -\par -\par -}{\f2 \par - can be any valid REDUCE expression that evaluates to a -number. -\par -\par - \par -examples: \par -\pard \tx3420 }{\f4 \par -a := 20; \par - \par - A := 20 \par - \par - \par -if geq(a,25) then write "big" else write "small"; \par - \par - \par - \par - small \par - \par - \par -if a geq 20 then write "big" else write "small"; \par - \par - \par - \par - big \par - \par - \par -if (a geq 18) then write "big" else write "small"; \par - \par - \par - \par - big \par - \par -\pard \sl240 }{\f2 Logical operators can only be used in conditional statements such as -\par -\par -} -{\f2\uldb if}{\v\f2 IF} -{\f2 ...}{\f3 then} {\f2 ...}{\f3 else} {\f2 or -} -{\f2\uldb repeat}{\v\f2 REPEAT} -{\f2 ...}{\f3 until} {\f2 . -\par -\par -\par - - -\page - - -#{\footnote \pard\plain \sl240 \fs20 # GOTO} - -${\footnote \pard\plain \sl240 \fs20 $ GOTO} - -+{\footnote \pard\plain \sl240 \fs20 + g4:0691} - - K{\footnote \pard\plain \sl240 \fs20 K GOTO command;command} - -}{\b\f2 GOTO}{\f2 \tab \tab \tab \tab }{\b\f2 command}{\f2 \par -\par - -Inside a }{\f3 begin} {\f2 ...}{\f3 end} {\f2 } -{\f2\uldb block}{\v\f2 block} -{\f2 , }{\f3 goto} {\f2 , or -preferably, }{\f3 go to} {\f2 , transfers flow of control to a labeled statement. - \par -syntax: \par -}{\f4 \par -\par -}{\f3 go to} {\f4 or }{\f3 goto} {\f4 -\par -\par -}{\f2 \par - is of the form