rename solver to eqn and make pub stuff
This commit is contained in:
		
							parent
							
								
									20f96ede2d
								
							
						
					
					
						commit
						398e4c709b
					
				| @ -6,11 +6,11 @@ use crate::math::Scalar; | ||||
| 
 | ||||
| // an unknown variable with an id
 | ||||
| #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] | ||||
| struct Unknown(i64); | ||||
| pub struct Unknown(i64); | ||||
| 
 | ||||
| type UnknownSet = BTreeSet<Unknown>; | ||||
| pub type UnknownSet = BTreeSet<Unknown>; | ||||
| 
 | ||||
| trait Unknowns { | ||||
| pub trait Unknowns { | ||||
|     fn unknowns(&self) -> UnknownSet; | ||||
|     fn has_unknowns(&self) -> bool; | ||||
|     fn has_unknown(&self, u: Unknown) -> bool; | ||||
| @ -47,7 +47,7 @@ impl fmt::Display for Unknown { | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| enum Expr { | ||||
| pub enum Expr { | ||||
|     Unkn(Unknown), | ||||
|     Const(Scalar), | ||||
|     Sum(Exprs), | ||||
| @ -56,7 +56,7 @@ enum Expr { | ||||
|     Div(Box<Expr>, Box<Expr>), | ||||
| } | ||||
| 
 | ||||
| type Exprs = Vec<Expr>; | ||||
| pub type Exprs = Vec<Expr>; | ||||
| 
 | ||||
| impl Unknowns for Exprs { | ||||
|     fn unknowns(&self) -> UnknownSet { | ||||
| @ -259,26 +259,26 @@ impl Unknowns for Expr { | ||||
| } | ||||
| 
 | ||||
| impl Expr { | ||||
|     fn new_sum(e1: Expr, e2: Expr) -> Expr { | ||||
|     pub fn new_sum(e1: Expr, e2: Expr) -> Expr { | ||||
|         Expr::Sum(vec![e1, e2]) | ||||
|     } | ||||
|     fn new_product(e1: Expr, e2: Expr) -> Expr { | ||||
|     pub fn new_product(e1: Expr, e2: Expr) -> Expr { | ||||
|         Expr::Product(vec![e1, e2]) | ||||
|     } | ||||
|     fn new_neg(e1: Expr) -> Expr { | ||||
|     pub fn new_neg(e1: Expr) -> Expr { | ||||
|         Expr::Neg(Box::new(e1)) | ||||
|     } | ||||
|     fn new_div(num: Expr, den: Expr) -> Expr { | ||||
|     pub fn new_div(num: Expr, den: Expr) -> Expr { | ||||
|         Expr::Div(Box::new(num), Box::new(den)) | ||||
|     } | ||||
|     fn new_minus(e1: Expr, e2: Expr) -> Expr { | ||||
|     pub fn new_minus(e1: Expr, e2: Expr) -> Expr { | ||||
|         Expr::Sum(vec![e1, Expr::new_neg(e2)]) | ||||
|     } | ||||
|     fn new_inv(den: Expr) -> Expr { | ||||
|     pub fn new_inv(den: Expr) -> Expr { | ||||
|         Expr::new_div(Expr::Const(1.), den) | ||||
|     } | ||||
| 
 | ||||
|     fn is_zero(&self) -> bool { | ||||
|     pub fn is_zero(&self) -> bool { | ||||
|         use Expr::*; | ||||
|         match self { | ||||
|             Const(c) => relative_eq!(*c, 0.), | ||||
| @ -286,7 +286,7 @@ impl Expr { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fn is_one(&self) -> bool { | ||||
|     pub fn is_one(&self) -> bool { | ||||
|         use Expr::*; | ||||
|         match self { | ||||
|             Const(c) => relative_eq!(*c, 1.), | ||||
| @ -294,7 +294,7 @@ impl Expr { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fn simplify(self) -> Expr { | ||||
|     pub fn simplify(self) -> Expr { | ||||
|         use Expr::*; | ||||
|         match self { | ||||
|             Sum(es) => { | ||||
| @ -384,7 +384,7 @@ impl Expr { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fn distribute(self) -> Expr { | ||||
|     pub fn distribute(self) -> Expr { | ||||
|         use Expr::*; | ||||
|         trace!("distribute {}", self); | ||||
|         match self { | ||||
| @ -444,7 +444,7 @@ impl fmt::Display for Expr { | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| struct Eqn(Expr, Expr); | ||||
| pub struct Eqn(Expr, Expr); | ||||
| 
 | ||||
| impl Unknowns for Eqn { | ||||
|     fn unknowns(&self) -> UnknownSet { | ||||
| @ -473,11 +473,15 @@ fn ord_by_unkn(a: Expr, b: Expr, u: Unknown) -> Option<(Expr, Expr)> { | ||||
| } | ||||
| 
 | ||||
| impl Eqn { | ||||
|     fn simplify(self) -> Eqn { | ||||
|     pub fn new(l: Expr, r: Expr) -> Self { | ||||
|         Self(l, r) | ||||
|     } | ||||
| 
 | ||||
|     pub fn simplify(self) -> Eqn { | ||||
|         Eqn(self.0.simplify(), self.1.simplify()) | ||||
|     } | ||||
| 
 | ||||
|     fn solve(&self, for_u: Unknown) -> Option<Expr> { | ||||
|     pub fn solve(&self, for_u: Unknown) -> Option<Expr> { | ||||
|         use Expr::*; | ||||
|         if !self.has_unknown(for_u) { | ||||
|             return None; | ||||
| @ -528,7 +532,6 @@ impl Eqn { | ||||
|                     } | ||||
|                 } | ||||
|                 Const(_) => return None, | ||||
|                 _ => return None, | ||||
|             }; | ||||
|             l = new_l; | ||||
|             r = new_r; | ||||
| @ -543,7 +546,7 @@ impl fmt::Display for Eqn { | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| struct Eqns(Vec<Eqn>); | ||||
| pub struct Eqns(Vec<Eqn>); | ||||
| 
 | ||||
| impl Unknowns for Eqns { | ||||
|     fn unknowns(&self) -> UnknownSet { | ||||
| @ -1,4 +1,4 @@ | ||||
| pub mod solver; | ||||
| pub mod eqn; | ||||
| 
 | ||||
| pub type Scalar = f64; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user