display for results

This commit is contained in:
Christoph J. Scherr 2023-09-10 19:58:36 +02:00
parent aa2ae883af
commit b9b0a40cd6
5 changed files with 90 additions and 13 deletions

View File

@ -15,7 +15,7 @@
#![warn(clippy::pedantic)] #![warn(clippy::pedantic)]
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// //// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
use pt::math::computer::*; use pt::math::computer::{*, self};
use pt::logger::*; use pt::logger::*;
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
@ -126,7 +126,9 @@ fn main() {
for part in cli.expression { for part in cli.expression {
expr += ∂ expr += ∂
} }
info!("exporssion: {}", expr); debug!("exporssion: {}", expr);
let r = Computer::oneshot(expr);
println!("{}", r.unwrap());
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -15,7 +15,7 @@
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// //// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
use pt::{logger, networking::monitoring::uptime}; use pt::{logger, networking::monitoring::uptime, common::*};
// we want the log macros in any case // we want the log macros in any case
#[allow(unused_imports)] #[allow(unused_imports)]
@ -30,8 +30,6 @@ use std::path::PathBuf;
//// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// //// CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
#[allow(dead_code)] #[allow(dead_code)]
const EXIT_SUCCESS: i32 = 0;
const EXIT_FAILURE_USAGE: i32 = 1;
//// STATICS /////////////////////////////////////////////////////////////////////////////////////// //// STATICS ///////////////////////////////////////////////////////////////////////////////////////

View File

@ -23,6 +23,8 @@ pub mod macros;
pub mod printing; pub mod printing;
//// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// //// CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
pub const EXIT_SUCCESS: i32 = 0;
pub const EXIT_FAILURE_USAGE: i32 = 1;
//// STATICS /////////////////////////////////////////////////////////////////////////////////////// //// STATICS ///////////////////////////////////////////////////////////////////////////////////////

View File

@ -30,15 +30,38 @@ use crate::logger::{trace, debug, info, warn, error};
//// MACROS //////////////////////////////////////////////////////////////////////////////////////// //// MACROS ////////////////////////////////////////////////////////////////////////////////////////
//// ENUMS ///////////////////////////////////////////////////////////////////////////////////////// //// ENUMS /////////////////////////////////////////////////////////////////////////////////////////
#[non_exhaustive] // #[non_exhaustive]
pub enum Constants { // #[derive(Debug)]
Pi // pub enum Constants {
} // Pi
// }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
#[non_exhaustive] #[non_exhaustive]
#[derive(Debug)]
/// ## Supported Operations
///
/// This `enum` contains all operations supported in this module.
pub enum Operations { pub enum Operations {
Addit /// Mathmatical addition
Addition,
/// Mathmatical subtraction
Subtraction,
/// Mathmatical multiplication
Multiplication,
/// Mathmatical division
Division,
/// Mathmatical modulo, finite field arithmetic
Modulo,
/// Draw the mathmatical root, attribute n is the nth root
Root(u16),
/// round up
Floor,
/// round down
Ceil,
/// round to nearest integer
/// (commercial rounding)
Round
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
@ -48,11 +71,11 @@ pub enum Functions {
} }
//// STRUCTS /////////////////////////////////////////////////////////////////////////////////////// //// STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
struct Computer; pub struct Computer;
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
#[derive(Debug)] #[derive(Debug)]
struct Term { pub struct Term {
original: String, original: String,
result: Option<ComputeResult>, result: Option<ComputeResult>,
parts: Vec<String> parts: Vec<String>

View File

@ -12,6 +12,7 @@
#![warn(clippy::pedantic)] #![warn(clippy::pedantic)]
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// //// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
use std::fmt::Display;
use num_traits; use num_traits;
//// TYPES ///////////////////////////////////////////////////////////////////////////////////////// //// TYPES /////////////////////////////////////////////////////////////////////////////////////////
@ -52,6 +53,7 @@ pub struct VarResult {
} }
////////////////////////////////////////////////////////////////////////////////////////////////////
#[derive(Debug)] #[derive(Debug)]
pub struct ComplexResult { pub struct ComplexResult {
@ -75,6 +77,7 @@ impl<T: num_traits::PrimInt> From<T> for NumericResult where
} }
} }
////////////////////////////////////////////////////////////////////////////////////////////////////
impl<T: num_traits::PrimInt> From<T> for ComputeResult where impl<T: num_traits::PrimInt> From<T> for ComputeResult where
u128: TryFrom<T>, u128: TryFrom<T>,
u128: TryFrom<T> { u128: TryFrom<T> {
@ -83,12 +86,61 @@ impl<T: num_traits::PrimInt> From<T> for ComputeResult where
} }
} }
////////////////////////////////////////////////////////////////////////////////////////////////////
impl From<NumericResult> for ComputeResult { impl From<NumericResult> for ComputeResult {
fn from(value: NumericResult) -> Self { fn from(value: NumericResult) -> Self {
ComputeResult::Numerical(value) ComputeResult::Numerical(value)
} }
} }
////////////////////////////////////////////////////////////////////////////////////////////////////
impl Display for ComputeResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ComputeResult::Numerical(val) => {
write!(f, "{}", val)
}
ComputeResult::Complex(val) => {
write!(f, "{}", val)
}
ComputeResult::Variable(val) => {
write!(f, "{}", val)
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
impl Display for NumericResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
NumericResult::Float(val) => {
write!(f, "{val}")
}
NumericResult::Signed(val) => {
write!(f, "{val}")
}
NumericResult::Unsigned(val) => {
write!(f, "{val}")
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
impl Display for ComplexResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "")
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
impl Display for VarResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "")
}
}
//// PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////////// //// PUBLIC FUNCTIONS //////////////////////////////////////////////////////////////////////////////
//// PRIVATE FUNCTIONS ///////////////////////////////////////////////////////////////////////////// //// PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////