home | help
ARIBAS(1)		     General Commands Manual		       ARIBAS(1)

NAME
     aribas - Multiprecision Arithmetic Interpreter

SYNOPSIS
     aribas [options] [<ari-file> [<arg1> <arg2> ...]]

     This  man	page  was  written for Debian since the orginal software did not
     contain a man page.

DESCRIPTION
     Aribas is an interactive interpreter suitable for	big  integer  arithmetic
     and  multiprecision  floating point arithmetic.  It has a syntax similar to
     Pascal or Modula-2, but contains also features from other programming  lan-
     guages like C, Lisp, Oberon.

USAGE
     The  simplest way to use aribas is as a calculator for (big integer) arith-
     metic. After aribas is started, it displays a prompt ==> and  is  ready  to
     accept  input.  Simply enter the expression you want to calculate, followed
     by a full stop, and then press RETURN, for example

	 ==> 123 + 456*789.

     Aribas answers

	 -: 359907

     The symbol -: introduces the result.
     IMPORTANT.  To mark the end of your input, you must always type a full stop
     `.'  and then press RETURN.

     You can assign the result of a calculation to a variable, as in

	 ==> F6 := 2**64 + 1.
	 -: 18446_74407_37095_51617

     This calculates the 6th Fermat number (** denotes exponentiation)	and  as-
     signs it to the variable F6 (note that aribas is case sensitive, so this is
     not  the  same  as f6).  Later you can use this variable for example in the
     expression

	 ==> 123**(F6 - 1) mod F6.
	 -: 688_66214_58712_63971

     which shows (by Fermat's theorem) that F6 is not a prime number.
     The three most recent results are stored in the pseudo variables _, __, and
     ___. For example you can store the last result in the  variable  x  by  the
     command

	 ==> x := _.
	 -: 688_66214_58712_63971

     As  you  can  see	in  the  above examples, aribas uses the underscore _ to
     structure the output of big integers (>= 2**32). Also for input of integers
     you may use the underscore, the only condition is that  immediately  before
     and after the underscore there are digits, example:

	 ==> z := 123_4567_890.
	 -: 1234567890

     Here  the	output	contains  no underscore, which shows that z is less than
     2**32.

     Aribas has  several  built-in  functions  for  factorization,  for  example
     rho_factorize, which uses Pollard's rho algorithm.

	 ==> rho_factorize(F6).

	 working ..
	 factor found after 512 iterations

	 -: 274177

     To find the remaining cofactor, give the command

	 ==> x := F6 div _.
	 -: 6728_04213_10721

     To test whether this factor is prime, Rabin's probabilistic test rab_prime-
     test can be applied:

	 ==> rab_primetest(x).
	 -: true

     The  function rho_factorize is good for finding small factors (say up to 10
     decimal digits); for more complicated factorization tasks a  more	powerful
     algorithm like the quadratic sieve qs_factorize should be used

	 ==> qs_factorize(2**128+1).

     (Depending  on the power of your computer, it will take a few seconds up to
     a few minutes to get a prime factor of the 7th Fermat number.)

   Control structures
     The for loop and the while loop in aribas have a syntax as in Modula-2. For
     example, the following command sequence calculates the factorial of 100.

	 ==> x := 1;
	     for i := 2 to 100 do
		 x := x*i;
	     end;
	     x.

     As you can see in this example, the input may extend over several lines.

     The above for loop is equivalent to the following while loop

	 ==> x := 1; i := 2;
	     while i <= 100 do
		 x := x*i;
		 inc(i);
	     end;
	     x.

     The branching construct
     if ...  then ...  elsif ...  else ...  end
     has also the same syntax as in Modula-2.

   Multiprecision floating point arithmetic
     Aribas supports different types of floating point numbers which are  inter-
     nally represented with mantissas of different bit-length:

	     single_float    32 bits
	     double_float    64 bits
	     long_float     128 bits

     and several higher precisions up to an implementation dependent limit, typ-
     ically  1024  or  4096  bits,  which  can	be  determined	by  the function
     max_floatprec(). By default, when calculating with  numbers  of  data  type
     real,  single_floats  are	used. This corresponds to a precision of 9 to 10
     decimal places.  A precision of 4096 bits corresponds to over 1200  decimal
     places.

     The precision can be changed using the function set_floatprec. The function
     takes  one  integer argument, which is the desired precision in bits. It is
     automatically rounded to the next higher available value. For example,  af-
     ter

	 ==> set_floatprec(100).
	 -: 128

     the floating point precision is 128 bits and you can calculate

	 ==> arctan(sqrt(3)).
	 -: 1.04719_75511_96597_74615_42144_61093_16762_8

	 ==> _/pi.
	 -: 0.33333_33333_33333_33333_33333_33333_33333_33

   User defined functions
     The user can define his or her own functions. A typical example looks like

	 ==> function fac(n: integer): integer;
	     var
		 x,i: integer;
	     begin
		 x := 1;
		 for i := 2 to n do
		     x := x*i;
		 end;
		 return x;
	     end.

     If you have entered this correctly, aribas echoes the function name

	 -: fac

     and  from	now  on  you can use fac in the same way as a built-in function,
     e.g.

	 ==> fac(32).
	 -: 2_63130_83693_36935_30167_21801_21600_00000

     Note that inside function definitions all used variables must be explicitly
     declared, whereas on top level of the aribas interpreter variables  can  be
     simply  created  by  assignments. Here is another example, which shows some
     other data types supported by aribas:

	 ==> function sqrt_list(n: integer): array of real;
	     var
		 vec: array[n] of real;
		 i: integer;
	     begin
		 for i := 1 to n do
		     vec[i-1] := sqrt(i);
		 end;
		 return vec;
	     end.

     This function returns an array of the square roots of the integers  from  1
     to n, for example

	 ==> sqrt_list(10).
	 -: (1.00000000, 1.41421356, 1.73205081, 2.00000000,
	 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.00000000,
	 3.16227766)

     In  a bigger programming project where you need several functions you would
     not enter them directly at the aribas prompt but prepare the function defi-
     nitions with an external text editor and save them in a file  with the  ex-
     tension  .ari  ,  for  example  abcd.ari  . This file can then be loaded by
     aribas using the command

	 ==> load("abcd").

     If there is a syntax error in the file, you get an  error	message  of  the
     form

	 error in line <= 23 of loaded file
	 if: end expected

     which  tells  you	(in  this example) that there is an error in the if con-
     struct in line 23 or earlier in the file. (Note that the error messages are
     sometimes not very precise.) You can then correct the error  and  load  the
     file again.

   Online help
     The command

	 ==> symbols(aribas).

     returns  a  list  of all keywords and names of builtin functions of aribas.
     This list has about 180 entries, and begins and ends as follows:

     (ARGV, _, __, ___,  abs,  alloc,  and,  arccos,  arcsin,  arctan,	arctan2,
     aribas,  array,  atof, atoi, begin, binary, bit_and, bit_clear, bit_length,
     ...... , tolower, toupper, transcript, true, trunc, type, user,  var,  ver-
     sion, while, write, write_block, write_byte, writeln)

     For most of the symbols in this list, you can get a short online help using
     the function help(). For example, the command

	 ==> help(ARGV).

     gives an information on the builtin variable ARGV, whereas

	 ==> help(while).

     describes	the  syntax of the while loop. If you need more information than
     that contained in the online help, consult the documentation which  can  be
     found in /usr/share/doc/aribas.

   How to exit
     To end an aribas session, type exit at the aribas prompt

	 ==> exit

     and then press the RETURN (ENTER) key.

     If  you  don't  want  to leave aribas, but want to break out of an infinite
     loop or a calculation that lasts too long, type CONTROL-C (if you are  run-
     ning  aribas  from within Emacs, you must press CONTROL-C twice). This will
     (in most cases) stop the current  calculation  and  return  to  the  aribas
     prompt.

     When  you are not using the Emacs interface but the command line version of
     aribas, you sometimes get into the following situation: Some previous  line
     contains  a typing error, but you cannot return to that line to correct it.
     In this case you should simply type a full stop `.' , followed  by  RETURN.
     You will get an error message which you can safely ignore, and a new prompt
     ==> appears, allowing you to try again.

COMMAND LINE ARGUMENTS
     aribas [options] [<ari-file> [<arg1> <arg2> ...]]

   options
     The following options are available:

     -q     (quiet  mode)  Suppresses  all  messages  to the screen (version no,
	    copyright notice, etc.) when aribas is started

     -v     (verbose mode, default) Does not suppress  messages  to  the  screen
	    when aribas is started.

     -c <cols>
	    aribas  does its own line breaking when writing to the screen.  Nor-
	    mally it supposes that the screen (or the  window  in  which  aribas
	    runs) has 80 columns. With the -c option you can set another number,
	    which  must  be between 40 and 160 (in decimal representation).  For
	    example, if you run aribas in an Xterm window with 72  columns,  use
	    the  option  -c72  (or -c 72, the space between -c and the number is
	    optional).

     -m <mem>
	    Here <mem> is a number (in decimal representation)	between  64  and
	    16000. This number indicates how many Kilobytes of RAM aribas should
	    use  for  the  aribas heap. The default value depends on the options
	    used when aribas was compiled. Typically, under UNIX or LINUX it  is
	    6 Megabytes, corresponding to -m6000

     -h <path of help file>
	    The  online help of aribas depends on a file aribas.hlp which should
	    be situated  in the range of the environment variable PATH. If  this
	    is not the case you can specify the exact path of the help file with
	    the  -h  option. If for example the file aribas.hlp is in the direc-
	    tory /usr/local/lib, use the option -h /usr/local/lib (the space af-
	    ter -h is not necessary).  The -h option can also  be  used  if  the
	    help  file	has  a	different  name. If the help file is named help-
	    aribas   and   lies   in   the    directory    /home/joe/ari,    use
	    -h/home/joe/ari/help-aribas.

	    With  a properly installed Debian package of aribas it should not be
	    necessary to use this option.

     -p <ari-search-path>
	    With this option you can specify a search  path  for  loading  files
	    with  aribas  source  code. <ari-search-path> may be either the (ab-
	    solute) pathname of one directory or several pathnames separated  by
	    colons.  Suppose that you have called aribas with the option

		 -p/usr/local/lib/aribas:~/ari/examples

	    and that your home directory is /home/alice/. Then the command

		 ==> load("factor").

	    will search the file factor.ari first in the current directory, then
	    in	the  directory	/usr/local/lib/aribas  and  finally in /home/al-
	    ice/ari/examples.

     -b     Batch mode when loading an aribas source code file from the  command
	    line, see below.

     One letter options which require no arguments may be merged, for example

	 aribas -q -b

     is equivalent to

	 aribas -qb

   Further command line arguments
     <ari-file>
	    The  next  command line argument after the options is interpreted as
	    the name of a file with aribas source code. If the file name has the
	    extension .ari, this extension may be omitted. The file is loaded as
	    if the command load("<ari-file>") had been given after the start  of
	    aribas at the aribas prompt. If the file is not found in the current
	    directory  it is searched in the directories specified by the -p op-
	    tion.  If the option -b was given, the file is loaded and  executed.
	    Afterwards	aribas	exits  without	showing it's prompt. If the file
	    cannot be loaded completely because of an error, aribas exits  imme-
	    diately after the error message.

     <arg1> <arg2> ...
	    When further command line arguments follow <ari-file>, they are col-
	    lected  (as  strings)  together  with  <ari-file> in the vector ARGV
	    which can be accessed from within  aribas.	 Example:  If  you  call
	    aribas with the command line

		 aribas startup 4536 eisenstein

	    and the current directory contains the file startup.ari, then aribas
	    loads it and the vector ARGV has the form

		==> ARGV.
		-: ("startup", "4536", "eisenstein")

	    If	you  need  some arguments as numbers and not as strings, you can
	    transform them by atoi (or atof); in our example

		==> x := atoi(ARGV[1]).
		-: 4536

	    will do it. The length of the  vector  ARGV  can  be  determined  by
	    length(ARGV).

RUNNING ARIBAS WITHIN EMACS
     You  can  run  aribas  from  within  Emacs by giving the command (in Emacs'
     minibuffer)

	    M-x run-aribas

     (If you don't have a META key, use ESC x instead of M-x) Then  aribas  will
     be loaded into an Emacs window with name *aribas* and you can edit your in-
     put to aribas with the usual Emacs commands.

     If your input ends with a full stop '.' and you press RETURN, it is sent to
     aribas.  If however your complete input does not end with a full stop, (for
     example  in response to a readln), the input is sent to aribas by C-j (Con-
     trol-j) or C-c RETURN.

     If you want to repeat a previous input, M-p  (or  ESC  p)	cycles	backward
     through input history, and M-n (or ESC n) cycles forward.

     A Control-C is sent to aribas by C-c C-c (press C-c twice).

     It is also possible to start aribas from Emacs with command line arguments.
     For this purpose the command

	    C-u M-x run-aribas

     has to be given. Then a prompt

	    run-aribas: aribas

     appears  in  the Minibuffer of Emacs and you can complete the command line,
     for example

	    run-aribas: aribas startup 4536 eisenstein

     (see above).

CONFIGURATION FILE
     Options for running aribas can be specified also using a configuration file
     with name .arirc.	Aribas searches for a configuration file in the  follow-
     ing order:

	 1) the current directory
	 2) the home directory of the user

     There  is a third possibility: You can define an environment variable ARIRC
     containing the name of the configuration file (which may be different  from
     .arirc), including the full path.

     In  the  configuration  file  you	can specify all command line options de-
     scribed above which begin with a - sign, however a separate  line	must  be
     used for every single option. Lines beginning with the character # or empty
     lines are ignored.  In addition to the options described above, the config-
     uration file may contain aribas source code. For this purpose there must be
     a line reading

     -init

     Then  everything  after this line is treated as aribas source code and exe-
     cuted when aribas is started.

     The existence of a configuration file for aribas does not exclude the  pos-
     sibility  to give command line arguments. If an option (e.g. the -m option)
     is specified both in the configuration file and the command line  but  with
     different	values,  then  the  specification  at the command line is valid.
     Analogously, a -v option on the command line overrides a -q option  in  the
     configuration  file.   If there is -init code in the configuration file and
     an <ari-file> argument at the command line, then the -init code is executed
     first and afterwards the <ari-file> is loaded and its code executed.

FILES
     $ARIRC, .arirc, $HOME/.arirc

	    Optional configuration file.

ENVIRONMENT VARIABLES
     $ARIRC
	    Location of the optional configuration file.

SEE ALSO
     emacs(1)

     More   information   on   how   to   use	aribas	 can   be    found    in
     /usr/share/doc/aribas.

     The      aribas	  home	    page      is      http://www.mathematik.uni-
     muenchen.de/~forster/sw/aribas.html.

BUGS
     Bug reports should be sent by email to

	 forster@mathematik.uni-muenchen.de

AUTHOR
     Otto Forster <forster@mathematik.uni-muenchen.de>	is  the  author  of  the
     aribas  program.  This  man  page was compiled by Ralf Treinen <treinen@de-
     bian.org> from the aribas documentation for the Debian package  of  aribas,
     and supplemented by the author.

ARIBAS				  February 2001 		       ARIBAS(1)

home | help