# The math Package in GoLang

The math package in Go contains entirely of many math functions that can be used to do different things. Here are the main math functions that are used frequently.

## Regular math functions

The most common math functions are as follows. Most of the functions work with float64 type here. We need to import the package at first.

```import "math"
```

The math package contains many common functions that otherwise if implemented by the user may prove to be inefficient.

### 1. The Abs function

The Abs function produces the absolute value of a float64 number.

```fmt.Println(math.Abs(-12.3))  // 12.3
```

### 2. The trigonometric functions

The trigonometric functions are sin, cos, tan, their inverse and hyperbolic functions.

```fmt.Println(math.Sin(43))     // -0.8317747426285983
fmt.Println(math.Cos(57))     // 0.8998668269691938
```

### 3. The log function

The log function computes the logarithm of the float64 number provided.

```fmt.Println(math.Log(89))     // 4.48863636973214
```

The Log10 does a base 10 logarithm on the input.

```fmt.Println(math.Log10(90))   // 1.9542425094393248
```

### 4. The mod function

The mod function returns the remainder after division in float64.

```fmt.Println(math.Mod(14, 5))  // 4
```

### 5. The ceiling and floor of a floating-point number

The ceil and floor compute the ceiling and the floor of a float64 number respectively. The ceiling and floor both are integers. Here is an example.

```fmt.Println(math.Ceil(12.5))  // 13
fmt.Println(math.Floor(23.7)) // 23
```

### 6. Min and Max functions

The min and max functions compute the minimum and maximum of the two float64 provided.

```fmt.Println(math.Min(23, 45)) // 23
fmt.Println(math.Max(23, 45)) // 45
```

### 7. The Pow function

The pow function computes power. The first argument is the base and the second is the exponent. It has multiple special cases.

```fmt.Println(math.Pow(2, 16))   // 65536
```

### 8. The isNan() function

The isNan function checks whether the input is not a number.

```fmt.Println(math.IsNaN(35))   // false
```

## Important sub-packages

The math package contains important sub-packages such as the rand package which contains methods to generate random numbers. To generate cryptographically secure random numbers `crypto/rand` is recommended.

The big package implements arbitrary large integer handling. The bits package handles the bit manipulation segment.

To work with complex numbers the cmplx package is to be used.