% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/multilife_ch12.R
\name{joint_life_annuities}
\alias{joint_life_annuities}
\alias{adotxyn}
\alias{axyn}
\alias{adotxy}
\alias{axy}
\title{Joint-life annuities}
\usage{
adotxyn(x, y, n, i, tbl = NULL, model = NULL, ...)

axyn(x, y, n, i, tbl = NULL, model = NULL, ...)

adotxy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)

axy(x, y, i, tbl = NULL, model = NULL, ..., k_max = 5000L, tol = 1e-12)
}
\arguments{
\item{x}{Age of the first life. May be scalar or vector.}

\item{y}{Age of the second life. May be scalar or vector.}

\item{n}{Nonnegative integer term. May be scalar or vector.}

\item{i}{Effective annual interest rate. May be scalar or vector.}

\item{tbl}{Optional life table object.}

\item{model}{Optional parametric survival model.}

\item{...}{Additional parameters passed to the survival model.}

\item{k_max}{Maximum summation horizon used for non-terminating parametric
survival models.}

\item{tol}{Positive convergence tolerance for whole-life summations.}
}
\value{
A numeric vector of annuity actuarial present values.
}
\description{
Computes temporary and whole-life joint-life annuities-due and
annuities-immediate for two independent lives.
}
\details{
\code{adotxyn()} computes an \eqn{n}-year temporary joint-life
annuity-due.

\code{axyn()} computes an \eqn{n}-year temporary joint-life
annuity-immediate.

\code{adotxy()} computes a whole-life joint-life annuity-due.

\code{axy()} computes a whole-life joint-life annuity-immediate.


All calculations assume independence between the two future lifetimes.

The temporary annuity-due is
\deqn{
\ddot{a}_{xy:\overline{n}|}
=
\sum_{k=0}^{n-1} v^k\,{}_kp_{xy}.
}

The temporary annuity-immediate is
\deqn{
a_{xy:\overline{n}|}
=
\sum_{k=1}^{n} v^k\,{}_kp_{xy}.
}

For life-table calculations, the whole-life sums terminate at the last
duration supported jointly by the two lives. For parametric models, the
sums are evaluated until convergence or until \code{k_max} is reached.
}
\examples{
adotxyn(
  x = 40,
  y = 50,
  n = 10,
  i = 0.05,
  model = "uniform",
  omega = 100
)

axyn(
  x = 40,
  y = 50,
  n = 10,
  i = 0.05,
  model = "uniform",
  omega = 100
)

adotxy(
  x = 40,
  y = 50,
  i = 0.05,
  model = "uniform",
  omega = 100
)

axy(
  x = 40,
  y = 50,
  i = 0.05,
  model = "uniform",
  omega = 100
)

}
