---
title: "ClikaRT::nn::RotaryEmbeddingOptions"
sidebar_label: "RotaryEmbeddingOptions"
description: "Settings of RotaryEmbedding: chain the setters, or assign the fields. The defaults are the plain rotary embedding of most decoder checkpoints: base 10000, no context scaling, half-split pairs."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--struct">struct</span>

**Header:** `ClikaRT/nn/rotary_embedding.h`

Settings of [`RotaryEmbedding`](./RotaryEmbedding.md): chain the setters, or assign the fields. The defaults are the plain rotary embedding of most decoder checkpoints: base 10000, no context scaling, half-split pairs.

## Member functions

### theta(double) {#theta}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`theta`**(`double` `v`)

</div>

Sets [`theta`](./RotaryEmbeddingOptions.md#theta), the frequency base.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 37

</div>

### scaling(ops::RopeScaling) {#scaling}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`scaling`**([`ops::RopeScaling`](../ops/index.md#RopeScaling) `v`)

</div>

Sets [`scaling`](./RotaryEmbeddingOptions.md#scaling), the context-extension family.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 39

</div>

### scale(double) {#scale}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`scale`**(`double` `v`)

</div>

Sets [`scale`](./RotaryEmbeddingOptions.md#scale), the family's scale factor.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 41

</div>

### low\_freq\_factor(double) {#low_freq_factor}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`low_freq_factor`**(`double` `v`)

</div>

Sets [`low_freq_factor`](./RotaryEmbeddingOptions.md#low_freq_factor) (the Llama3 family).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 43

</div>

### high\_freq\_factor(double) {#high_freq_factor}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`high_freq_factor`**(`double` `v`)

</div>

Sets [`high_freq_factor`](./RotaryEmbeddingOptions.md#high_freq_factor) (the Llama3 family).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 45

</div>

### original\_max\_pos(int64\_t) {#original_max_pos}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`original_max_pos`**(`std::int64_t` `v`)

</div>

Sets [`original_max_pos`](./RotaryEmbeddingOptions.md#original_max_pos), the context length the checkpoint was trained at.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 50

</div>

### beta\_fast(double) {#beta_fast}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`beta_fast`**(`double` `v`)

</div>

Sets [`beta_fast`](./RotaryEmbeddingOptions.md#beta_fast) (the YaRN family).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 55

</div>

### beta\_slow(double) {#beta_slow}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`beta_slow`**(`double` `v`)

</div>

Sets [`beta_slow`](./RotaryEmbeddingOptions.md#beta_slow) (the YaRN family).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 57

</div>

### yarn\_truncate(bool) {#yarn_truncate}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`yarn_truncate`**(`bool` `v`)

</div>

Sets [`yarn_truncate`](./RotaryEmbeddingOptions.md#yarn_truncate) (the YaRN family): `true` rounds the correction window's bounds to whole bands, `false` keeps the fractional bounds the parameters name (a checkpoint whose rope parameters set `truncate` off).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 61

</div>

### mode(ops::RotaryMode) {#mode}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`mode`**([`ops::RotaryMode`](../ops/index.md#RotaryMode) `v`)

</div>

Sets [`mode`](./RotaryEmbeddingOptions.md#mode), the pair layout the rotation uses.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 63

</div>

### device(Device) {#device}

<div class="api-signature">

[`RotaryEmbeddingOptions`](./RotaryEmbeddingOptions.md)`&` **`device`**([`Device`](../Device.md) `v`)

</div>

Sets [`device`](../device-namespace/index.md), where the tables live.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 65

</div>

### theta() {#theta-2}

<div class="api-signature">

`double` **`theta`**() `const`

</div>

Reads [`theta`](./RotaryEmbeddingOptions.md#theta).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 68

</div>

### scaling() {#scaling-2}

<div class="api-signature">

[`ops::RopeScaling`](../ops/index.md#RopeScaling) **`scaling`**() `const`

</div>

Reads [`scaling`](./RotaryEmbeddingOptions.md#scaling).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 70

</div>

### scale() {#scale-2}

<div class="api-signature">

`double` **`scale`**() `const`

</div>

Reads [`scale`](./RotaryEmbeddingOptions.md#scale).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 72

</div>

### low\_freq\_factor() {#low_freq_factor-2}

<div class="api-signature">

`double` **`low_freq_factor`**() `const`

</div>

Reads [`low_freq_factor`](./RotaryEmbeddingOptions.md#low_freq_factor).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 74

</div>

### high\_freq\_factor() {#high_freq_factor-2}

<div class="api-signature">

`double` **`high_freq_factor`**() `const`

</div>

Reads [`high_freq_factor`](./RotaryEmbeddingOptions.md#high_freq_factor).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 76

</div>

### original\_max\_pos() {#original_max_pos-2}

<div class="api-signature">

`std::int64_t` **`original_max_pos`**() `const`

</div>

Reads [`original_max_pos`](./RotaryEmbeddingOptions.md#original_max_pos).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 78

</div>

### beta\_fast() {#beta_fast-2}

<div class="api-signature">

`double` **`beta_fast`**() `const`

</div>

Reads [`beta_fast`](./RotaryEmbeddingOptions.md#beta_fast).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 80

</div>

### beta\_slow() {#beta_slow-2}

<div class="api-signature">

`double` **`beta_slow`**() `const`

</div>

Reads [`beta_slow`](./RotaryEmbeddingOptions.md#beta_slow).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 82

</div>

### yarn\_truncate() {#yarn_truncate-2}

<div class="api-signature">

`bool` **`yarn_truncate`**() `const`

</div>

Reads [`yarn_truncate`](./RotaryEmbeddingOptions.md#yarn_truncate).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 84

</div>

### mode() {#mode-2}

<div class="api-signature">

[`ops::RotaryMode`](../ops/index.md#RotaryMode) **`mode`**() `const`

</div>

Reads [`mode`](./RotaryEmbeddingOptions.md#mode).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 86

</div>

### device() {#device-2}

<div class="api-signature">

`const` [`Device`](../Device.md)`&` **`device`**() `const`

</div>

Reads [`device`](../device-namespace/index.md).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 88

</div>

## Data members

### theta\_ {#theta_}

<div class="api-signature">

`double` **`theta_`** `= 10000.0`

</div>

The frequency base. Default `10000.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 91

</div>

### scaling\_ {#scaling_}

<div class="api-signature">

[`ops::RopeScaling`](../ops/index.md#RopeScaling) **`scaling_`** `=` [`ops::RopeScaling::None`](../ops/index.md#RopeScaling)

</div>

The context-extension family. Default [`ops::RopeScaling::None`](../ops/index.md#RopeScaling).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 93

</div>

### scale\_ {#scale_}

<div class="api-signature">

`double` **`scale_`** `= 1.0`

</div>

The family's scale factor. Default `1.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 95

</div>

### low\_freq\_factor\_ {#low_freq_factor_}

<div class="api-signature">

`double` **`low_freq_factor_`** `= 1.0`

</div>

Llama3: the low-frequency factor. Default `1.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 97

</div>

### high\_freq\_factor\_ {#high_freq_factor_}

<div class="api-signature">

`double` **`high_freq_factor_`** `= 4.0`

</div>

Llama3: the high-frequency factor. Default `4.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 99

</div>

### original\_max\_pos\_ {#original_max_pos_}

<div class="api-signature">

`std::int64_t` **`original_max_pos_`** `= 0`

</div>

The context length the checkpoint was trained at, read by the Llama3 / YaRN / LongRoPE families. Default `0` (not set).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 102

</div>

### beta\_fast\_ {#beta_fast_}

<div class="api-signature">

`double` **`beta_fast_`** `= 32.0`

</div>

YaRN: the fast beta. Default `32.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 104

</div>

### beta\_slow\_ {#beta_slow_}

<div class="api-signature">

`double` **`beta_slow_`** `= 1.0`

</div>

YaRN: the slow beta. Default `1.0`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 106

</div>

### yarn\_truncate\_ {#yarn_truncate_}

<div class="api-signature">

`bool` **`yarn_truncate_`** `= true`

</div>

YaRN: the correction window rounded to whole bands. Default `true`.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 108

</div>

### mode\_ {#mode_}

<div class="api-signature">

[`ops::RotaryMode`](../ops/index.md#RotaryMode) **`mode_`** `=` [`ops::RotaryMode::NeoX`](../ops/index.md#RotaryMode)

</div>

The pair layout: `NeoX` pairs entry `i` with `i + dim / 2`, `Interleaved` pairs `2i` with `2i + 1`. Default [`ops::RotaryMode::NeoX`](../ops/index.md#RotaryMode).

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 111

</div>

### device\_ {#device_}

<div class="api-signature">

[`Device`](../Device.md) **`device_`** `=` [`Device::cpu`](../Device.md#cpu)`()`

</div>

[Where](./Where.md) the tables live. Default CPU.

<div class="api-declared">

Declared in `ClikaRT/nn/rotary_embedding.h`, line 113

</div>
