There are some calculations that I'd like to run, but I need some extremely big numbers and some extremely small numbers.

So I need something that will facilitate a very large bit-depth for the number types. e.g. 128 bit or 256 bit. I need integers and non-integers.

I only need to do:

- +
- - (redundant from above)
- *
- / (redundant from above)
- ^

However, ^ needs to accommodate very small numbers or very precise numbers, e.g.

- 1.00000000000000000000000000023423423
- 0.000000000000000000000000000000000000000000000000000000000002342342

An nth root function would be convenient, but isn't needed.

Does anyone know of anything that works and that can help me? Any language is fine by me. Something C-ish would be nice, but I don't care.