aprs.me/lib/aprsme/convert.ex
2025-07-06 10:28:27 -05:00

55 lines
1.1 KiB
Elixir

defmodule Aprsme.Convert do
@moduledoc false
@spec wind(number(), :ultimeter, :mph) :: float()
def wind(speed, :ultimeter, :mph), do: speed * 0.0621371192
@spec temp(number(), :ultimeter, :f) :: float()
def temp(value, :ultimeter, :f), do: value * 0.1
@spec speed(number(), :knots, :mph) :: float()
def speed(value, :knots, :mph), do: Float.round(value * 1.15077945, 2)
# Weather unit conversions
@doc """
Converts Fahrenheit to Celsius
"""
def f_to_c(fahrenheit) when is_number(fahrenheit) do
(fahrenheit - 32) * 5 / 9
end
@doc """
Converts Celsius to Fahrenheit
"""
def c_to_f(celsius) when is_number(celsius) do
celsius * 9 / 5 + 32
end
@doc """
Converts mph to km/h
"""
def mph_to_kph(mph) when is_number(mph) do
mph * 1.60934
end
@doc """
Converts km/h to mph
"""
def kph_to_mph(kph) when is_number(kph) do
kph / 1.60934
end
@doc """
Converts inches to mm
"""
def inches_to_mm(inches) when is_number(inches) do
inches * 25.4
end
@doc """
Converts mm to inches
"""
def mm_to_inches(mm) when is_number(mm) do
mm / 25.4
end
end