### 2 releases

0.1.1 | Apr 13, 2023 |
---|---|

0.1.0 | Dec 17, 2022 |

#**1579** in Math

**GPL-3.0-or-later**

11KB

88 lines

# Hyperoperation

This crate allows to calculate and format hyperoperation, sometimes known as **Knuth's up-arrow notation**, which is a way to define very large numbers, such as famous 3↑↑↑3.

### Features

- Calculate value of hyperoperations (docs)
- Format hyperoperations with Knuth's up-arrow notation (docs)
- Use any unsigned numeric type for calculation fitting some conditions, such as BigUint

### Examples

Simple calculation:

`use` `hyperoperation``::``*``;`
`assert_eq!``(`
`hyperoperation``::``<``u64``>``(``&``3``,` `3``,` `2``)``,` `//` 3 ↑↑ 3
`7625597484987`
`)``;`

Using BigUint to handle big results without overflowing (don't forget to add

as your dependency) :`num_bigint`

`use` `hyperoperation``::``*``;`
`use` `num_bigint``::`BigUint`;`
`let` result `=` `hyperoperation``::``<`BigUint`>``(``&``5``u8``.``into``(``)``,` `3``u8``.``into``(``)``,` `2``)``;` `//` 5 ↑↑ 3
`println!``(``"`Result:`\n``{result}``"``)``;`
`assert_eq!``(`
result `%` `BigUint``::`from`(``100_000_000``u32``)``,`
`8203125``u32``.``into``(``)`
`)``;`

Using Hyperoperation structand formatting it with Knuth's up-arrow notation:

`use` `hyperoperation``::``*``;`
`let` expr `=` `Hyperoperation``::``<``u64``>``::`new`(``3``,` `3``,` `2``)``;` `//` Represents 3 ↑↑ 3
`let` result `=` expr`.``clone``(``)``.``evaluate``(``)``;` `//` Calculate the value of 3 ↑↑ 3
`println!``(``"``{expr}` = `{result}``"``)``;`
`assert_eq!``(`result`,` `7625597484987``)``;`
`assert_eq!``(``format!``(``"``{expr}``"``)``,` `"`3 ↑↑ 3`"``)``;`

#### Dependencies

~230KB