### Exponential and logarithm operations

You should specify the range of x values you are interested in, also the allowable error %.
Then it could be decided how to proceed.

Currently it is hard except in specific cases (e.g., small exponents where you can unroll the loop).
But these functions are coming to future versions of TEAL. Stay tuned!

TEAL only supports unsigned integers (i.e., non-negative integers).
You need to design your code so that it does not require explicitly negative and decimal values.
This depends on your exact use case.

It depends on the type of data you are storing in the array.
But let’s say you store 4-byte values.
Then the first value can be stored at indices 0-3, the second value at indices 4-7, …
TEAL has operations to extract substrings easily: [Byte Operators — PyTeal documentation](https://pyteal.readthedocs.io/en/latest/byte_expression.html)

To pass arguments, see [Using the SDKs - Algorand Developer Portal](https://developer.algorand.org/docs/features/asc1/stateful/sdks/#call-with-arguments) (this also works with OptIn transactions, but the example is for a call transaction). To read arguments from the smart contract, see e.g., [pyteal/vote.py at 3fe0c94203e56d7e67dc44607afa0fa9fb0bbb54 · algorand/pyteal · GitHub](https://github.com/algorand/pyteal/blob/3fe0c94203e56d7e67dc44607afa0fa9fb0bbb54/examples/application/vote.py#L33)

One example is that branching is limited; you can’t go back in the code (to a previous instruction), TEAL moves only forward. However, you can skip parts of the code depending on a condition.
So you can’t loop. However, creating contracts is very cheap. So you should try to do as much computation as possible in a single contract.
