MOO(1)

NAME
moo - Marco's Object Oriented calculator

SYNOPSIS
moo [-su] [-b base] [expr] [...]

DESCRIPTION
A simple calculator that accepts C-like syntax as input. Calculations are done on expr, if given. Otherwise, the standard input is used.

Numbers can be entered in hexadecimal (0xbeef), decimal (1984), octal (007), and binary (0b1001). All numerical operators (+, -, *, /, %), bit operators (|, ^, &, ~, <<, >>), and logical operators (==, !=, <, >, <=, >=, !, &&, ||) are supported.

Output will be in the same bases as the input, unless a different base was specified (see -b flag below). If only one number is input, the result is printed in all bases.

The options are:

-b base
    Output numbers in base format. base can be 2, 8, 10, 16, or `all'. Multiple bases may be specified by giving the -b flag multiple times.

-s  Output base 10 numbers as signed.

-u  Output base 10 numbers as unsigned.

ENVIRONMENT

TMPDIR
    Specifies a directory for temporary files to be created. The default is /tmp.

SEE ALSO
bc(1), dc(1), expr(1)

AUTHORS
moo was written for the public domain by Ray Lai <ray@cyth.net> after much whining by Marco Peereboom.

CAVEATS
Integer overflows are not checked. Marco says, ``I don't think you should call the integer overflows a bug but a feature. You can use it to test signed unsigned issues.''

BUGS
Calculations are limited to the size of a 64-bit integer.

Like bc(1), moo parses ``3--2'' without error.