---
name: "Math::NoCarry"
section: "3pm"
platform: "linux"
package: "libmath-nocarry-perl"
version: "1.117-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::NoCarry"
---

# Math::NoCarry(3pm)

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 positive 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 in GitHub:

```
        https://github.com/briandfoy/math-nocarry
```

## AUTHOR

brian d foy, `"<briandfoy@pobox.com>"`

## COPYRIGHT AND LICENSE

Copyright © 2002-2025, brian d foy \<briandfoy@pobox.com\>. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.
