---
name: "MPI_Aint_add"
section: "3"
platform: "linux"
package: "openmpi"
version: "5.0.11-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/MPI_Aint_add"
---

# MPI\_Aint\_add(3)

*MPI\_Aint\_add*, *MPI\_Aint\_diff* - Portable functions for arithmetic on MPI\_Aint values.

## SYNTAX

### C Syntax

```
#include <mpi.h>
MPI_Aint MPI_Aint_add(MPI_Aint base, MPI_Aint disp)
MPI_Aint MPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2)
```

### Fortran Syntax

```
USE MPI
! or the older form: INCLUDE 'mpif.h'
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_ADD(BASE, DISP)
        INTEGER(KIND=MPI_ADDRESS_KIND) BASE, DISP
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_DIFF(ADDR1, ADDR2)
        INTEGER(KIND=MPI_ADDRESS_KIND) ADDR1, ADDR2
```

### Fortran 2008 Syntax

```
USE mpi_f08
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_ADD(BASE, DISP)
        INTEGER(KIND=MPI_ADDRESS_KIND) BASE, DISP
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_DIFF(ADDR1, ADDR2)
        INTEGER(KIND=MPI_ADDRESS_KIND) ADDR1, ADDR2
```

## INPUT PARAMETERS

- •

  **base**: Base address (integer).

- •

  **disp**: Displacement (integer).

- •

  **addr1**: Minuend address (integer).

- •

  **addr2**: Subtrahend address (integer).

## DESCRIPTION

*MPI\_Aint\_add* produces a new MPI\_Aint value that is equivalent to the sum of the *base* and *disp* arguments, where *base* represents a base address returned by a call to *MPI\_Get\_address* and *disp* represents a signed integer displacement. The resulting address is valid only at the process that generated *base*, and it must correspond to a location in the same object referenced by *base*, as described in MPI-3.1 section 4.1.12. The addition is performed in a manner that results in the correct MPI\_Aint representation of the output address, as if the process that originally produced *base* had called:

```
MPI_Get_address ((char *) base + disp, &result);
```

*MPI\_Aint\_diff* produces a new MPI\_Aint value that is equivalent to the difference between *addr1* and *addr2* arguments, where *addr1* and *addr2* represent addresses returned by calls to *MPI\_Get\_address*.  The resulting address is valid only at the process that generated *addr1* and *addr2*, and *addr1* and *addr2* must correspond to locations in the same object in the same process, as described in MPI-3.1 section 4.1.12. The difference is calculated in a manner that results in the signed difference from *addr1* to *addr2*, as if the process that originally produced the addresses had called **(char \*) addr1** - **(char \*) addr2** on the addresses initially passed to *MPI\_Get\_address*.

**SEE ALSO:**

- •

  *MPI\_Get\_address*

## COPYRIGHT

2003-2026, The Open MPI Community
