# Common errors

This document explains the most common errors and provides solutions to fix them.

## 1. Could not find a version that satisfies the requirement concrete-python (from versions: none)

**Error message**: `Could not find a version that satisfies the requirement concrete-python (from versions: none)`

**Cause**: The installation does not work fine for you.

**Possible solutions**:

* Be sure that you use a supported Python version (currently from 3.9 to 3.12, included).
* Check that you have done `pip install -U pip wheel setuptools` before.
* Consider adding a `--extra-index-url https://pypi.zama.ai/cpu` or `--extra-index-url https://pypi.zama.ai/gpu`, depending on whether you want the CPU or the GPU wheel.
* Concrete requires glibc>=2.28, be sure to have a sufficiently recent version.

## 2. Only integers are supported

**Error message**: `RuntimeError: Function you are trying to compile cannot be compiled` with extra information `only integers are supported`

**Cause**: Parts of your program contain graphs that are not from integer to integer

**Possible solutions**:

* You can use floats as intermediate values (see the [documentation](https://docs.zama.org/concrete/explanations/advanced-features/floating_points#floating-points-as-intermediate-values)). However, both inputs and outputs must be integers. Consider converting values to integers, such as `.astype(np.uint64)`

## 3. No parameters found

**Error message**: `NoParametersFound`

**Cause**: The optimizer can't find cryptographic parameters for the circuit that are both secure and correct.

**Possible solutions**:

* Try to simplify your circuit.
* Use smaller weights.
* Add intermediate PBS to reduce the noise, with identity function `fhe.refresh(lambda x: x)`.

## 4. Too long inputs for table looup

**Error message**: `RuntimeError: Function you are trying to compile cannot be compiled`, with extra information as `this [...]-bit value is used as an input to a table lookup` with `but only up to 16-bit table lookups are supported`

**Cause**: The program uses a Table Lookup that contains oversized inputs exceeding the current 16-bit limit.

**Possible solutions**:

* Try to simplify your circuit.
* Use smaller weights.
* Look to the graph to understand where this oversized input comes from and ensure that the input size for Table Lookup operations does not exceed 16 bits.
* Use `show_bit_width_constraints=True` to understand bit widths are assigned the way they are.

## 5. Impossible to fuse multiple-nodes

**Error message**: `RuntimeError: A subgraph within the function you are trying to compile cannot be fused because it has multiple input nodes`

**Cause**: A subgraph in your program uses two or more input nodes. It is impossible to fuse such a graph, meaning replace it by a table lookup. Concrete will indicate the input nodes with `this is one of the input nodes printed` in the circuit.

**Possible solutions**:

* Try to simplify your circuit.
* Have a look to `fhe.multivariate`.

## 6. Function is not supported

**Error message**: `RuntimeError: Function '[...]' is not supported`

**Cause**: The function used is not currently supported by Concrete.

**Possible solutions**:

* Try to change your program.
* Check the corresponding documentation to see if there are ways to implement the function differently.
* Post your issue in our [community channels](https://community.zama.ai/c/concrete/7).

## 7. Branching is not allowed

**Error message**: `RuntimeError: Branching within circuits is not possible`

**Cause**: Branching operations, such as if statements or non-constant loops, are not supported in Concrete's FHE programs.

**Possible solutions**:

* Change your program.
* Consider using tricks to replace ternary-if, as `c ? t : f = f + c * (t-f)`.

## 8. Unfeasible noise constraint

**Error message**: `Unfeasible noise constraint encountered`

**Cause**: The optimizer can't find cryptographic parameters for the circuit that are both secure and correct.

**Possible solutions**:

* Try to simplify your circuit.
* Use smaller weights.
* Add intermediate PBS to reduce the noise, with identity function `fhe.refresh(x)`.

## 9. Non composable circuit

**Error message**: `Program can not be composed`

**Cause**: Some circuit outputs are contaminated by unrefreshed input noise.

**Possible solutions**:

* Add intermediate PBS to refresh the noise with `fhe.refresh(x)`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zama.org/concrete/compilation/common_errors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
