val 0.4.2

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

builtin! {
  Sec {
    name: "sec",
    arity: BuiltinArity::Exact(1),
    call(payload) {
      let cos = payload.arguments[0]
        .number(payload.span)?
        .cos(payload.config);

      if cos.is_zero() {
        return Err(Error::new(payload.span, "Cannot compute sec of π/2 + nπ"));
      }

      Number::from(1_i64)
        .div(&cos, payload.config)
        .map(Value::Number)
        .map_err(|error| error.with_span(payload.span))
    }
  }
}