The series_atan function computes the arc tangent (inverse tangent) for each element in a numeric array (also known as a series). You use it to transform a dynamic array of numbers into their corresponding arc tangent values, expressed in radians. This is useful when you work with time series or array data and want to normalize, analyze, or transform it using trigonometric operations.

You often use series_atan in scenarios where you want to transform numeric measurements into angular values for further statistical analysis, pattern recognition, or anomaly detection.

For users of other query languages

If you come from other query languages, this section explains how to adjust your existing queries to achieve the same results in APL.

In Splunk SPL, you typically use eval atan(x) to calculate the arc tangent of a scalar value, but SPL doesn’t provide a built-in function for applying atan across arrays or time series directly. In APL, series_atan applies the operation element-wise to arrays, making it easier to work with dynamic and time series data.

```sql Splunk example ... | eval angle=atan(value) ````
datatable(arr: dynamic)
[
    dynamic([0, 1, -1])
]
| extend atan_arr = series_atan(arr)

In ANSI SQL, you use ATAN(x) for scalar values. To work with arrays, you typically need to unnest the array, apply ATAN to each element, and then aggregate the results back. APL simplifies this with series_atan, which applies the arc tangent function element-wise to the entire array.

```sql SQL example SELECT ATAN(value) FROM numbers; ```
datatable(arr: dynamic)
[
    dynamic([0, 1, -1])
]
| extend atan_arr = series_atan(arr)

Usage

Syntax

series_atan(array)

Parameters

Parameter Type Description
array dynamic A dynamic array of numeric values.

Returns

A dynamic array with the arc tangent of each input element. The results are in radians.

Use case examples

You want to analyze request durations by converting them into angular values for specialized statistical transformations.

Query

['sample-http-logs']
| summarize durations = make_list(req_duration_ms)
| extend atan_durations = series_atan(durations)

Run in Playground

Output

durations atan_durations
[10, 200, 5000] [1.4711, 1.5658, 1.5706]

The query aggregates request durations, then transforms them into their arc tangent equivalents for normalized comparison.

You want to transform span durations into angular values for advanced time series modeling.

Query

['otel-demo-traces']
| summarize spans = make_list(duration) by ['service.name']
| extend atan_spans = series_atan(spans)

Run in Playground

Output

service.name spans atan_spans
frontend [00:00:01, 00:00:03] [0.7854, 1.2490]
checkoutservice [00:00:05, 00:00:07] [1.3734, 1.4289]

The query collects span durations by service and transforms them into arc tangent values.

You want to analyze failed login attempts by transforming their request durations into angular values.

Query

['sample-http-logs']
| summarize failed_durations = make_list(req_duration_ms) by id
| extend atan_failed = series_atan(failed_durations)

Run in Playground

Output

id failed_durations atan_failed
user42 [20, 200, 800] [1.5208, 1.5658, 1.5696]

The query collects durations and applies the arc tangent function element-wise.

  • series_asin: Applies the arc sine function element-wise to array values. Use this when you need the inverse sine instead of the inverse cosine.
  • series_acos: Returns the arc cosine of each element in an array. Use when you need to invert cosine transformations instead of sine.

Good afternoon

I'm here to help you with the docs.

I
AIBased on your context