From 533d73997b279551583d97b0d5523272b83330d9 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Thu, 30 May 2024 08:18:00 -0700 Subject: Add arcsin, arccos, arctan. --- src/parser.rs | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'src/parser.rs') diff --git a/src/parser.rs b/src/parser.rs index badf286..0875d92 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -80,77 +80,98 @@ impl<'a> Parser<'a> { if self.symbol("sin") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::sin), + eval: Box::new(Num::sin), }); return true; } if self.symbol("cos") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::cos), + eval: Box::new(Num::cos), }); return true; } if self.symbol("tan") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::tan), + eval: Box::new(Num::tan), + }); + return true; + } + if self.symbol("asin") || self.symbol("arcsin") { + self.stack.push(Op::Op { + prec: 3, + eval: Box::new(Num::asin), + }); + return true; + } + if self.symbol("acos") || self.symbol("arccos") { + self.stack.push(Op::Op { + prec: 3, + eval: Box::new(Num::acos), + }); + return true; + } + if self.symbol("atan") || self.symbol("arctan") { + self.stack.push(Op::Op { + prec: 3, + eval: Box::new(Num::atan), }); return true; } if self.symbol("sqrt") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::sqrt), + eval: Box::new(Num::sqrt), }); return true; } if self.symbol("log") || self.symbol("ln") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::log), + eval: Box::new(Num::log), }); return true; } if self.symbol("log10") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::log10), + eval: Box::new(Num::log10), }); return true; } if self.symbol("log2") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::log2), + eval: Box::new(Num::log2), }); return true; } if self.symbol("floor") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::floor), + eval: Box::new(Num::floor), }); return true; } if self.symbol("ceil") || self.symbol("ceiling") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::ceil), + eval: Box::new(Num::ceil), }); return true; } if self.symbol("round") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::round), + eval: Box::new(Num::round), }); return true; } if self.symbol("abs") { self.stack.push(Op::Op { prec: 3, - eval: Box::new(eval::Num::abs), + eval: Box::new(Num::abs), }); return true; } -- cgit v1.3.1