This man page was written for Debian since the orginal software did not contain a man page.
==> 123 + 456*789.Aribas answers
-: 359907The 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_51617This calculates the 6th Fermat number (** denotes exponentiation) and assigns 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_63971which 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_63971As 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. -: 1234567890Here 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 -: 274177To find the remaining cofactor, give the command
==> x := F6 div _. -: 6728_04213_10721To test whether this factor is prime, Rabin's probabilistic test rab_primetest can be applied:
==> rab_primetest(x). -: trueThe 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.)
==> 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
single_float 32 bits double_float 64 bits long_float 128 bitsand several higher precisions up to an implementation dependent limit, typically 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, after
==> set_floatprec(100). -: 128the 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
==> 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
-: facand 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_00000Note 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 definitions with an external text editor and save them in a file with the extension .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 expectedwhich tells you (in this example) that there is an error in the if construct 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.
==> 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, version, 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.
==> exitand 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 running 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.
One letter options which require no arguments may be merged, for example
aribas -q -b
is equivalent to
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 input 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 (Control-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-aribashas to be given. Then a prompt
run-aribas: aribasappears in the Minibuffer of Emacs and you can complete the command line, for example
run-aribas: aribas startup 4536 eisenstein(see above).
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 described 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 configuration file may contain aribas source code. For this purpose there must be a line reading
Then everything after this line is treated as aribas source code and executed when aribas is started.
The existence of a configuration file for aribas does not exclude the possibility 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.
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.