dwww Home | Manual pages | Find package

ginsh(1)                        The GiNaC Group                       ginsh(1)

NAME
       ginsh - GiNaC Interactive Shell

SYNPOSIS
       ginsh [file...]

DESCRIPTION
       ginsh  is  an  interactive  frontend for the GiNaC symbolic computation
       framework.  It is intended as a tool for testing and experimenting with
       GiNaC's features, not as a replacement for traditional interactive com-
       puter algebra systems. Although it can do many things these traditional
       systems  can do, ginsh provides no programming constructs like loops or
       conditional expressions. If you need this functionality you are advised
       to write your program in C++, using the "native" GiNaC class framework.

USAGE
   INPUT FORMAT
       After  startup,  ginsh  displays  a prompt ("> ") signifying that it is
       ready to accept your input. Acceptable input are  numeric  or  symbolic
       expressions  consisting  of  numbers  (e.g.   42, 2/3 or 0.17), symbols
       (e.g.  x or result), mathematical operators like + and   *,  and  func-
       tions (e.g.  sin or normal).  Every input expression must be terminated
       with either a semicolon (;) or a colon (:).  If terminated with a semi-
       colon,  ginsh will evaluate the expression and print the result to std-
       out. If terminated with a colon, ginsh will only evaluate  the  expres-
       sion but not print the result. It is possible to enter multiple expres-
       sions on one line. Whitespace (spaces, tabs, newlines) can  be  applied
       freely  between  tokens.  To quit ginsh, enter quit or exit, or type an
       EOF (Ctrl-D) at the prompt.

   COMMENTS
       Anything following a double slash (//) up to the end of the  line,  and
       all  lines  starting  with a hash mark (#) are treated as a comment and
       ignored.

   NUMBERS
       ginsh accepts numbers in the usual decimal notations. This includes ar-
       bitrary precision integers and rationals as well as floating point num-
       bers in standard or scientific notation  (e.g.   1.2E6).   The  general
       rule  is that if a number contains a decimal point (.), it is an (inex-
       act) floating point number; otherwise it is an (exact) integer  or  ra-
       tional.  Integers can be specified in binary, octal, hexadecimal or ar-
       bitrary (2-36) base by prefixing them with #b, #o, #x, or #nR , respec-
       tively.

   SYMBOLS
       Symbols  are made up of a string of alphanumeric characters and the un-
       derscore (_), with the first character being non-numeric. E.g.   a  and
       mu_1  are  acceptable symbol names, while 2pi is not. It is possible to
       use symbols with the same names as functions (e.g.  sin); ginsh is able
       to distinguish between the two.

       Symbols can be assigned values by entering
              symbol = expression;

       To unassign the value of an assigned symbol, type
              unassign('symbol');

       Assigned  symbols  are automatically evaluated (= replaced by their as-
       signed value) when they are used. To refer to the  unevaluated  symbol,
       put  single  quotes (') around the name, as demonstrated for the "unas-
       sign" command above.

       Symbols are considered to be in the complex  domain  by  default,  i.e.
       they are treated as if they stand in for complex numbers. This behavior
       can be changed by using the keywords real_symbols  and  complex_symbols
       and affects all newly created symbols.

       The following symbols are pre-defined constants that cannot be assigned
       a value by the user:

              Pi      Archimedes' Constant

              Catalan Catalan's Constant

              Euler   Euler-Mascheroni Constant

              I       sqrt(-1)

              FAIL    an object of the GiNaC "fail" class

       There is also the special
              Digits
       symbol that controls the numeric precision of calculations with inexact
       numbers.   Assigning  an integer value to digits will change the preci-
       sion to the given number of decimal places.

   WILDCARDS
       The has(), find(), match() and subs()  functions  accept  wildcards  as
       placeholders for expressions. These have the syntax
              $number
       for example $0, $1 etc.

   LAST PRINTED EXPRESSIONS
       ginsh provides the three special symbols
              %, %% and %%%
       that refer to the last, second last, and third last printed expression,
       respectively.  These are handy if you want to use the results of previ-
       ous computations in a new expression.

   OPERATORS
       ginsh  provides  the  following  operators,  listed in falling order of
       precedence:

              !       postfix factorial

              ^       powering

              +       unary plus

              -       unary minus

              *       multiplication

              /       division

              +       addition

              -       subtraction

              <       less than

              >       greater than

              <=      less or equal

              >=      greater or equal

              ==      equal

              !=      not equal

              =       symbol assignment

       All binary operators are left-associative, with the exception of ^  and
       =  which  are  right-associative. The result of the assignment operator
       (=) is its right-hand side, so it's possible to assign multiple symbols
       in one expression (e.g.  a = b = c = 2;).

   LISTS
       Lists  are used by the subs and lsolve functions. A list consists of an
       opening curly brace ({), a (possibly empty) comma-separated sequence of
       expressions, and a closing curly brace (}).

   MATRICES
       A  matrix consists of an opening square bracket ([), a non-empty comma-
       separated sequence of matrix rows, and a closing  square  bracket  (]).
       Each  matrix row consists of an opening square bracket ([), a non-empty
       comma-separated sequence of expressions, and a closing  square  bracket
       (]).   If the rows of a matrix are not of the same length, the width of
       the matrix becomes that of the longest row and shorter rows are  filled
       up at the end with elements of value zero.

   FUNCTIONS
       A function call in ginsh has the form
              name(arguments)
       where  arguments  is  a  comma-separated sequence of expressions. ginsh
       provides a couple of built-in functions and also "imports" all symbolic
       functions defined by GiNaC and additional libraries. There is no way to
       define your own functions other than linking ginsh  against  a  library
       that defines symbolic GiNaC functions.

       ginsh  provides Tab-completion on function names: if you type the first
       part of a function name, hitting Tab will complete the name  if  possi-
       ble.  If  the part you typed is not unique, hitting Tab again will dis-
       play a list of matching functions.  Hitting Tab  twice  at  the  prompt
       will display the list of all available functions.

       A  list  of the built-in functions follows. They nearly all work as the
       respective GiNaC methods of the same name, so I will not describe  them
       in detail here. Please refer to the GiNaC documentation.

              charpoly(matrix, symbol) - characteristic polynomial of a matrix
              coeff(expression,  object, number) - extracts coefficient of ob-
              ject^number from a polynomial
              collect(expression, object-or-list) - collects  coefficients  of
              like powers (result in recursive form)
              collect_distributed(expression, list) - collects coefficients of
              like powers (result in distributed form)
              collect_common_factors(expression)  -  collects  common  factors
              from the terms of sums
              conjugate(expression) - complex conjugation
              content(expression, symbol) - content part of a polynomial
              decomp_rational(expression,  symbol)  - decompose rational func-
              tion into polynomial and proper rational function
              degree(expression, object) - degree of a polynomial
              denom(expression) - denominator of a rational function
              determinant(matrix) - determinant of a matrix
              diag(expression...)  - constructs diagonal matrix
              diff(expression, symbol [, number]) - partial differentiation
              divide(expression, expression) - exact polynomial division
              evalf(expression) - evaluates an expression to a floating  point
              number
              evalm(expression)  - evaluates sums, products and integer powers
              of matrices
              expand(expression) - expands an expression
              factor(expression) - factorizes an expression (univariate)
              find(expression, pattern) - returns a list of all occurrences of
              a pattern in an expression
              fsolve(expression,  symbol,  number,  number) - numerically find
              root of a real-valued function within an interval
              gcd(expression, expression) - greatest common divisor
              has(expression, pattern) - returns "1" if the  first  expression
              contains the pattern as a subexpression, "0" otherwise
              integer_content(expression) - integer content of a polynomial
              inverse(matrix) - inverse of a matrix
              is(relation)  -  returns "1" if the relation is true, "0" other-
              wise (false or undecided)
              lcm(expression, expression) - least common multiple
              lcoeff(expression, object) - leading coefficient of a polynomial
              ldegree(expression, object) - low degree of a polynomial
              lsolve(equation-list, symbol-list)  -  solve  system  of  linear
              equations
              map(expression,  pattern)  - apply function to each operand; the
              function to be applied is specified as a pattern with  the  "$0"
              wildcard standing for the operands
              match(expression,  pattern) - check whether expression matches a
              pattern; returns a list of wildcard substitutions or  "FAIL"  if
              there is no match
              nops(expression) - number of operands in expression
              normal(expression) - rational function normalization
              numer(expression) - numerator of a rational function
              numer_denom(expression)  - numerator and denumerator of a ratio-
              nal function as a list
              op(expression, number) - extract operand from expression
              power(expr1, expr2)  -  exponentiation  (equivalent  to  writing
              expr1^expr2)
              prem(expression, expression, symbol) - pseudo-remainder of poly-
              nomials
              primpart(expression, symbol) - primitive part of a polynomial
              quo(expression, expression, symbol) - quotient of polynomials
              rank(matrix) - rank of a matrix
              rem(expression, expression, symbol) - remainder of polynomials
              resultant(expression, expression, symbol)  -  resultant  of  two
              polynomials with respect to symbol s
              series(expression, relation-or-symbol, order) - series expansion
              series_to_poly(series)  -  convert a series into a polynomial by
              dropping the Order() term
              sprem(expression, expression, symbol) - sparse  pseudo-remainder
              of polynomials
              sqrfree(expression  [, symbol-list]) - square-free factorization
              of a polynomial
              sqrfree_parfrac(expression, symbol) - square-free partial  frac-
              tion decomposition of rational function
              sqrt(expression) - square root
              subs(expression, relation-or-list)
              subs(expression,  look-for-list,  replace-by-list)  - substitute
              subexpressions (you may use wildcards)
              tcoeff(expression, object) - trailing coefficient of  a  polyno-
              mial
              time(expression)  - returns the time in seconds needed to evalu-
              ate the given expression
              trace(matrix) - trace of a matrix
              transpose(matrix) - transpose of a matrix
              unassign('symbol') -  unassign  an  assigned  symbol  (mind  the
              quotes, please!)
              unit(expression, symbol) - unit part of a polynomial

   SPECIAL COMMANDS
       To exit ginsh, enter
              quit
       or
              exit

       ginsh  can display a (short) help for a given topic (mostly about func-
       tions and operators) by entering
              ?topic
       Typing
              ??
       will display a list of available help topics.

       The command
              print(expression);
       will print a dump of GiNaC's internal representation for the given  ex-
       pression.   This  is  useful for debugging and for learning about GiNaC
       internals.

       The command
              print_latex(expression);
       prints a LaTeX representation of the given expression.

       The command
              print_csrc(expression);
       prints the given expression in a way that can be used in  a  C  or  C++
       program.

       The command
              iprint(expression);
       prints the given expression (which must evaluate to an integer) in dec-
       imal, octal, and hexadecimal representations.

       Finally, the shell escape
              !  [command  [arguments]]
       passes the given command and optionally arguments to the shell for exe-
       cution.  With  this  method, you can execute shell commands from within
       ginsh without having to quit.

EXAMPLES
       > a = x^2-x-2;
       -2-x+x^2
       > b = (x+1)^2;
       (x+1)^2
       > s = a/b;
       (x+1)^(-2)*(-2-x+x^2)
       > diff(s, x);
       (2*x-1)*(x+1)^(-2)-2*(x+1)^(-3)*(-x+x^2-2)
       > normal(s);
       (x-2)*(x+1)^(-1)
       > x = 3^50;
       717897987691852588770249
       > s;
       717897987691852588770247/717897987691852588770250
       > Digits = 40;
       40
       > evalf(s);
       0.999999999999999999999995821133292704384960990679
       > unassign('x');
       x
       > s;
       (x+1)^(-2)*(-x+x^2-2)
       > series(sin(x),x==0,6);
       1*x+(-1/6)*x^3+1/120*x^5+Order(x^6)
       > lsolve({3*x+5*y == 7}, {x, y});
       {x==-5/3*y+7/3,y==y}
       > lsolve({3*x+5*y == 7, -2*x+10*y == -5}, {x, y});
       {x==19/8,y==-1/40}
       > M = [ [a, b], [c, d] ];
       [[-x+x^2-2,(x+1)^2],[c,d]]
       > determinant(M);
       -2*d-2*x*c-x^2*c-x*d+x^2*d-c
       > collect(%, x);
       (-d-2*c)*x+(d-c)*x^2-2*d-c
       > solve quantum field theory;
       parse error at quantum
       > quit

DIAGNOSTICS
       parse error at foo
              You entered something which ginsh was unable  to  parse.  Please
              check the syntax of your input and try again.

       argument num to function must be a type
              The  argument number num to the given function must be of a cer-
              tain type (e.g. a symbol, or a list).  The  first  argument  has
              number 0, the second argument number 1, etc.

AUTHOR
       The GiNaC maintainers <https://www.ginac.de/>.

SEE ALSO
       GiNaC  Tutorial - An open framework for symbolic computation within the
       C++ programming language

       CLN - A Class Library for Numbers, Bruno Haible

COPYRIGHT
       Copyright © 1999-2023 Johannes Gutenberg Universität Mainz, Germany

       This program is free software; you can redistribute it and/or modify it
       under  the  terms of the GNU General Public License as published by the
       Free Software Foundation; either version 2 of the License, or (at  your
       option) any later version.

       This  program  is  distributed  in the hope that it will be useful, but
       WITHOUT ANY  WARRANTY;  without  even  the  implied  warranty  of  MER-
       CHANTABILITY  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
       Public License for more details.

       You should have received a copy of the GNU General Public License along
       with  this  program;  if not, write to the Free Software Foundation, 51
       Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

GiNaC 1.8.6                      January, 2000                        ginsh(1)

Generated by dwww version 1.15 on Sat Jun 29 02:01:05 CEST 2024.