| +Value builtin_fn(Arguments arguments, const Location& loc)
|
| +{
|
| + Parameters parameters = Parameters::parse(std::move(arguments), loc, {"r"}, {"d"});
|
| + parameters.set_caller("fn");
|
| +
|
| + auto name = parameters.exactlyOneOf({ "r", "d" });
|
| + if (!name) {
|
| + return Value::undefined.clone();
|
| + }
|
| +
|
| + double v;
|
| + if (!parameters.validate_number(*name, v)) {
|
| + return Value::undefined.clone();
|
| + }
|
| +
|
| + if (*name == "d") {
|
| + v = v / 2;
|
| + }
|
| +
|
| + auto fn = parameters["$fn"].toDouble();
|
| + auto fs = parameters["$fs"].toDouble();
|
| + auto fa = parameters["$fa"].toDouble();
|
| +
|
| + return Calc::get_fragments_from_r(v, fn, fs, fa);
|
| +}
|