> For the complete documentation index, see [llms.txt](https://ola-foundation.gitbook.io/ola-lang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ola-foundation.gitbook.io/ola-lang/standard-libraries/prophet-functions.md).

# Prophet Functions

Ola supports the `prophet` function, which utilizes prophet features to make previously difficult-to-prove but easy-to-verify computation processes now easily provable and verifiable, improving ZK circuit proof efficiency.

The following demonstrates the usage of the `u32_sqrt` prophet function supported by ola.

```solidity
  fn sqrt_test(u32 n) -> (u32) {
      u32 b = u32_sqrt(n);
      return b;
  }
```

We can also use the Ola language to implement a simplified version of the sqrt function.

```solidity
  // native approach
  fn sqrt_test(u32 a) -> (u32) {
      u32 result = 0;
      if (a > 3) {
          result = a;
          u32 x = a / 2 + 1;
          // assume the maximum iteration is 100
          for (u32 i = 0; i < 100; i++) {
              if (x >= result) break;
              result = x;
              x = (a / x + x) / 2;
          }
      } else if (a != 0) {
          result = 1;
      }
      return result;
  }
```

The efficiency comparison of circuit proof generated by using the Ola Prophet method and directly written in Ola language for sqrt is as follows:

![prophet\_benchmark](/files/shWMyOz0lKCorgSzFdEp)
