Packages
gleam_stdlib
0.17.1
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
gen/src/gleam@float.erl
-module(gleam@float).
-compile(no_auto_import).
-export([parse/1, to_string/1, clamp/3, compare/2, min/2, max/2, ceiling/1, floor/1, round/1, truncate/1, absolute_value/1, power/2, square_root/1, negate/1, sum/1, product/1]).
-spec parse(binary()) -> {ok, float()} | {error, nil}.
parse(String) ->
gleam_stdlib:parse_float(String).
-spec to_string(float()) -> binary().
to_string(F) ->
_pipe = F,
_pipe@1 = gleam@string_builder:from_float(_pipe),
gleam@string_builder:to_string(_pipe@1).
-spec clamp(float(), float(), float()) -> float().
clamp(N, Min_bound, Max_bound) ->
_pipe = N,
_pipe@1 = min(_pipe, Max_bound),
max(_pipe@1, Min_bound).
-spec compare(float(), float()) -> gleam@order:order().
compare(A, B) ->
case A =:= B of
true ->
eq;
false ->
case A < B of
true ->
lt;
false ->
gt
end
end.
-spec min(float(), float()) -> float().
min(A, B) ->
case A < B of
true ->
A;
false ->
B
end.
-spec max(float(), float()) -> float().
max(A, B) ->
case A > B of
true ->
A;
false ->
B
end.
-spec ceiling(float()) -> float().
ceiling(Float) ->
math:ceil(Float).
-spec floor(float()) -> float().
floor(Float) ->
math:floor(Float).
-spec round(float()) -> integer().
round(Float) ->
erlang:round(Float).
-spec truncate(float()) -> integer().
truncate(Float) ->
erlang:trunc(Float).
-spec absolute_value(float()) -> float().
absolute_value(Float) ->
case Float >= 0.0 of
true ->
Float;
_@1 ->
0.0 - Float
end.
-spec power(float(), float()) -> float().
power(Base, Exponent) ->
math:pow(Base, Exponent).
-spec square_root(float()) -> {ok, float()} | {error, nil}.
square_root(Number) ->
case Number < 0.0 of
true ->
{error, nil};
false ->
{ok, power(Number, 0.5)}
end.
-spec negate(float()) -> float().
negate(X) ->
-1.0 * X.
-spec sum(list(float())) -> float().
sum(Numbers) ->
_pipe = Numbers,
do_sum(_pipe, 0.0).
-spec do_sum(list(float()), float()) -> float().
do_sum(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_sum(Rest, X + Initial)
end.
-spec product(list(float())) -> float().
product(Numbers) ->
case Numbers of
[] ->
0.0;
_@1 ->
do_product(Numbers, 1.0)
end.
-spec do_product(list(float()), float()) -> float().
do_product(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_product(Rest, X * Initial)
end.