123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914 |
- \section{Arithmetic Operations}
- \begin{Introduction}{ARITHMETIC\_OPERATIONS}
- 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.
- \end{Introduction}
- \begin{Operator}{ABS}
- \index{absolute value}
- The \name{abs} operator returns the absolute value of its argument.
- \begin{Syntax}
- \name{abs}\(\meta{expression}\)
- \end{Syntax}
- \meta{expression} can be any REDUCE scalar expression.
- \begin{Examples}
- abs(-a); & ABS(A) \\
- abs(-5); & 5 \\
- a := -10; & A := -10 \\
- abs(a); & 10 \\
- abs(-a); & 10
- \end{Examples}
- \begin{Comments}
- If the argument has had no numeric value assigned to it, such as an
- identifier or polynomial, \name{abs} returns an expression involving
- \name{abs} of its argument, doing as much simplification of the argument
- as it can, such as dropping any preceding minus sign.
- \end{Comments}
- \end{Operator}
- \begin{Switch}{ADJPREC}
- \index{input}\index{precision}
- When a real number is input, it is normally truncated to the
- \nameref{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 \name{adjprec}
- (for \meta{adjust precision}) can be turned on. While on, \name{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.
- \begin{Examples}
- on rounded; \\
- 1.23456789012345; & 1.23456789012 \\
- on adjprec; \\
- 1.23456789012345; \\
- *** precision increased to 15 \\
- 1.23456789012345
- \end{Examples}
- \end{Switch}
- \begin{Operator}{ARG}
- \index{complex}\index{polar angle}
- If \nameref{complex} and \nameref{rounded} are on, and {\em arg}
- evaluates to a complex number, \name{arg} returns the polar angle of {\em
- arg}, measured in radians. Otherwise an expression in {\em arg} is
- returned.
- \begin{Examples}
- arg(3+4i) & ARG(3 + 4*I) \\
- on rounded, complex; \\
- ws; & 0.927295218002 \\
- arg a; & ARG(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{CEILING}
- \index{integer}
- \begin{Syntax}
- \name{ceiling}\(\meta{expression}\)
- \end{Syntax}
- 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 \nameref{fix}. For non-numeric
- arguments, the value is an expression in the original operator.
- \begin{Examples}
- ceiling 3.4; & 4 \\
- fix 3.4; & 3 \\
- ceiling(-5.2); & -5 \\
- fix(-5.2); & -5 \\
- ceiling a; & CEILING(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{CHOOSE}
- \name{choose}(\meta{m},\meta{m}) returns the number of ways of choosing
- \meta{m} objects from a collection of \meta{n} distinct objects --- in other
- words the binomial coefficient. If \meta{m} and \meta{n} are not positive
- integers, or $m > n$, the expression is returned unchanged.
- than or equal to
- \begin{Examples}
- choose(2,3); & 3 \\
- choose(3,2); & CHOOSE(3,2) \\
- choose(a,b); & CHOOSE(A,B)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{DEG2DMS}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{deg2dms}\(\meta{expression}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{expression} is a real number, the
- operator \name{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.
- \begin{Examples}
- deg2dms 60; & DEG2DMS(60) \\
- on rounded; \\
- ws; & \{60,0,0\} \\
- deg2dms 42.4; & \{42,23,60.0\} \\
- deg2dms a; & DEG2DMS(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{DEG2RAD}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{deg2rad}\(\meta{expression}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{expression} is a real number, the
- operator \name{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.
- \begin{Examples}
- deg2rad 60; & DEG2RAD(60) \\
- on rounded; \\
- ws; & 1.0471975512 \\
- deg2rad a; & DEG2RAD(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{DIFFERENCE}
- The \name{difference} operator may be used as either an infix or prefix binary
- subtraction operator. It is identical to \name{-} as a binary operator.
- \begin{Syntax}
- \name{difference}\(\meta{expression},\meta{expression}\) or
- \meta{expression} \name{difference} \meta{expression}
- \{\name{difference} \meta{expression}\}\optional
- \end{Syntax}
- \meta{expression} can be a number or any other valid REDUCE expression. Matrix
- expressions are allowed if they are of the same dimensions.
- \begin{Examples}
- difference(10,4); & 6 \\
- 15 difference 5 difference 2; & 8 \\
- a difference b; & A - B
- \end{Examples}
- \begin{Comments}
- The \name{difference} operator is left associative, as shown in the second
- example above.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{DILOG}
- \index{dilogarithm function}
- The \name{dilog} operator is known to the differentiation and integration
- operators, but has numeric value attached only at \name{dilog(0)}. Dilog is
- defined by
- \begin{TEX}
- \begin{displaymath}
- dilog(x) = -\int{{log(x)\,dx}\over{x-1}}
- \end{displaymath}
- \end{TEX}
- \begin{INFO}
- dilog(x) = -int(log(x),x)/(x-1)
- \end{INFO}
- \begin{Examples}
- df(dilog(x**2),x); & - \rfrac{2*LOG(X^{2})*X}{X^{2} - 1}\\
- int(dilog(x),x); & DILOG(X)*X - DILOG(X) + LOG(X)*X - X \\
- dilog(0); & \rfrac{PI^{2}}{6}
- \end{Examples}
- \end{Operator}
- \begin{Operator}{DMS2DEG}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{dms2deg}\(\meta{list}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{list} is a list of three real numbers,
- the operator \name{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.
- \begin{Examples}
- dms2deg \{42,3,7\}; & DMS2DEG(\{42,3,7\}) \\
- on rounded; \\
- ws; & 42.0519444444 \\
- dms2deg a; & DMS2DEG(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{DMS2RAD}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{dms2rad}\(\meta{list}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{list} is a list of three real numbers,
- the operator \name{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.
- \begin{Examples}
- dms2rad \{42,3,7\}; & DMS2RAD(\{42,3,7\}) \\
- on rounded; \\
- ws; & 0.733944887421 \\
- dms2rad a; & DMS2RAD(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{FACTORIAL}
- \index{gamma}
- \begin{Syntax}
- \name{factorial}\(\meta{expression}\)
- \end{Syntax}
- If the argument of \name{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 \nameref{gamma} operator
- is available in the \nameref{Special Function Package}.
- \begin{Examples}
- factorial 4; & 24 \\
- factorial 30 ; & 265252859812191058636308480000000 \\
- factorial(a) ; FACTORIAL(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{FIX}
- \index{integer}
- \begin{Syntax}
- \name{fix}\(\meta{expression}\)
- \end{Syntax}
- The operator \name{fix} returns the integer part of its argument, if that
- argument has a numerical value. For positive numbers, this is equivalent
- to \nameref{floor}, and, for negative numbers, \nameref{ceiling}. For
- non-numeric arguments, the value is an expression in the original operator.
- \begin{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)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{FIXP}
- \index{integer}
- The \name{fixp} logical operator returns true if its argument is an integer.
- \begin{Syntax}
- \name{fixp}\(\meta{expression}\) or \name{fixp} \meta{simple\_expression}
- \end{Syntax}
- \meta{expression} can be any valid REDUCE expression, \meta{simple\_expression}
- must be a single identifier or begin with a prefix operator.
- \begin{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
- \end{Examples}
- \begin{Comments}
- Logical operators can only be used inside conditional expressions such as
- \name{if}\ldots\name{then} or \name{while}\ldots\name{do}.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{FLOOR}
- \index{integer}
- \begin{Syntax}
- \name{floor}\(\meta{expression}\)
- \end{Syntax}
- 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 \nameref{fix}. For non-numeric
- arguments, the value is an expression in the original operator.
- \begin{Examples}
- floor 3.4; & 3 \\
- fix 3.4; & 3 \\
- floor(-5.2); & -6 \\
- fix(-5.2); & -5 \\
- floor a; & FLOOR(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{EXPT}
- The \name{expt} operator is both an infix and prefix binary exponentiation
- operator. It is identical to \name{^} or \name{**}.
- \begin{Syntax}
- \name{expt}\(\meta{expression},\meta{expression}\)
- or \meta{expression} \name{expt} \meta{expression}
- \end{Syntax}
- \begin{Examples}
- a expt b; & A^{B} \\
- expt(a,b); & A^{B} \\
- (x+y) expt 4; & X^{4} + 4*X^{3}*Y + 6*X^{2}*Y^{2} + 4*X*Y^{3} + Y^{4}
- \end{Examples}
- \begin{Comments}
- 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.
- \name{expt} is left associative. In other words, \name{a expt b expt c} is
- equivalent to \name{a expt (b*c)}, not \name{a expt (b expt c)}, which
- would be right associative.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{GCD}
- \index{greatest common divisor}\index{polynomial}
- The \name{gcd} operator returns the greatest common divisor of two
- polynomials.
- \begin{Syntax}
- \name{gcd}\(\meta{expression},\meta{expression}\)
- \end{Syntax}
- \meta{expression} must be a polynomial (or integer), otherwise an error
- occurs.
- \begin{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
- \end{Examples}
- \begin{Comments}
- The operator \name{gcd} described here provides an explicit means to find the
- gcd of two expressions. The switch \name{gcd} described below simplifies
- expressions by finding and canceling gcd's at every opportunity. When
- the switch \nameref{ezgcd} is also on, gcd's are figured using the EZ GCD
- algorithm, which is usually faster.
- %%% The \nameref{heugcd} switch is also available, providing
- %%% gcd's by the Heuristic algorithm.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{LN}
- \index{logarithm}
- \begin{Syntax}
- \name{ln}\(\meta{expression}\)
- \end{Syntax}
- \meta{expression} can be any valid scalar REDUCE expression.
- The \name{ln} operator returns the natural logarithm of its argument.
- However, unlike \nameref{log}, there are no algebraic rules associated
- with it; it will only evaluate when \nameref{rounded} is on, and the
- argument is a real number.
- \begin{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
- \end{Examples}
- \begin{Comments}
- Because of the restricted algebraic properties of \name{ln}, users are
- advised to use \nameref{log} whenever possible.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{LOG}
- \index{logarithm}
- The \name{log} operator returns the natural logarithm of its argument.
- \begin{Syntax}
- \name{log}\(\meta{expression}\) or \name{log} \meta{expression}
- \end{Syntax}
- \meta{expression} can be any valid scalar REDUCE expression.
- \begin{Examples}
- log(x); & LOG(X) \\
- log 4; & LOG(4) \\
- log(e); & 1 \\
- on rounded; \\
- log 4; & 1.38629436112
- \end{Examples}
- \begin{Comments}
- \name{log} returns a numeric value only when \nameref{rounded} is on. In that
- case, use of a negative argument for \name{log} results in an error
- message. No error is given on a negative argument when REDUCE is not in
- that mode.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{LOGB}
- \index{logarithm}
- \begin{Syntax}
- \name{logb}\(\meta{expression}\,\meta{integer}\)
- \end{Syntax}
- \meta{expression} can be any valid scalar REDUCE expression.
- The \name{logb} operator returns the logarithm of its first argument using
- the second argument as base. However, unlike \nameref{log}, there are no
- algebraic rules associated with it; it will only evaluate when
- \nameref{rounded} is on, and the first argument is a real number.
- \begin{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
- \end{Examples}
- \end{Operator}
- \begin{Operator}{MAX}
- \index{maximum}
- The operator \name{max} is an n-ary prefix operator, which returns the largest
- value in its arguments.
- \begin{Syntax}
- \name{max}\(\meta{expression}\{,\meta{expression}\}\optional\)
- \end{Syntax}
- \meta{expression} must evaluate to a number. \name{max} of an empty list
- returns 0.
- \begin{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
- \end{Examples}
- \end{Operator}
- \begin{Operator}{MIN}
- \index{minimum}
- The operator \name{min} is an n-ary prefix operator, which returns the
- smallest value in its arguments.
- \begin{Syntax}
- \name{min}\(\meta{expression}\{,\meta{expression}\}\optional\)
- \end{Syntax}
- \meta{expression} must evaluate to a number. \name{min} of an empty list
- returns 0.
- \begin{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
- \end{Examples}
- \end{Operator}
- \begin{Operator}{MINUS}
- The \name{minus} operator is a unary minus, returning the negative of its
- argument. It is equivalent to the unary \name{-}.
- \begin{Syntax}
- \name{minus}\(\meta{expression}\)
- \end{Syntax}
- \meta{expression} may be any scalar REDUCE expression.
- \begin{Examples}
- minus(a); & - A \\
- minus(-1); & 1 \\
- minus((x+1)**4); & - (X^{4} + 4*X^{3} + 6*X^{2} + 4*X + 1)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{NEXTPRIME}
- \index{prime number}
- \begin{Syntax}
- \name{nextprime}\(\meta{expression}\)
- \end{Syntax}
- If the argument of \name{nextprime} is an integer, the least prime greater
- than that argument is returned. Otherwise, a type error results.
- \begin{Examples}
- nextprime 5001; & 5003 \\
- nextprime(10^30); & 1000000000000000000000000000057 \\
- nextprime a; & ***** A invalid as integer
- \end{Examples}
- \end{Operator}
- \begin{Switch}{NOCONVERT}
- Under normal circumstances when \name{rounded} is on, \REDUCE\ converts the
- number 1.0 to the integer 1. If this is not desired, the switch
- \name{noconvert} can be turned on.
- \begin{Examples}
- on rounded; \\
- 1.0000000000001; & 1 \\
- on noconvert; \\
- 1.0000000000001; & 1.0 \\
- \end{Examples}
- \end{Switch}
- \begin{Operator}{NORM}
- \index{complex}
- \begin{Syntax}
- \name{norm}\(\meta{expression}\)
- \end{Syntax}
- If \name{rounded} is on, and the argument is a real number, \meta{norm}
- returns its absolute value. If \name{complex} is also on, \meta{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.
- \begin{Examples}
- norm (-2); & NORM(-2) \\
- on rounded;\\
- ws; & 2.0 \\
- norm(3+4i); & NORM(4*I+3) \\
- on complex;\\
- ws; & 5.0\\
- \end{Examples}
- \end{Operator}
- \begin{Operator}{PERM}
- \index{permutation}
- \begin{Syntax}
- perm(\meta{expression1},\meta{expression2})
- \end{Syntax}
- If \meta{expression1} and \meta{expression2} evaluate to positive integers,
- \name{perm} returns the number of permutations possible in selecting
- \meta{expression1} objects from \meta{expression2} objects.
- In other cases, an expression in the original operator is returned.
- \begin{Examples}
- perm(1,1); & 1 \\
- perm(3,5); & 60 \\
- perm(-3,5); & PERM(-3,5) \\
- perm(a,b); & PERM(A,B)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{PLUS}
- The \name{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. \nameref{plussign}, which has the identical effect, should be
- used instead.
- \begin{Syntax}
- \name{plus}\(\meta{expression},\meta{expression}\{,\meta{expression}\}
- \optional\) or \\
- \meta{expression} \name{plus} \meta{expression} \{\name{plus} \meta{expression}\}\optional
- \end{Syntax}
- \meta{expression} can be any valid REDUCE expression, including matrix
- expressions of the same dimensions.
- \begin{Examples}
- a plus b plus c plus d; & A + B + C + D \\
- 4.5 plus 10; & \rfrac{29}{2} \\\\
- plus(x**2,y**2); & X^{2} + Y^{2}
- \end{Examples}
- \end{Operator}
- \begin{Operator}{QUOTIENT}
- The \name{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 \nameref{recip}rocal operator. It is identical to \name{/} and
- \nameref{slash}.
- \begin{Syntax}
- \name{quotient}\(\meta{expression},\meta{expression}\) or
- \meta{expression} \name{quotient} \meta{expression} or
- \name{quotient}\(\meta{expression}\) or
- \name{quotient} \meta{expression}
- \end{Syntax}
- \meta{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.
- \begin{Examples}
- quotient(a,x+1); & \rfrac{A}{X + 1} \\
- 7 quotient 17; & \rfrac{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)); & \begin{multilineoutput}{6cm}
- M(1,1) := A;
- M(1,2) := B;
- M(2,1) := C
- M(2,2) := D
- \end{multilineoutput}\\
- inverse := quotient m; & \begin{multilineoutput}{8cm}
- INVERSE(1,1) := \rfrac{D}{A*D - B*C}
- INVERSE(1,2) := - \rfrac{B}{A*D - B*C}
- INVERSE(2,1) := - \rfrac{C}{A*D - B*C}
- INVERSE(2,2) := \rfrac{A}{A*D - B*C}
- \end{multilineoutput}
- \end{Examples}
- \begin{Comments}
- The \name{quotient} operator is left associative: \name{a quotient b quotient c}
- is equivalent to \name{(a quotient b) quotient c}.
- If a matrix argument to the unary \name{quotient} is not invertible, or if the
- second matrix argument to the binary quotient is not invertible, an error
- message is given.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{RAD2DEG}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{rad2deg}\(\meta{expression}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{expression} is a real number, the
- operator \name{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.
- \begin{Examples}
- rad2deg 1; & RAD2DEG(1) \\
- on rounded; \\
- ws; & 57.2957795131 \\
- rad2deg a; & RAD2DEG(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{RAD2DMS}
- \index{degrees}\index{radians}
- \begin{Syntax}
- \name{rad2dms}\(\meta{expression}\)
- \end{Syntax}
- In \nameref{rounded} mode, if \meta{expression} is a real number, the
- operator \name{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.
- \begin{Examples}
- rad2dms 1; & RAD2DMS(1) \\
- on rounded; \\
- ws; & \{57,17,44.8062470964\} \\
- rad2dms a; & RAD2DMS(A)
- \end{Examples}
- \end{Operator}
- \begin{Operator}{RECIP}
- \name{recip} is the alphabetical name for the division operator \name{/}
- or \nameref{slash} used as a unary operator. The use of \name{/} is preferred.
- \begin{Examples}
- recip a; & \rfrac{1}{A} \\
- recip 2; & \rfrac{1}{2}
- \end{Examples}
- \end{Operator}
- \begin{Operator}{REMAINDER}
- \index{polynomial}
- The \name{remainder} operator returns the remainder after its first
- argument is divided by its second argument.
- \begin{Syntax}
- \name{remainder}\(\meta{expression},\meta{expression}\)
- \end{Syntax}
- \meta{expression} can be any valid REDUCE polynomial, and is not limited
- to numeric values.
- \begin{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)
- \end{Examples}
- \begin{Comments}
- 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 \name{remainder} contains a denominator not equal to
- 1, an error occurs.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{ROUND}
- \index{integer}
- \begin{Syntax}
- \name{round}\(\meta{expression}\)
- \end{Syntax}
- If its argument has a numerical value, \name{round} rounds it to the
- nearest integer. For non-numeric arguments, the value is an expression in
- the original operator.
- \begin{Examples}
- round 3.4; & 3 \\
- round 3.5; & 4 \\
- round a; & ROUND(A)
- \end{Examples}
- \end{Operator}
- \begin{Command}{SETMOD}
- \index{modular}
- The \name{setmod} command sets the modulus value for subsequent \nameref{modular}
- arithmetic.
- \begin{Syntax}
- \name{setmod} \meta{integer}
- \end{Syntax}
- \meta{integer} must be positive, and greater than 1. It need not be a prime
- number.
- \begin{Examples}
- setmod 6; & 1 \\
- on modular; \\
- 16; & 4 \\
- x^2 + 5x + 7; & X^{2} + 5*X + 1 \\
- x/3; & \rfrac{X}{3} \\
- setmod 2; & 6 \\
- (x+1)^4; & X^{4} + 1 \\
- x/3; & X
- \end{Examples}
- \begin{Comments}
- \name{setmod} returns the previous modulus, or 1 if none has been set
- before. \name{setmod} only has effect when \nameref{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.
- \end{Comments}
- \end{Command}
- \begin{Operator}{SIGN}
- \begin{Syntax}
- \name{sign} \meta{expression}
- \end{Syntax}
- \name{sign} tries to evaluate the sign of its argument. If this
- is possible \name{sign} returns one of 1, 0 or -1. Otherwise, the result
- is the original form or a simplified variant.
- \begin{Examples}
- sign(-5) & -1\\
- sign(-a^2*b) & -SIGN(B)\\
- \end{Examples}
- \begin{Comments}
- Even powers of formal expressions are assumed to be positive only as long
- as the switch \nameref{complex} is off.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{SQRT}
- \index{square root}
- The \name{sqrt} operator returns the square root of its argument.
- \begin{Syntax}
- \name{sqrt}\(\meta{expression}\)
- \end{Syntax}
- \meta{expression} can be any REDUCE scalar expression.
- \begin{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); &
- 3*SQRT(D)*SQRT(C)*SQRT(B)*SQRT(A)*SQRT(3)*C^{2}*D
- \end{Examples}
- \begin{Comments}
- \name{sqrt} checks its argument for squared factors and removes them.
- % If the \name{reduced} switch is on, square roots of a product become a
- % product of square roots.
- Numeric values for square roots that are not exact integers are given only
- when \nameref{rounded} is on.
- Please note that \name{sqrt(a**2)} is given as \name{a}, which may be
- incorrect if \name{a} eventually has a negative value. If you are
- programming a calculation in which this is a concern, you can turn on the
- \nameref{precise} switch, which causes the absolute value of the square root
- to be returned.
- \end{Comments}
- \end{Operator}
- \begin{Operator}{TIMES}
- The \name{times} operator is an infix or prefix n-ary multiplication
- operator. It is identical to \name{*}.
- \begin{Syntax}
- \meta{expression} \name{times} \meta{expression} \{\name{times} \meta{expression}\}\optional
- or \name{times}\(\meta{expression},\meta{expression} \{,\meta{expression}\}\optional\)
- \end{Syntax}
- \meta{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.
- \begin{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; &
- \begin{multilineoutput}{6cm}
- [0 15 5 ]
- [ ]
- [0 30 10 ]
- [ ]
- [0 15*X 5*X]
- \end{multilineoutput}
- \end{Examples}
- \end{Operator}
|