Fixed trig functions

pull/2/head
Mark 2023-06-14 19:34:57 -07:00
parent 00a421756d
commit 4dfaf2b863
Signed by: Mark
GPG Key ID: AD62BB059C2AAEE4
6 changed files with 42 additions and 50 deletions

View File

@ -2,7 +2,6 @@ use std::collections::VecDeque;
use crate::parser::Token; use crate::parser::Token;
use crate::parser::Function; use crate::parser::Function;
use crate::parser::Operator;
use super::EvalError; use super::EvalError;
@ -38,31 +37,9 @@ pub fn eval_function(f: &Function, args: &VecDeque<Token>) -> Result<Token, Eval
Function::Acos => { return Ok(Token::Quantity(q.acos())); }, Function::Acos => { return Ok(Token::Quantity(q.acos())); },
Function::Atan => { return Ok(Token::Quantity(q.atan())); }, Function::Atan => { return Ok(Token::Quantity(q.atan())); },
Function::Csc => { Function::Csc => { return Ok(Token::Quantity(q.csc())); },
return Ok( Function::Sec => { return Ok(Token::Quantity(q.sec())); },
Token::Operator( Function::Cot => { return Ok(Token::Quantity(q.cot())); },
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.sin())))
)
);
},
Function::Sec => {
return Ok(
Token::Operator(
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.cos())))
)
);
},
Function::Cot => {
return Ok(
Token::Operator(
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.tan())))
)
);
},
Function::Sinh => { return Ok(Token::Quantity(q.sinh())); }, Function::Sinh => { return Ok(Token::Quantity(q.sinh())); },
Function::Cosh => { return Ok(Token::Quantity(q.cosh())); }, Function::Cosh => { return Ok(Token::Quantity(q.cosh())); },
@ -71,30 +48,9 @@ pub fn eval_function(f: &Function, args: &VecDeque<Token>) -> Result<Token, Eval
Function::Acosh => { return Ok(Token::Quantity(q.acosh())); }, Function::Acosh => { return Ok(Token::Quantity(q.acosh())); },
Function::Atanh => { return Ok(Token::Quantity(q.atanh())); }, Function::Atanh => { return Ok(Token::Quantity(q.atanh())); },
Function::Csch => { Function::Csch => { return Ok(Token::Quantity(q.csch())); },
return Ok( Function::Sech => { return Ok(Token::Quantity(q.sech())); },
Token::Operator( Function::Coth => { return Ok(Token::Quantity(q.coth())); },
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.sinh())))
)
);
},
Function::Sech => {
return Ok(
Token::Operator(
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.cosh())))
)
);
},
Function::Coth => {
return Ok(
Token::Operator(
Operator::Flip,
VecDeque::from(vec!(Token::Quantity(q.tanh())))
)
);
},
Function::ToBase Function::ToBase
| Function::NoUnit | Function::NoUnit

View File

@ -145,12 +145,18 @@ impl Quantity {
quant_foward!(sin); quant_foward!(sin);
quant_foward!(cos); quant_foward!(cos);
quant_foward!(tan); quant_foward!(tan);
quant_foward!(csc);
quant_foward!(sec);
quant_foward!(cot);
quant_foward!(asin); quant_foward!(asin);
quant_foward!(acos); quant_foward!(acos);
quant_foward!(atan); quant_foward!(atan);
quant_foward!(sinh); quant_foward!(sinh);
quant_foward!(cosh); quant_foward!(cosh);
quant_foward!(tanh); quant_foward!(tanh);
quant_foward!(csch);
quant_foward!(sech);
quant_foward!(coth);
quant_foward!(asinh); quant_foward!(asinh);
quant_foward!(acosh); quant_foward!(acosh);
quant_foward!(atanh); quant_foward!(atanh);

View File

@ -60,6 +60,9 @@ impl ScalarBase for F64Base {
foward!(sin); foward!(sin);
foward!(cos); foward!(cos);
foward!(tan); foward!(tan);
foward!(csc);
foward!(sec);
foward!(cot);
foward!(asin); foward!(asin);
foward!(acos); foward!(acos);
foward!(atan); foward!(atan);
@ -67,6 +70,9 @@ impl ScalarBase for F64Base {
foward!(sinh); foward!(sinh);
foward!(cosh); foward!(cosh);
foward!(tanh); foward!(tanh);
foward!(csch);
foward!(sech);
foward!(coth);
foward!(asinh); foward!(asinh);
foward!(acosh); foward!(acosh);
foward!(atanh); foward!(atanh);

View File

@ -138,6 +138,9 @@ impl ScalarBase for FloatBase {
foward!(sin); foward!(sin);
foward!(cos); foward!(cos);
foward!(tan); foward!(tan);
foward!(csc);
foward!(sec);
foward!(cot);
foward!(asin); foward!(asin);
foward!(acos); foward!(acos);
foward!(atan); foward!(atan);
@ -145,6 +148,9 @@ impl ScalarBase for FloatBase {
foward!(sinh); foward!(sinh);
foward!(cosh); foward!(cosh);
foward!(tanh); foward!(tanh);
foward!(csch);
foward!(sech);
foward!(coth);
foward!(asinh); foward!(asinh);
foward!(acosh); foward!(acosh);
foward!(atanh); foward!(atanh);

View File

@ -121,6 +121,9 @@ impl ScalarBase for RationalBase {
cant_do!(sin); cant_do!(sin);
cant_do!(cos); cant_do!(cos);
cant_do!(tan); cant_do!(tan);
cant_do!(csc);
cant_do!(sec);
cant_do!(cot);
cant_do!(asin); cant_do!(asin);
cant_do!(acos); cant_do!(acos);
cant_do!(atan); cant_do!(atan);
@ -128,6 +131,9 @@ impl ScalarBase for RationalBase {
cant_do!(sinh); cant_do!(sinh);
cant_do!(cosh); cant_do!(cosh);
cant_do!(tanh); cant_do!(tanh);
cant_do!(csch);
cant_do!(sech);
cant_do!(coth);
cant_do!(asinh); cant_do!(asinh);
cant_do!(acosh); cant_do!(acosh);
cant_do!(atanh); cant_do!(atanh);

View File

@ -41,12 +41,18 @@ pub trait ScalarBase:
fn sin(&self) -> Option<Self>; fn sin(&self) -> Option<Self>;
fn cos(&self) -> Option<Self>; fn cos(&self) -> Option<Self>;
fn tan(&self) -> Option<Self>; fn tan(&self) -> Option<Self>;
fn csc(&self) -> Option<Self>;
fn sec(&self) -> Option<Self>;
fn cot(&self) -> Option<Self>;
fn asin(&self) -> Option<Self>; fn asin(&self) -> Option<Self>;
fn acos(&self) -> Option<Self>; fn acos(&self) -> Option<Self>;
fn atan(&self) -> Option<Self>; fn atan(&self) -> Option<Self>;
fn sinh(&self) -> Option<Self>; fn sinh(&self) -> Option<Self>;
fn cosh(&self) -> Option<Self>; fn cosh(&self) -> Option<Self>;
fn tanh(&self) -> Option<Self>; fn tanh(&self) -> Option<Self>;
fn csch(&self) -> Option<Self>;
fn sech(&self) -> Option<Self>;
fn coth(&self) -> Option<Self>;
fn asinh(&self) -> Option<Self>; fn asinh(&self) -> Option<Self>;
fn acosh(&self) -> Option<Self>; fn acosh(&self) -> Option<Self>;
fn atanh(&self) -> Option<Self>; fn atanh(&self) -> Option<Self>;
@ -206,12 +212,18 @@ impl Scalar {
scalar_foward!(sin); scalar_foward!(sin);
scalar_foward!(cos); scalar_foward!(cos);
scalar_foward!(tan); scalar_foward!(tan);
scalar_foward!(csc);
scalar_foward!(sec);
scalar_foward!(cot);
scalar_foward!(asin); scalar_foward!(asin);
scalar_foward!(acos); scalar_foward!(acos);
scalar_foward!(atan); scalar_foward!(atan);
scalar_foward!(sinh); scalar_foward!(sinh);
scalar_foward!(cosh); scalar_foward!(cosh);
scalar_foward!(tanh); scalar_foward!(tanh);
scalar_foward!(csch);
scalar_foward!(sech);
scalar_foward!(coth);
scalar_foward!(asinh); scalar_foward!(asinh);
scalar_foward!(acosh); scalar_foward!(acosh);
scalar_foward!(atanh); scalar_foward!(atanh);