Add no_std support and testing
All checks were successful
timw4mail/rusty-numbers/pipeline/head This commit looks good
All checks were successful
timw4mail/rusty-numbers/pipeline/head This commit looks good
This commit is contained in:
parent
bbfada5c0f
commit
3f6071d196
@ -11,6 +11,11 @@ edition = "2018"
|
|||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
criterion = "0.3"
|
criterion = "0.3"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["std"]
|
||||||
|
alloc = []
|
||||||
|
std = ["alloc"]
|
||||||
|
|
||||||
[[bench]]
|
[[bench]]
|
||||||
name = "stock_functions"
|
name = "stock_functions"
|
||||||
harness = false
|
harness = false
|
||||||
|
10
Jenkinsfile
vendored
10
Jenkinsfile
vendored
@ -16,6 +16,16 @@ pipeline {
|
|||||||
sh "cargo test"
|
sh "cargo test"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stage('Check no_std') {
|
||||||
|
steps {
|
||||||
|
sh "cargo check --no-default-features --features alloc"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Test no_std') {
|
||||||
|
steps {
|
||||||
|
sh "cargo test --no-default-features --features alloc"
|
||||||
|
}
|
||||||
|
}
|
||||||
stage('Coverage') {
|
stage('Coverage') {
|
||||||
steps {
|
steps {
|
||||||
sh "cargo clean"
|
sh "cargo clean"
|
||||||
|
@ -2,6 +2,17 @@
|
|||||||
//! \[WIP\] Arbitrarily large integers
|
//! \[WIP\] Arbitrarily large integers
|
||||||
use crate::num::Sign::*;
|
use crate::num::Sign::*;
|
||||||
use crate::num::*;
|
use crate::num::*;
|
||||||
|
|
||||||
|
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
||||||
|
extern crate alloc;
|
||||||
|
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
||||||
|
use alloc::vec::*;
|
||||||
|
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
||||||
|
use alloc::string::*;
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
use std::prelude::v1::*;
|
||||||
|
|
||||||
use core::convert::TryInto;
|
use core::convert::TryInto;
|
||||||
use core::mem::replace;
|
use core::mem::replace;
|
||||||
use core::ops::{
|
use core::ops::{
|
||||||
|
14
src/lib.rs
14
src/lib.rs
@ -2,8 +2,18 @@
|
|||||||
//!
|
//!
|
||||||
//! Playin' with Numerics in Rust
|
//! Playin' with Numerics in Rust
|
||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
|
#![no_std]
|
||||||
|
|
||||||
use std::f64::consts::{E, PI};
|
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
||||||
|
#[macro_use]
|
||||||
|
extern crate alloc;
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
#[macro_use]
|
||||||
|
extern crate std;
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
use core::f64::consts::{E, PI};
|
||||||
|
|
||||||
pub mod bigint;
|
pub mod bigint;
|
||||||
pub mod num;
|
pub mod num;
|
||||||
@ -183,6 +193,7 @@ pub fn factorial(n: usize) -> Option<u128> {
|
|||||||
/// let invalid = approx_factorial(171.0); // None
|
/// let invalid = approx_factorial(171.0); // None
|
||||||
/// # assert!(invalid.is_none());
|
/// # assert!(invalid.is_none());
|
||||||
/// ```
|
/// ```
|
||||||
|
#[cfg(feature = "std")]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn approx_factorial(n: f64) -> Option<f64> {
|
pub fn approx_factorial(n: f64) -> Option<f64> {
|
||||||
let power = (n / E).powf(n);
|
let power = (n / E).powf(n);
|
||||||
@ -233,6 +244,7 @@ mod tests {
|
|||||||
assert!(it_factorial(35).is_none());
|
assert!(it_factorial(35).is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
#[test]
|
#[test]
|
||||||
fn test_approx_factorial() {
|
fn test_approx_factorial() {
|
||||||
assert!(approx_factorial(170.624).is_some());
|
assert!(approx_factorial(170.624).is_some());
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
use crate::num::Sign::*;
|
use crate::num::Sign::*;
|
||||||
use crate::num::*;
|
use crate::num::*;
|
||||||
use std::cmp::{Ord, Ordering, PartialOrd};
|
use core::cmp::{Ord, Ordering, PartialOrd};
|
||||||
use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign};
|
use core::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign};
|
||||||
|
|
||||||
/// Type representing a fraction
|
/// Type representing a fraction
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user