# Crossany

## Function Prototype

/* Crossany */
/* Type: math */
/* Input arrays: 2    Options: 0    Output arrays: 1 */
/* Inputs: real, real */
/* Options: none */
/* Outputs: crossany */
int ti_crossany_start(TI_REAL const *options);
int ti_crossany(int size,
TI_REAL const *const *inputs,
TI_REAL const *options,
TI_REAL *const *outputs);

## Description

This documentation is still a work in progress. It has omissions, and it probably has errors too. If you see any issues, or have any general feedback, please get in touch.

Crossany is a simple function that indicates when two input arrays cross each other.

When given two inputs, A and B, cross returns 1 for the periods that A crosses above B.

$$crossany_{t} = \begin{cases} 1 & \mathrm{if} \; a_{t} > b_{t} \; \mathrm{and} \; a_{t-1} \leq b_{t-1} \\ 1 & \mathrm{if} \; a_{t} \lt b_{t} \; \mathrm{and} \; a_{t-1} \geq b_{t-1} \\ 0 & \mathrm{else} \end{cases}$$

## Example Usage

### Calling From C

/* Example usage of Crossany */
/* Assuming that 'input1' and 'input2' are pre-loaded arrays of size 'in_size'. */
TI_REAL *inputs[] = {input1, input2};
TI_REAL options[] = {}; /* No options */
TI_REAL *outputs[1]; /* crossany */

/* Determine how large the output size is for our options. */
const int out_size = in_size - ti_crossany_start(options);

/* Allocate memory for output. */
outputs[0] = malloc(sizeof(TI_REAL) * out_size); assert(outputs[0] != 0); /* crossany */

/* Run the actual calculation. */
const int ret = ti_crossany(in_size, inputs, options, outputs);
assert(ret == TI_OKAY);


### Calling From Lua (with Tulip Chart bindings)

-- Example usage of Crossany
crossany = ti.crossany(input1, input2)


## Example Calculation

dateinputinput2crossany
2005-11-0181.5981.85
2005-11-0281.0681.200.00
2005-11-0382.8781.551.00
2005-11-0483.0082.910.00
2005-11-0783.6183.100.00
2005-11-0883.1583.411.00
2005-11-0982.8482.711.00
2005-11-1083.9982.700.00
2005-11-1184.5584.200.00
2005-11-1484.3684.250.00
2005-11-1585.5384.030.00
2005-11-1686.5485.450.00
2005-11-1786.8986.180.00
2005-11-1887.7788.001.00
2005-11-2187.2987.600.00

## Other Indicators

Previous indicator: Vector Hyperbolic Cosine

Next indicator: Crossover

Random indicator: Forecast Oscillator