Current section
Files
Jump to
Current section
Files
src/gleameter.erl
-module(gleameter).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([add/2, subtract/2, multiply/2, divide/2, product/2, scale/2, over/2, from/1, from_int/1, unwrap/1, unwrap_int/1]).
-export_type([quantity/2, product/2, rate/2, unitless/0]).
-type quantity(FTG, FTH) :: {quantity, FTG} | {gleam_phantom, FTH}.
-type product(FTI, FTJ) :: any() | {gleam_phantom, FTI, FTJ}.
-type rate(FTK, FTL) :: any() | {gleam_phantom, FTK, FTL}.
-type unitless() :: any().
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 23).
-spec add(quantity(float(), FTW), quantity(float(), FTW)) -> quantity(float(), FTW).
add(Lhs, Rhs) ->
{quantity, erlang:element(2, Lhs) + erlang:element(2, Rhs)}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 30).
-spec subtract(quantity(float(), FUD), quantity(float(), FUD)) -> quantity(float(), FUD).
subtract(Lhs, Rhs) ->
{quantity, erlang:element(2, Lhs) - erlang:element(2, Rhs)}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 37).
-spec multiply(quantity(float(), FUK), quantity(float(), FUK)) -> quantity(float(), FUK).
multiply(Lhs, Rhs) ->
{quantity, erlang:element(2, Lhs) * erlang:element(2, Rhs)}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 44).
-spec divide(quantity(float(), FUR), quantity(float(), FUR)) -> quantity(float(), FUR).
divide(Lhs, Rhs) ->
{quantity, case erlang:element(2, Rhs) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:element(2, Lhs) / Gleam@denominator
end}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 51).
-spec product(quantity(float(), FUY), quantity(float(), FVB)) -> quantity(float(), product(FUY, FVB)).
product(Lhs, Rhs) ->
{quantity, erlang:element(2, Lhs) * erlang:element(2, Rhs)}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 58).
-spec scale(float(), quantity(float(), FVI)) -> quantity(float(), FVI).
scale(Lhs, Rhs) ->
{quantity, Lhs * erlang:element(2, Rhs)}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 62).
-spec over(quantity(float(), FVN), quantity(float(), FVQ)) -> quantity(float(), rate(FVN, FVQ)).
over(Lhs, Rhs) ->
{quantity, case erlang:element(2, Rhs) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:element(2, Lhs) / Gleam@denominator
end}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 69).
-spec from(float()) -> quantity(float(), unitless()).
from(Value) ->
{quantity, Value}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 73).
-spec from_int(integer()) -> quantity(integer(), unitless()).
from_int(Value) ->
{quantity, Value}.
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 77).
-spec unwrap(quantity(float(), any())) -> float().
unwrap(Value) ->
erlang:element(2, Value).
-file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 81).
-spec unwrap_int(quantity(integer(), any())) -> integer().
unwrap_int(Value) ->
erlang:element(2, Value).