Math Module: math.Abs, Pow
This page was last reviewed on Dec 4, 2021.
Dot Net Perls
Math. Languages often have built-in math methods. With Go we import the math module. This provides commonly-used methods like Abs and Pow.
Float64. 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.
Math.Abs. 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.
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) }
-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.
package main import ( "fmt" "math" ) func main() { // This can handle ints. result := math.Pow(2, 3) fmt.Println(result) }
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.
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) }
40 3
Floor. 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.
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)) }
1.23 1 2.99 2 -1.1 -2
Signbit. 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.
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) }
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
Fibonacci. 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.
A summary. Many math methods are available in the math package. We can implement math methods directly, with imperative statements. But this often leads to unneeded complexity.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Dec 4, 2021 (edit link).
© 2007-2024 Sam Allen.