# doubleEMA() function

Warning! This page documents an earlier version of Flux, which is no longer actively developed. Flux v0.65 is the most recent stable version of Flux.

The `doubleEMA()` function calculates the exponential moving average of values in the `_value` column grouped into `n` number of points, giving more weight to recent data at double the rate of `exponentialMovingAverage()`.

Function type: Aggregate

``````doubleEMA(n: 5)
``````
##### Double exponential moving average rules:
• A double exponential moving average is defined as `doubleEMA = 2 * EMA_N - EMA of EMA_N`.
• `EMA` is an exponential moving average.
• `N = n` is the period used to calculate the EMA.
• A true double exponential moving average requires at least `2 * n - 1` values. If not enough values exist to calculate the double EMA, it returns a `NaN` value.
• `doubleEMA()` inherits all exponential moving average rules.

## Parameters

### n

The number of points to average.

Data type: Integer

## Examples

#### Calculate a five point double exponential moving average

``````from(bucket: "telegraf/autogen"):
|> range(start: -12h)
|> doubleEMA(n: 5)
``````

## Function definition

``````doubleEMA = (n, tables=<-) =>
tables
|> exponentialMovingAverage(n:n)
|> duplicate(column:"_value", as:"ema")
|> exponentialMovingAverage(n:n)
|> map(fn: (r) => ({r with _value: 2.0 * r.ema - r._value}))
|> drop(columns: ["ema"])
``````

DOUBLE_EXPONENTIAL_MOVING_AVERAGE