pub struct DimensionalVariable {
pub value: f64,
pub unit: [f64; 8],
}Fields§
§value: f64§unit: [f64; 8]Implementations§
Source§impl DimensionalVariable
A struct representing a dimensional variable with a value and a unit.
impl DimensionalVariable
A struct representing a dimensional variable with a value and a unit.
Sourcepub fn new(value: f64, unit_str: &str) -> Result<Self, String>
pub fn new(value: f64, unit_str: &str) -> Result<Self, String>
Creates a new DimensionalVariable with the given value and unit.
Rules for writing the unit string:
- Use a single
/as a delimiter between the numerator and denominator. - Use
-as a delimiter between individual units - Exponents can be represented either by using
^to indicate exponent (ex.m^2) or without the delimiter (ex.m2) - Inverses can be represented either by negative exponents or in the denominator (ex.
m^-2or1/m^2)
Returns an error if the unit string is invalid or contains unknown units.
Sourcepub fn value_in(&self, unit_str: &str) -> Result<f64, String>
pub fn value_in(&self, unit_str: &str) -> Result<f64, String>
Converts the value of this DimensionalVariable to the specified unit. Returns an error if the unit string is invalid or incompatible.
pub fn check_compatibility(&self, other_unit: [f64; 8]) -> bool
Sourcepub fn is_unitless(&self) -> bool
pub fn is_unitless(&self) -> bool
Returns whether the variable is unitless (all base exponents are 0).
Sourcepub fn try_add(
&self,
other: &DimensionalVariable,
) -> Result<DimensionalVariable, String>
pub fn try_add( &self, other: &DimensionalVariable, ) -> Result<DimensionalVariable, String>
Fallible add with unit compatibility check.
Sourcepub fn try_sub(
&self,
other: &DimensionalVariable,
) -> Result<DimensionalVariable, String>
pub fn try_sub( &self, other: &DimensionalVariable, ) -> Result<DimensionalVariable, String>
Fallible subtraction with unit compatibility check.
Sourcepub fn powi(&self, exp: i32) -> DimensionalVariable
pub fn powi(&self, exp: i32) -> DimensionalVariable
Raise to integer power. Units exponents are multiplied by exp. Returns a new DimensionalVariable.
Sourcepub fn powf(&self, exp: f64) -> Result<DimensionalVariable, String>
pub fn powf(&self, exp: f64) -> Result<DimensionalVariable, String>
Raise to floating power. Returns a new DimensionalVariable.
Sourcepub fn sqrt(&self) -> Result<DimensionalVariable, String>
pub fn sqrt(&self) -> Result<DimensionalVariable, String>
Square root. Allowed only when all unit exponents are value >= 0 (no complex results). Returns a new DimensionalVariable.
Sourcepub fn asin(&self) -> Result<DimensionalVariable, String>
pub fn asin(&self) -> Result<DimensionalVariable, String>
Arcsine function. Requires unitless value in [-1, 1]. Returns angle in radians.
Sourcepub fn acos(&self) -> Result<DimensionalVariable, String>
pub fn acos(&self) -> Result<DimensionalVariable, String>
Arccosine function. Requires unitless value in [-1, 1]. Returns angle in radians.
Sourcepub fn atan(&self) -> Result<DimensionalVariable, String>
pub fn atan(&self) -> Result<DimensionalVariable, String>
Arctangent function. Requires unitless value. Returns angle in radians.
Sourcepub fn neg(&self) -> DimensionalVariable
pub fn neg(&self) -> DimensionalVariable
Negate the value, keeping the same unit.
Sourcepub fn abs(&self) -> DimensionalVariable
pub fn abs(&self) -> DimensionalVariable
Returns the absolute value, keeping the same unit.
Trait Implementations§
Source§impl<'a, 'b> Add<&'b DimensionalVariable> for &'a DimensionalVariable
impl<'a, 'b> Add<&'b DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
+ operator.Source§impl<'b> Add<&'b DimensionalVariable> for DimensionalVariable
impl<'b> Add<&'b DimensionalVariable> for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
+ operator.Source§impl<'a> Add<DimensionalVariable> for &'a DimensionalVariable
impl<'a> Add<DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
+ operator.Source§impl Add for DimensionalVariable
impl Add for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
+ operator.Source§impl AddAssign<&DimensionalVariable> for DimensionalVariable
impl AddAssign<&DimensionalVariable> for DimensionalVariable
Source§fn add_assign(&mut self, rhs: &DimensionalVariable)
fn add_assign(&mut self, rhs: &DimensionalVariable)
+= operation. Read moreSource§impl Display for DimensionalVariable
impl Display for DimensionalVariable
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Formats the DimensionalVariable as a string in the form “value unit”.
The unit is displayed in fraction style (e.g., “m/s^2”) with:
- Positive exponents in the numerator
- Negative exponents in the denominator (as positive values)
- Exponents of 1 are omitted
- Units with exponent 0 are omitted
- Unitless quantities show “(unitless)”
Examples:
- 9.81 m/s^2 for acceleration
- 100 kg*m^2/s^2 for energy
- 3.14 rad for angle
- 5 (unitless) for dimensionless quantities
Source§impl<'a, 'b> Div<&'b DimensionalVariable> for &'a DimensionalVariable
impl<'a, 'b> Div<&'b DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl<'b> Div<&'b DimensionalVariable> for DimensionalVariable
impl<'b> Div<&'b DimensionalVariable> for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl<'a> Div<&'a DimensionalVariable> for f64
impl<'a> Div<&'a DimensionalVariable> for f64
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl<'a> Div<DimensionalVariable> for &'a DimensionalVariable
impl<'a> Div<DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl Div<DimensionalVariable> for f64
impl Div<DimensionalVariable> for f64
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl<'a> Div<f64> for &'a DimensionalVariable
impl<'a> Div<f64> for &'a DimensionalVariable
Source§impl Div<f64> for DimensionalVariable
impl Div<f64> for DimensionalVariable
Source§impl Div for DimensionalVariable
impl Div for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
/ operator.Source§impl DivAssign<&DimensionalVariable> for DimensionalVariable
impl DivAssign<&DimensionalVariable> for DimensionalVariable
Source§fn div_assign(&mut self, rhs: &DimensionalVariable)
fn div_assign(&mut self, rhs: &DimensionalVariable)
/= operation. Read moreSource§impl DivAssign<f64> for DimensionalVariable
impl DivAssign<f64> for DimensionalVariable
Source§fn div_assign(&mut self, rhs: f64)
fn div_assign(&mut self, rhs: f64)
/= operation. Read moreSource§impl<'a, 'b> Mul<&'b DimensionalVariable> for &'a DimensionalVariable
impl<'a, 'b> Mul<&'b DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl<'b> Mul<&'b DimensionalVariable> for DimensionalVariable
impl<'b> Mul<&'b DimensionalVariable> for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl<'a> Mul<&'a DimensionalVariable> for f64
impl<'a> Mul<&'a DimensionalVariable> for f64
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl<'a> Mul<DimensionalVariable> for &'a DimensionalVariable
impl<'a> Mul<DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl Mul<DimensionalVariable> for f64
impl Mul<DimensionalVariable> for f64
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl<'a> Mul<f64> for &'a DimensionalVariable
impl<'a> Mul<f64> for &'a DimensionalVariable
Source§impl Mul<f64> for DimensionalVariable
impl Mul<f64> for DimensionalVariable
Source§impl Mul for DimensionalVariable
impl Mul for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
* operator.Source§impl MulAssign<&DimensionalVariable> for DimensionalVariable
impl MulAssign<&DimensionalVariable> for DimensionalVariable
Source§fn mul_assign(&mut self, rhs: &DimensionalVariable)
fn mul_assign(&mut self, rhs: &DimensionalVariable)
*= operation. Read moreSource§impl MulAssign<f64> for DimensionalVariable
impl MulAssign<f64> for DimensionalVariable
Source§fn mul_assign(&mut self, rhs: f64)
fn mul_assign(&mut self, rhs: f64)
*= operation. Read moreSource§impl<'a> Neg for &'a DimensionalVariable
impl<'a> Neg for &'a DimensionalVariable
Source§impl Neg for DimensionalVariable
impl Neg for DimensionalVariable
Source§impl PartialEq for DimensionalVariable
impl PartialEq for DimensionalVariable
Source§impl PartialOrd for DimensionalVariable
impl PartialOrd for DimensionalVariable
Source§impl<'a, 'b> Sub<&'b DimensionalVariable> for &'a DimensionalVariable
impl<'a, 'b> Sub<&'b DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
- operator.Source§impl<'b> Sub<&'b DimensionalVariable> for DimensionalVariable
impl<'b> Sub<&'b DimensionalVariable> for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
- operator.Source§impl<'a> Sub<DimensionalVariable> for &'a DimensionalVariable
impl<'a> Sub<DimensionalVariable> for &'a DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
- operator.Source§impl Sub for DimensionalVariable
impl Sub for DimensionalVariable
Source§type Output = DimensionalVariable
type Output = DimensionalVariable
- operator.Source§impl SubAssign<&DimensionalVariable> for DimensionalVariable
impl SubAssign<&DimensionalVariable> for DimensionalVariable
Source§fn sub_assign(&mut self, rhs: &DimensionalVariable)
fn sub_assign(&mut self, rhs: &DimensionalVariable)
-= operation. Read more