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]).
-export([decode_params/1]).
-export_type([fit_params/0]).
-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())}.
-spec do_decode_lm_params(
list(gleastsq@options:least_square_options()),
fit_params()
) -> fit_params().
do_decode_lm_params(Params, Acc) ->
case Params of
[] ->
Acc;
[{iterations, I} | Rest] ->
do_decode_lm_params(Rest, erlang:setelement(2, Acc, {some, I}));
[{epsilon, E} | Rest@1] ->
do_decode_lm_params(Rest@1, erlang:setelement(3, Acc, {some, E}));
[{tolerance, T} | Rest@2] ->
do_decode_lm_params(Rest@2, erlang:setelement(4, Acc, {some, T}));
[{damping, D} | Rest@3] ->
do_decode_lm_params(Rest@3, erlang:setelement(5, Acc, {some, D}));
[{damping_increase, Di} | Rest@4] ->
do_decode_lm_params(Rest@4, erlang:setelement(6, Acc, {some, Di}));
[{damping_decrease, Dd} | Rest@5] ->
do_decode_lm_params(Rest@5, erlang:setelement(7, Acc, {some, Dd}))
end.
-spec decode_params(list(gleastsq@options:least_square_options())) -> fit_params().
decode_params(Params) ->
do_decode_lm_params(
Params,
{fit_params, none, none, none, none, none, none}
).