aboutsummaryrefslogtreecommitdiffstats
path: root/src/num.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/num.rs')
-rw-r--r--src/num.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/num.rs b/src/num.rs
index f17c076..10dfea2 100644
--- a/src/num.rs
+++ b/src/num.rs
@@ -1,7 +1,7 @@
use num_bigint::BigInt;
use num_traits::cast::ToPrimitive;
use num_traits::pow::Pow;
-use num_traits::FromPrimitive;
+use num_traits::{FromPrimitive, Signed};
use std::fmt::{Display, Formatter};
pub enum Num {
@@ -128,6 +128,14 @@ impl Num {
float(self.as_float().ln())
}
+ pub fn log10(self) -> Num {
+ float(self.as_float().log10())
+ }
+
+ pub fn log2(self) -> Num {
+ float(self.as_float().log2())
+ }
+
pub fn floor(self) -> Num {
match self {
Num::Int(i) => int(i),
@@ -163,6 +171,13 @@ impl Num {
}
}
}
+
+ pub fn abs(self) -> Num {
+ match self {
+ Num::Int(i) => int(i.abs()),
+ Num::Float(f) => float(f.abs()),
+ }
+ }
}
fn format_float(f: f64) -> String {