val 0.6.0

An arbitrary precision calculator language
Documentation
use super::*;

builtin! {
  Acos {
    name: "acos",
    arity: BuiltinArity::Exact(1),
    call(payload) {
      let argument = payload.number(0)?;

      if argument < &Number::from(-1_i64) || argument > &Number::from(1_i64) {
        return Err(Error::new(
          payload.span,
          "acos argument must be between -1 and 1",
        ));
      }

      Ok(Value::Number(argument.acos(payload.config)))
    }
  }
}