diff options
author | Connor Schembor <cschembor96@gmail.com> | 2020-08-26 19:38:50 -0400 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-08-27 13:55:55 +0100 |
commit | 66653cae1a57435140b591683f3de429b3e87c3e (patch) | |
tree | dcfedeb9dc4f8893811ebc4064a2e9ce1468da7f | |
parent | 41d2256cb18cfb657ab6a0eaccb4f315e390b618 (diff) | |
download | gleam_stdlib-66653cae1a57435140b591683f3de429b3e87c3e.tar.gz gleam_stdlib-66653cae1a57435140b591683f3de429b3e87c3e.zip |
Add square_root function for floats
-rw-r--r-- | src/gleam/float.gleam | 17 | ||||
-rw-r--r-- | test/gleam/float_test.gleam | 14 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/gleam/float.gleam b/src/gleam/float.gleam index 3767113..448424a 100644 --- a/src/gleam/float.gleam +++ b/src/gleam/float.gleam @@ -142,3 +142,20 @@ pub external fn absolute_value(Float) -> Float = /// pub external fn power(base: Float, exponent: Float) -> Float = "math" "pow" + +/// Returns the square root of the input as a float. +/// +/// ## Examples +/// +/// > square_root(4.0) +/// 2.0 +/// +/// > square_root(-16.0) +/// Error(Nil) +/// +pub fn square_root(number: Float) -> Result(Float, Nil) { + case number <. 0.0 { + True -> Error(Nil) + False -> Ok(power(number, 0.5)) + } +} diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam index 234df59..79bece2 100644 --- a/test/gleam/float_test.gleam +++ b/test/gleam/float_test.gleam @@ -217,3 +217,17 @@ pub fn power_test() { float.power(2.0, -1.0) |> should.equal(0.5) } + +pub fn square_root_test() { + float.square_root(4.0) + |> should.equal(Ok(2.0)) + + float.square_root(16.0) + |> should.equal(Ok(4.0)) + + float.square_root(0.0) + |> should.equal(Ok(0.0)) + + float.square_root(-4.0) + |> should.equal(Error(Nil)) +} |