Adjusted to use the newer Pact structuring.

This commit is contained in:
Myrddin Dundragon 2017-12-17 14:32:46 -05:00
parent 3725a5d9d0
commit ee44b87b1c
4 changed files with 139 additions and 92 deletions

6
Cargo.lock generated
View File

@ -9,7 +9,7 @@ dependencies = [
[[package]] [[package]]
name = "binding" name = "binding"
version = "0.1.0" version = "0.1.0"
source = "git+ssh://git@gitlab.com/CyberMages/Core/binding#8b5d5a9c57a7f87b26bb741067babb7a0b765ae7" source = "git+ssh://git@gitlab.com/CyberMages/Core/binding#d408d4b239e5da791507f1624b9e98b74eaba75e"
dependencies = [ dependencies = [
"scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)", "scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)",
] ]
@ -17,7 +17,7 @@ dependencies = [
[[package]] [[package]]
name = "pact" name = "pact"
version = "0.1.0" version = "0.1.0"
source = "git+ssh://git@gitlab.com/CyberMages/Core/pact#6fc48f7a2d8c8bc049418d1f8ede206cb8818d53" source = "git+ssh://git@gitlab.com/CyberMages/Core/pact#4c817749dc7ea4185bbf2c44bad142399561b3fc"
dependencies = [ dependencies = [
"binding 0.1.0 (git+ssh://git@gitlab.com/CyberMages/Core/binding)", "binding 0.1.0 (git+ssh://git@gitlab.com/CyberMages/Core/binding)",
"scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)", "scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)",
@ -32,7 +32,7 @@ source = "git+ssh://git@gitlab.com/CyberMages/Core/scribe.git#483ccd455c635e4975
[[package]] [[package]]
name = "weave" name = "weave"
version = "0.1.0" version = "0.1.0"
source = "git+ssh://git@gitlab.com/CyberMages/Core/weave.git#b0f38fb13bc7d1ed937fa51e499b602cb175c52b" source = "git+ssh://git@gitlab.com/CyberMages/Core/weave.git#6813b8c17f4b705f62c6092ddd3e8ac933b5af18"
dependencies = [ dependencies = [
"scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)", "scribe 0.5.0 (git+ssh://git@gitlab.com/CyberMages/Core/scribe.git)",
] ]

View File

@ -1,4 +1,4 @@
use std::cmp::PartialEq; use std::cmp::{PartialEq, PartialOrd};
use std::fmt::{Debug, Display}; use std::fmt::{Debug, Display};
use std::mem::size_of; use std::mem::size_of;
use std::ops::{Add, Sub, Mul, Div, Rem}; use std::ops::{Add, Sub, Mul, Div, Rem};
@ -30,31 +30,33 @@ pub trait Number : Zero + One + Add<Output=Self> + Sub<Output=Self> +
/// Returns the maximum of the two numbers.
/// ///
fn max(self, other: Self) -> Self /// ```
{ /// use ::sigils::Number;
if self >= other ///
{ /// let x: f64;
self /// let y: f64;
} ///
else /// x = 1.0f64;
{ /// y = 2.0f64;
other /// assert_eq!(x.maximum(y), y);
} /// ```
} fn maximum(self, other: Self) -> Self;
/// Returns the minimum of the two numbers.
/// ///
fn min(self, other: Self) -> Self /// ```
{ /// use ::sigils::Number;
if self <= other ///
{ /// let x: i16;
self /// let y: i16;
} ///
else /// x = 22i16;
{ /// y = 55i16;
other /// assert_eq!(x.minimum(y), x);
} /// ```
} fn minimum(self, other: Self) -> Self;
/// Create a number from a given string and base radix. /// Create a number from a given string and base radix.
/// ///
@ -797,6 +799,30 @@ macro_rules! int_number_trait_impl
fn maximum(self, other: Self) -> Self
{
if self >= other
{
self
}
else
{
other
}
}
fn minimum(self, other: Self) -> Self
{
if self <= other
{
self
}
else
{
other
}
}
fn from_str_radix(src: &str, radix: u32) -> fn from_str_radix(src: &str, radix: u32) ->
Result<Self, ::std::num::ParseIntError> Result<Self, ::std::num::ParseIntError>
{ {
@ -810,7 +836,8 @@ macro_rules! int_number_trait_impl
/// base float types in rust. /// base float types in rust.
macro_rules! float_number_trait_impl macro_rules! float_number_trait_impl
{ {
($traitName: ident for $varType: ty, $min: expr, $max: expr) => ($traitName: ident for $varType: ty, $min: expr, $max: expr,
$minFunc: ident, $maxFunc: ident) =>
{ {
impl $traitName for $varType impl $traitName for $varType
{ {
@ -823,6 +850,22 @@ macro_rules! float_number_trait_impl
fn maximum(self, other: Self) -> Self
{
unsafe
{
::pact::math::$maxFunc(self, other) as Self
}
}
fn minimum(self, other: Self) -> Self
{
unsafe
{
::pact::math::$minFunc(self, other) as Self
}
}
fn from_str_radix(src: &str, radix: u32) -> fn from_str_radix(src: &str, radix: u32) ->
Result<Self, ::std::num::ParseFloatError> Result<Self, ::std::num::ParseFloatError>
{ {
@ -850,9 +893,11 @@ int_number_trait_impl!(Number for i32, -2147483648i32, 2147483647i32);
int_number_trait_impl!(Number for i64, -9223372036854775808i64, int_number_trait_impl!(Number for i64, -9223372036854775808i64,
9223372036854775807i64); 9223372036854775807i64);
float_number_trait_impl!(Number for f32, -3.40282347e+38f32, float_number_trait_impl!(Number for f32, -3.40282347e+38f32,
3.40282347e+38f32); 3.40282347e+38f32,
fminf, fmaxf);
float_number_trait_impl!(Number for f64, -1.7976931348623157e+308f64, float_number_trait_impl!(Number for f64, -1.7976931348623157e+308f64,
1.7976931348623157e+308f64); 1.7976931348623157e+308f64,
fmin, fmax);
#[cfg(target_pointer_width = "8")] #[cfg(target_pointer_width = "8")]
int_number_trait_impl!(Number for usize, 0usize, 255usize); int_number_trait_impl!(Number for usize, 0usize, 255usize);

View File

@ -1,8 +1,8 @@
use ::binding::{CDouble, CFloat, CInt};
use std::num::FpCategory; use std::num::FpCategory;
use std::ops::Neg; use std::ops::Neg;
use binding::{CDouble, CFloat, CInt};
use ::constants::Constants; use ::constants::Constants;
use ::number::Number; use ::number::Number;
use ::one::One; use ::one::One;
@ -740,7 +740,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::fmaf(self as CFloat, a as CFloat, b as CFloat) as Self ::pact::math::fmaf(self as CFloat, a as CFloat, b as CFloat) as Self
} }
} }
@ -748,7 +748,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::powf(self as CFloat, n as CFloat) as Self ::pact::math::powf(self as CFloat, n as CFloat) as Self
} }
} }
@ -756,7 +756,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::ceilf(self as CFloat) as Self ::pact::math::ceilf(self as CFloat) as Self
} }
} }
@ -764,7 +764,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::floorf(self as CFloat) as Self ::pact::math::floorf(self as CFloat) as Self
} }
} }
@ -772,7 +772,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::roundf(self as CFloat) as Self ::pact::math::roundf(self as CFloat) as Self
} }
} }
@ -780,7 +780,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::truncf(self as CFloat) as Self ::pact::math::truncf(self as CFloat) as Self
} }
} }
@ -792,7 +792,7 @@ impl Real for f32
unsafe unsafe
{ {
::pact::modff(self as CFloat, &mut integer) as Self ::pact::math::modff(self as CFloat, &mut integer) as Self
} }
} }
@ -800,7 +800,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::fabsf(self as CFloat) as Self ::pact::math::fabsf(self as CFloat) as Self
} }
} }
@ -813,7 +813,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::sqrtf(self as CFloat) as Self ::pact::math::sqrtf(self as CFloat) as Self
} }
} }
@ -821,7 +821,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::cbrtf(self as CFloat) as Self ::pact::math::cbrtf(self as CFloat) as Self
} }
} }
@ -829,7 +829,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::expf(self as CFloat) as Self ::pact::math::expf(self as CFloat) as Self
} }
} }
@ -837,7 +837,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::exp2f(self as CFloat) as Self ::pact::math::exp2f(self as CFloat) as Self
} }
} }
@ -845,7 +845,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::expm1f(self as CFloat) as Self ::pact::math::expm1f(self as CFloat) as Self
} }
} }
@ -853,7 +853,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::logf(self as CFloat) as Self ::pact::math::logf(self as CFloat) as Self
} }
} }
@ -866,7 +866,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::log2f(self as CFloat) as Self ::pact::math::log2f(self as CFloat) as Self
} }
} }
@ -874,7 +874,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::log10f(self as CFloat) as Self ::pact::math::log10f(self as CFloat) as Self
} }
} }
@ -882,7 +882,7 @@ impl Real for f32
{ {
unsafe unsafe
{ {
::pact::log1pf(self as CFloat) as Self ::pact::math::log1pf(self as CFloat) as Self
} }
} }
} }
@ -999,7 +999,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::fma(self as CDouble, a as CDouble, b as CDouble) as Self ::pact::math::fma(self as CDouble, a as CDouble, b as CDouble) as Self
} }
} }
@ -1007,7 +1007,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::pow(self as CDouble, n as CDouble) as Self ::pact::math::pow(self as CDouble, n as CDouble) as Self
} }
} }
@ -1015,7 +1015,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::ceil(self as CDouble) as Self ::pact::math::ceil(self as CDouble) as Self
} }
} }
@ -1023,7 +1023,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::floor(self as CDouble) as Self ::pact::math::floor(self as CDouble) as Self
} }
} }
@ -1031,7 +1031,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::round(self as CDouble) as Self ::pact::math::round(self as CDouble) as Self
} }
} }
@ -1039,7 +1039,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::trunc(self as CDouble) as Self ::pact::math::trunc(self as CDouble) as Self
} }
} }
@ -1051,7 +1051,7 @@ impl Real for f64
unsafe unsafe
{ {
::pact::modf(self as CDouble, &mut integer) as Self ::pact::math::modf(self as CDouble, &mut integer) as Self
} }
} }
@ -1059,7 +1059,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::fabs(self as CDouble) as Self ::pact::math::fabs(self as CDouble) as Self
} }
} }
@ -1072,7 +1072,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::sqrt(self as CDouble) as Self ::pact::math::sqrt(self as CDouble) as Self
} }
} }
@ -1080,7 +1080,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::cbrt(self as CDouble) as Self ::pact::math::cbrt(self as CDouble) as Self
} }
} }
@ -1088,7 +1088,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::exp(self as CDouble) as Self ::pact::math::exp(self as CDouble) as Self
} }
} }
@ -1096,7 +1096,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::exp2(self as CDouble) as Self ::pact::math::exp2(self as CDouble) as Self
} }
} }
@ -1104,7 +1104,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::expm1(self as CDouble) as Self ::pact::math::expm1(self as CDouble) as Self
} }
} }
@ -1112,7 +1112,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::log(self as CDouble) as Self ::pact::math::log(self as CDouble) as Self
} }
} }
@ -1125,7 +1125,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::log2(self as CDouble) as Self ::pact::math::log2(self as CDouble) as Self
} }
} }
@ -1133,7 +1133,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::log10(self as CDouble) as Self ::pact::math::log10(self as CDouble) as Self
} }
} }
@ -1141,7 +1141,7 @@ impl Real for f64
{ {
unsafe unsafe
{ {
::pact::log1p(self as CDouble) as Self ::pact::math::log1p(self as CDouble) as Self
} }
} }
} }

View File

@ -1,4 +1,4 @@
use ::binding::{CDouble, CFloat}; use binding::{CDouble, CFloat};
use ::real::Real; use ::real::Real;
use ::trig::radian::Radian; use ::trig::radian::Radian;
@ -193,7 +193,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::cosf(*arg.into() as CFloat) as Self ::pact::math::cosf(*arg.into() as CFloat) as Self
} }
} }
@ -202,7 +202,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::sinf(*arg.into() as CFloat) as Self ::pact::math::sinf(*arg.into() as CFloat) as Self
} }
} }
@ -211,7 +211,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::tanf(*arg.into() as CFloat) as Self ::pact::math::tanf(*arg.into() as CFloat) as Self
} }
} }
@ -220,7 +220,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
Radian::new(::pact::acosf(arg as CFloat) as Self).into() Radian::new(::pact::math::acosf(arg as CFloat) as Self).into()
} }
} }
@ -229,7 +229,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
Radian::new(::pact::asinf(arg as CFloat) as Self).into() Radian::new(::pact::math::asinf(arg as CFloat) as Self).into()
} }
} }
@ -238,7 +238,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
Radian::new(::pact::atanf(arg as CFloat) as Self).into() Radian::new(::pact::math::atanf(arg as CFloat) as Self).into()
} }
} }
@ -247,7 +247,8 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
Radian::new(::pact::atan2f(y as CFloat, x as CFloat) as Self).into() Radian::new(
::pact::math::atan2f(y as CFloat, x as CFloat) as Self).into()
} }
} }
@ -256,7 +257,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::coshf(arg as CFloat) as Self ::pact::math::coshf(arg as CFloat) as Self
} }
} }
@ -264,7 +265,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::sinhf(arg as CFloat) as Self ::pact::math::sinhf(arg as CFloat) as Self
} }
} }
@ -272,7 +273,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::tanhf(arg as CFloat) as Self ::pact::math::tanhf(arg as CFloat) as Self
} }
} }
@ -280,7 +281,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::acoshf(arg as CFloat) as Self ::pact::math::acoshf(arg as CFloat) as Self
} }
} }
@ -288,7 +289,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::asinhf(arg as CFloat) as Self ::pact::math::asinhf(arg as CFloat) as Self
} }
} }
@ -296,7 +297,7 @@ impl Trig for f32
{ {
unsafe unsafe
{ {
::pact::atanhf(arg as CFloat) as Self ::pact::math::atanhf(arg as CFloat) as Self
} }
} }
} }
@ -308,7 +309,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::cos(*arg.into() as CDouble) as Self ::pact::math::cos(*arg.into() as CDouble) as Self
} }
} }
@ -317,7 +318,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::sin(*arg.into() as CDouble) as Self ::pact::math::sin(*arg.into() as CDouble) as Self
} }
} }
@ -326,7 +327,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::tan(*arg.into() as CDouble) as Self ::pact::math::tan(*arg.into() as CDouble) as Self
} }
} }
@ -335,7 +336,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
Radian::new(::pact::acos(arg as CDouble) as Self).into() Radian::new(::pact::math::acos(arg as CDouble) as Self).into()
} }
} }
@ -344,7 +345,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
Radian::new(::pact::asin(arg as CDouble) as Self).into() Radian::new(::pact::math::asin(arg as CDouble) as Self).into()
} }
} }
@ -353,7 +354,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
Radian::new(::pact::atan(arg as CDouble) as Self).into() Radian::new(::pact::math::atan(arg as CDouble) as Self).into()
} }
} }
@ -362,7 +363,8 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
Radian::new(::pact::atan2(y as CDouble, x as CDouble) as Self).into() Radian::new(
::pact::math::atan2(y as CDouble, x as CDouble) as Self).into()
} }
} }
@ -371,7 +373,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::cosh(arg as CDouble) as Self ::pact::math::cosh(arg as CDouble) as Self
} }
} }
@ -379,7 +381,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::sinh(arg as CDouble) as Self ::pact::math::sinh(arg as CDouble) as Self
} }
} }
@ -387,7 +389,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::tanh(arg as CDouble) as Self ::pact::math::tanh(arg as CDouble) as Self
} }
} }
@ -395,7 +397,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::acosh(arg as CDouble) as Self ::pact::math::acosh(arg as CDouble) as Self
} }
} }
@ -403,7 +405,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::asinh(arg as CDouble) as Self ::pact::math::asinh(arg as CDouble) as Self
} }
} }
@ -411,7 +413,7 @@ impl Trig for f64
{ {
unsafe unsafe
{ {
::pact::atanh(arg as CDouble) as Self ::pact::math::atanh(arg as CDouble) as Self
} }
} }
} }