geam-stdlib 0.2.0

Official Gleam standard-library providers for Geam
Documentation
import gleam/float
import gleam/order

pub fn main() {
  assert float.parse("2.5") == Ok(2.5)
  assert float.parse("2") == Error(Nil)
  assert float.to_string(2.0) == "2.0"
  assert float.clamp(1.2, min: 1.4, max: 1.6) == 1.4
  assert float.clamp(1.2, min: 1.4, max: 0.6) == 1.2
  assert float.compare(1.0, 2.0) == order.Lt
  assert float.loosely_compare(5.0, with: 5.3, tolerating: 0.5) == order.Eq
  assert float.loosely_equals(5.0, with: 5.3, tolerating: 0.5)
  assert float.min(2.0, 3.0) == 2.0
  assert float.max(2.0, 3.0) == 3.0
  assert float.ceiling(2.3) == 3.0
  assert float.floor(2.7) == 2.0
  assert float.round(2.5) == 3
  assert float.round(-2.5) == -3
  assert float.truncate(-2.9) == -2
  assert float.to_precision(2.434, 2) == 2.43
  assert float.to_precision(547_890.4, -3) == 548_000.0
  assert float.absolute_value(-12.5) == 12.5
  assert float.power(2.0, of: 3.0) == Ok(8.0)
  assert float.power(-1.0, of: 0.5) == Error(Nil)
  assert float.square_root(4.0) == Ok(2.0)
  assert float.negate(1.5) == -1.5
  assert float.sum([1.0, 2.0, 3.0]) == 6.0
  assert float.product([2.0, 3.0, 4.0]) == 24.0
  let random = float.random()
  assert random >=. 0.0 && random <. 1.0
  assert float.modulo(13.0, by: 3.0) == Ok(1.0)
  assert float.modulo(1.0, by: 0.0) == Error(Nil)
  assert float.divide(6.0, by: 2.0) == Ok(3.0)
  assert float.divide(1.0, by: 0.0) == Error(Nil)
  assert float.add(1.0, 2.0) == 3.0
  assert float.multiply(2.0, 4.0) == 8.0
  assert float.subtract(3.0, 1.0) == 2.0
  assert float.logarithm(1.0) == Ok(0.0)
  assert float.logarithm(0.0) == Error(Nil)
  assert float.loosely_equals(
    float.exponential(1.0),
    with: 2.718281828459045,
    tolerating: 0.000000000000001,
  )
}
// @geam:expect Nil