Current section
Files
Jump to
Current section
Files
src/gleastsq@internal@params.erl
-module(gleastsq@internal@params).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gleastsq\\internal\\params.gleam").
-export([decode_params/1]).
-export_type([fit_params/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type fit_params() :: {fit_params,
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float())}.
-file("src\\gleastsq\\internal\\params.gleam", 19).
?DOC(false).
-spec decode_params(list(gleastsq@options:least_square_options())) -> fit_params().
decode_params(Params) ->
gleam@list:fold(
Params,
{fit_params, none, none, none, none, none, none},
fun(Acc, Param) -> case Param of
{iterations, I} ->
{fit_params,
{some, I},
erlang:element(3, Acc),
erlang:element(4, Acc),
erlang:element(5, Acc),
erlang:element(6, Acc),
erlang:element(7, Acc)};
{epsilon, E} ->
{fit_params,
erlang:element(2, Acc),
{some, E},
erlang:element(4, Acc),
erlang:element(5, Acc),
erlang:element(6, Acc),
erlang:element(7, Acc)};
{tolerance, T} ->
{fit_params,
erlang:element(2, Acc),
erlang:element(3, Acc),
{some, T},
erlang:element(5, Acc),
erlang:element(6, Acc),
erlang:element(7, Acc)};
{damping, D} ->
{fit_params,
erlang:element(2, Acc),
erlang:element(3, Acc),
erlang:element(4, Acc),
{some, D},
erlang:element(6, Acc),
erlang:element(7, Acc)};
{damping_increase, Di} ->
{fit_params,
erlang:element(2, Acc),
erlang:element(3, Acc),
erlang:element(4, Acc),
erlang:element(5, Acc),
{some, Di},
erlang:element(7, Acc)};
{damping_decrease, Dd} ->
{fit_params,
erlang:element(2, Acc),
erlang:element(3, Acc),
erlang:element(4, Acc),
erlang:element(5, Acc),
erlang:element(6, Acc),
{some, Dd}}
end end
).