Math::NoCarry - Perl extension for no carry arithmetic

# NAME

Math::NoCarry - Perl extension for no carry arithmetic

# SYNOPSIS

`        use Math::NoCarry qw(:all);`
`        my \$sum        = add( 123, 456 );`
`        my \$difference = subtract( 123, 456 );`
`        my \$product    = multiply( 123, 456 );`

# DESCRIPTION

No carry arithmetic doesn't allow you to carry digits to the next column. For example, if you add 8 and 4, you normally expect the answer to be 12, but that 1 digit is a carry. In no carry arithmetic you can't do that, so the sum of 8 and 4 is just 2. In effect, this is addition modulo 10 in each column. I discard all of the carry digits in this example:

```          1234
+ 5678
------
6802```

For multiplication, the result of pair-wise multiplication of digits is the modulo 10 value of their normal, everyday multiplication.

```        123
x 456
-----
8   6 x 3
2    6 x 2
6     6 x 1```
```         5    5 x 3
0     5 x 2
5      5 x 1```
```        2     4 x 3
8      4 x 2
+ 4       4 x 1
-------
43878```

Since multiplication and subtraction are actually types of additions, you can multiply and subtract like this as well.

No carry arithmetic is both associative and commutative.

## Functions

As of version 1.11, all of these functions are exportable on demand, or with the tag `:all` to get them all at once.

multiply( A, B )
Returns the no carry product of A and B.

Return A if it is the only argument ( A x 1 );

add( A, B )
Returns the no carry sum of the positive numbers A and B.

Returns A if it is the only argument ( A + 0 )

Returns false if either number is negative.

subtract( A, B )
Returns the no carry difference of the postive numbers A and B.

Returns A if it is the only argument ( A - 0 )

Returns false if either number is negative.

# BUGS

* none reported yet :)

# TO DO

* this could be a full object package with overloaded +, *, and - operators

* it would be nice if i could give the functions more than two arguments.

* addition and subtraction don't do negative numbers.

# SOURCE AVAILABILITY

This source is part of a SourceForge project which always has the latest sources in SVN, as well as all of the previous releases.

`        http://sourceforge.net/projects/brian-d-foy/`

If, for some reason, I disappear from the world, one of the other members of the project can shepherd this module appropriately.

# AUTHOR

brian d foy, `<bdfoy@cpan.org>`

# COPYRIGHT AND LICENSE

Copyright (c) 2002-2007 brian d foy. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

 Math::NoCarry - Perl extension for no carry arithmetic