# expp - vs

Provides partial precision exponential 2^{x}.

## Syntax

expp dst, src.{x|y|z|w} |
---|

Where:

- dst is the destination register.
- src is a source register. Source register requires explicit use of replicate swizzle, that is, exactly one of the .x, .y, .z, .w swizzle components (or the .r, .g, .b, .a equivalents) must be specified.
- {x|y|z|w} is the required replicate swizzle on source register.

## Remarks

Vertex shader versions | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|

expp | x | x | x | x | x | x |

### vs_1_1

The exp - vs instruction operates differently depending on vertex shader versions.

In vs_1_1, the expp instruction gives the following results:

```
v = the scalar value from the source register with a replicate swizzle
dest.x = pow(2, floor(v))
dest.y = v - floor(v)
dest.z = pow(2, v) (partial-precision)
dest.w = 1
```

In vs_2_0 and up, the expp instruction gives the following results:

```
v = the scalar value from the source register with a replicate swizzle
dest.x = dest.y = dest.z = dest.y = pow(2, v) (partial-precision)
```

### vs_2_0

In vs_2_0 and up, the instruction works like this:

```
float V = the scalar value from the source register with a replicate swizzle
dest.x = dest.y = dest.z = dest.y = pow( 2, V ) (partial-precision)
```

The instruction provides at least 10 bits of precision.

## Related topics