# Compute with encrypted numbers.

> Use CKKS for approximate arithmetic on packed vectors, from addition and multiplication to polynomial evaluation and bootstrapping.

- Canonical page: https://www.poulpy.dev/docs/ckks/
- Poulpy version: 0.9.0
- Source revision: [`7dd13e6aa9808982f5355fb6acb70ca434de4e35`](https://github.com/poulpy-fhe/poulpy/tree/7dd13e6aa9808982f5355fb6acb70ca434de4e35)
- Documentation reviewed: 2026-10-08
- Audience: For developers starting numerical computation

## Run a first calculation

Follow the [quickstart](https://www.poulpy.dev/docs/quickstart/) to install the toolchain and run an encrypted addition and multiplication. The example uses the portable CPU backend, so it does not require a particular SIMD instruction set.

## Evaluate a function

From the Poulpy repository directory, run the maintained polynomial example:

```sh
cargo run --locked --release -p poulpy-cpu-portable --features enable-ckks --example ckks_poly2
```

[`ckks_poly2.rs`](https://github.com/poulpy-fhe/poulpy/blob/7dd13e6aa9808982f5355fb6acb70ca434de4e35/poulpy-cpu-portable/examples/ckks_poly2.rs) approximates sine on encrypted inputs, then decrypts and checks the result. Read [Polynomial evaluation](https://www.poulpy.dev/docs/polynomial-evaluation/) for the evaluator and its precision budget.

## Explore the operations

- [Linear transformations](https://www.poulpy.dev/docs/linear-transformations/) covers matrix-vector products and slot transformations.
- [Bootstrapping](https://www.poulpy.dev/docs/bootstrapping/) explains how to refresh a ciphertext’s computation budget.
- [PaCo](https://www.poulpy.dev/docs/paco/) and [SHIP](https://www.poulpy.dev/docs/ship/) describe alternative bootstrapping operations.
- The [`poulpy-ckks` API](https://docs.rs/poulpy-ckks/0.9.0/poulpy_ckks/) lists the public types and operations.

## Select a backend

Scheme code uses a backend through the hardware abstraction layer. Start with the portable backend, then consult [Backends](https://www.poulpy.dev/docs/backends/) for acceleration options and [Performance](https://www.poulpy.dev/docs/performance/) for tuning.
