ad_binary

View page source

AD Binary Arithmetic Operators

Syntax

z = x Op y

Purpose

Performs arithmetic operations where either x or y has type AD < Base > or VecAD<Base>::reference .

Op

The operator Op is one of the following

Op

Meaning

+

z is x plus y

-

z is x minus y

*

z is x times y

/

z is x divided by y

Base

The type Base is determined by the operand that has type AD < Base > or VecAD < Base >:: reference .

x

The operand x has the following prototype

const Type & x

where Type is VecAD < Base >:: reference , AD < Base > , Base , or double .

y

The operand y has the following prototype

const Type & y

where Type is VecAD < Base >:: reference , AD < Base > , Base , or double .

z

The result z has the following prototype

Type z

where Type is AD < Base > .

Operation Sequence

This is an atomic_base AD of Base operation and hence it is part of the current AD of Base operation sequence .

Zero Special Cases

Suppose that an AD value is identically zero . Then the following results will be identically zero no matter what other is: value * other, other * value, value / other. This may be unexpected when other is nan (or when it is zero in the division case). This is closely related to the azmul function.

Example

The following files contain examples and tests of these functions. Each test returns true if it succeeds and false otherwise.

Derivative

If \(f\) and \(g\) are Base functions

Addition

\[\D{[ f(x) + g(x) ]}{x} = \D{f(x)}{x} + \D{g(x)}{x}\]

Subtraction

\[\D{[ f(x) - g(x) ]}{x} = \D{f(x)}{x} - \D{g(x)}{x}\]

Multiplication

\[\D{[ f(x) * g(x) ]}{x} = g(x) * \D{f(x)}{x} + f(x) * \D{g(x)}{x}\]

Division

\[\D{[ f(x) / g(x) ]}{x} = [1/g(x)] * \D{f(x)}{x} - [f(x)/g(x)^2] * \D{g(x)}{x}\]