Golang Math Module: math.Abs, Pow

Perform mathematical computations with the math module. Call math.Abs and math.Pow.


Languages often have built-in math methods. With Go we import the math module. This provides commonly-used methods like Abs and Pow.


Math methods here operate on the float64 numeric type. So we cannot use an int directly with them—we must cast it first. This requires some extra complexity.


Let us begin with Abs. We import the math module in the import-statement at the top. Next we introduce the "negative" integer.

Then: We convert the "negative" number to a float64 and pass that to the math.Abs method. This returns a positive number.

Golang program that uses math.Abs, float64 package main import ( "fmt" "math" ) func main() { negative := -10 fmt.Println(negative) // Use math.Abs to convert to a positive number. // ... We first convert to a float64. result := math.Abs(float64(negative)) fmt.Println(result) } Output -10 10

Pow, compute exponents.

Pow raises one number to another. Here we compute the cube of 2, which is 8. We can also square numbers (with a second argument of 2) or use higher powers.
Golang program that uses math.Pow package main import ( "fmt" "math" ) func main() { // This can handle ints. result := math.Pow(2, 3) fmt.Println(result) } Output 8

Max, Min.

The math.Max and math.Min methods both receive two float64 values. Max returns the higher of the two. Min returns the lower.

Note: If both values are equal, the result is that value. A separate comparison must determine this case.

Golang program that uses Max, Min package main import ( "fmt" "math" ) func main() { small := float64(3) large := float64(40) // Get the larger of the two numbers. max := math.Max(small, large) fmt.Println(max) // Get the smaller value. min := math.Min(small, large) fmt.Println(min) } Output 40 3


The floor is beneath us. With math.Floor, a number with a fractional part is always reduced so the fractional part does not exist. Both negative and positive numbers are reduced.
Golang program that uses math.Floor package main import ( "fmt" "math" ) func main() { value1 := 1.23 fmt.Println(value1) fmt.Println(math.Floor(value1)) value2 := 2.99 fmt.Println(value2) fmt.Println(math.Floor(value2)) value3 := -1.1 fmt.Println(value3) fmt.Println(math.Floor(value3)) } Output 1.23 1 2.99 2 -1.1 -2


This math method returns a bool. If the number is negative (has a sign bit) then Signbit returns true. For positive numbers, it returns false.
Golang program that uses math.Signbit package main import ( "fmt" "math" ) func main() { value1 := float64(1) negative := math.Signbit(value1) fmt.Println(negative) value2 := float64(-1) negative = math.Signbit(value2) fmt.Println(negative) value3 := float64(0) negative = math.Signbit(value3) fmt.Println(negative) } Output false true false

Odd, even.

An int has a parity: this is whether it is odd or even. To compute parity, we use a modulo division. We can define "odd" as "not even."Odd, Even


In the Fibonacci sequence, each number is equal to the preceding two numbers. This sequence occurs often in the natural world. It has many uses.Fibonacci

Many math methods

are available in the math package. We can implement math methods directly, with imperative statements. But this often leads to unneeded, unwanted complexity.
Dot Net Perls
© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen,