defmodule OrbitCalc do @moduledoc """ Documentation for `OrbitCalc`. """ @doc """ Hello world. ## Examples iex> OrbitCalc.hello() :world """ alias Decimal, as: D @earth_mass D.new("5.9722E+24") @earth_radius D.new("6.371E+6") @g_const D.new("6.674301515151515E-11") def circular_earth_orbit(height, precision) do D.set_context(%D.Context{D.get_context | precision: precision, rounding: :half_up}) radius = D.add(height, @earth_radius) speed = D.mult(@g_const, @earth_mass) |> D.div(radius) |> D.sqrt() time = D.from_float(:math.pi) |> D.mult(2) |> D.mult(radius) |> D.div(speed) %{:speed => speed, :time => time} end end