# 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.8 to 3.11, 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](../core-features/floating_points.md#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)`.
