-module(gleameter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export(['of'/2, unit/8, scale/2, time/2, mass/2, length/2, temperature/2, luminosity/2, current/2, amount/2, times/2, divide/2, inverse/1]). -export_type([value/0, unit/0]). -type value() :: {value, float(), unit()}. -type unit() :: {unit, float(), float(), float(), float(), float(), float(), float(), float()}. -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 5). -spec 'of'(float(), unit()) -> value(). 'of'(Value, Unit) -> {value, Value, Unit}. -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 33). -spec unit( float(), float(), float(), float(), float(), float(), float(), float() ) -> unit(). unit(Scale, Time, Mass, Length, Temperature, Luminosity, Current, Amount) -> {unit, Scale, Time, Mass, Length, Temperature, Luminosity, Current, Amount}. -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 55). -spec scale(unit(), float()) -> unit(). scale(From, Scale) -> erlang:setelement(2, From, Scale). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 59). -spec time(unit(), float()) -> unit(). time(From, Time) -> erlang:setelement(3, From, Time). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 63). -spec mass(unit(), float()) -> unit(). mass(From, Mass) -> erlang:setelement(4, From, Mass). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 67). -spec length(unit(), float()) -> unit(). length(From, Length) -> erlang:setelement(5, From, Length). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 71). -spec temperature(unit(), float()) -> unit(). temperature(From, Temperature) -> erlang:setelement(6, From, Temperature). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 75). -spec luminosity(unit(), float()) -> unit(). luminosity(From, Luminosity) -> erlang:setelement(7, From, Luminosity). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 79). -spec current(unit(), float()) -> unit(). current(From, Current) -> erlang:setelement(8, From, Current). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 83). -spec amount(unit(), float()) -> unit(). amount(From, Amount) -> erlang:setelement(9, From, Amount). -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 87). -spec times(unit(), unit()) -> unit(). times(Lhs, Rhs) -> {unit, erlang:element(2, Lhs) * erlang:element(2, Rhs), erlang:element(3, Lhs) + erlang:element(3, Rhs), erlang:element(4, Lhs) + erlang:element(4, Rhs), erlang:element(5, Lhs) + erlang:element(5, Rhs), erlang:element(6, Lhs) + erlang:element(6, Rhs), erlang:element(7, Lhs) + erlang:element(7, Rhs), erlang:element(8, Lhs) + erlang:element(8, Rhs), erlang:element(9, Lhs) + erlang:element(9, Rhs)}. -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 100). -spec divide(unit(), unit()) -> unit(). divide(Lhs, Rhs) -> {unit, case erlang:element(2, Rhs) of +0.0 -> +0.0; -0.0 -> -0.0; Gleam@denominator -> erlang:element(2, Lhs) / Gleam@denominator end, erlang:element(3, Lhs) - erlang:element(3, Rhs), erlang:element( 4, Lhs ) - erlang:element(4, Rhs), erlang:element(5, Lhs) - erlang:element( 5, Rhs ), erlang:element(6, Lhs) - erlang:element(6, Rhs), erlang:element( 7, Lhs ) - erlang:element(7, Rhs), erlang:element(8, Lhs) - erlang:element( 8, Rhs ), erlang:element(9, Lhs) - erlang:element(9, Rhs)}. -file("/home/theonlytails/IdeaProjects/gleameter/src/gleameter.gleam", 113). -spec inverse(unit()) -> unit(). inverse(Unit) -> {unit, erlang:element(2, Unit), erlang:element(3, Unit) * -1.0, erlang:element(4, Unit) * -1.0, erlang:element(5, Unit) * -1.0, erlang:element(6, Unit) * -1.0, erlang:element(7, Unit) * -1.0, erlang:element(8, Unit) * -1.0, erlang:element(9, Unit) * -1.0}.