`moo`

—

Marco's Object Oriented calculator

`moo` |
[ `-lsu` ]
[`-b`
`base` ]
[`expr` ]
[`...` ] |

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.
`-l`

- Output bit labels for binary results.
`-s`

- Output base 10 numbers as signed.
`-u`

- Output base 10 numbers as unsigned.

bc(1),

dc(1),

expr(1)
`moo`

was written for the public domain by

Ray Lai ⟨ray@cyth.net⟩ after
much whining by Marco Peereboom.

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.''

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

Like

bc(1),

`moo`

parses ``3--2'' without error.