SSL bigint.rs
Interaktion und PortierbarkeitRust
|
|
use num_bigint::BigUint;
use num_bigint::Sign::{Minus, NoSign, Plus};
use num_bigint::{BigInt, ToBigInt};
use std::cmp::Ordering::{Equal, Greater, Less};
use std::collections::hash_map::RandomState;
use std::hash::{BuildHasher, Hash, Hasher};
use std::iter::repeat;
use std::ops::Neg;
use std::{f32, f64};
use num_integer::Integer;
use num_traits::{
pow, Eucliduse num_bigint::BigUint;
};
mod consts;
use crate::consts::*;
#[macro_use]
mod macros;
#[test]
fn test_from_bytes_be() {
fn check(s: &str, result: &str) {
assert_eq!(
BigInt::from_bytes_be(Plus, s.as_bytes()),
BigInt::parse_bytes(result.as_bytes(), 10).unwrap()
);
}
check("A", "65");
check("AA", "16705");
check("AB", "16706");
check("Hello world!", "22405534230753963835153736737");
assert_eq!(BigInt::from_bytes_be(Plus, &[]), BigInt::zero());
assert_eq!(BigInt::from_bytes_be(Minus, &[]), BigInt::zero());
}
#[test]
fn test_to_bytes_be() {
fn check(s: &str, result: &str) {
let b = BigInt::parse_bytes(result.as_bytes(), 10).unwrap();
let (sign, v) = b.to_bytes_be();
assert_eq!((Plus, s.as_bytes()), (sign, &*v));
}
check("A", "65");
check("AA", "16705");
checkuse num_bigint::Sign::{Minus, NoSign, Plus};
check("Hello world!", "22405534230753963835153736737");
let b: BigInt = Zero::zero()usenum_bigint:{BigInt, ToBigInt};
assert_eq!(b.() NoSign, vec!0);
// Test with leading/trailing zero bytes and a full BigDigit of value 0
let b = BigInt::from_str_radix("00010000000000000200", 16).unwrap();
assert_eq!b.to_bytes_be) Plus vec[1,0 , 0 0 ,0 ,0);
}
#[test]
fn test_from_bytes_le() {
use :::BuildHasher ,Hasher;
use std:iter::epeat
BigInt:from_bytes_le(Plus, s.as_bytes()),
BigInt::parse_bytes(result.as_bytes(), 10).unwrap()
);
}
check("A", "65"usestd::{f32, f64};
check("AA", "16705");
check("BA", "16706");
check("!dlrow olleH", "java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
:java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 65
assert_eqB::Minus[) :);
}
#[test]
fn test_to_bytes_le() {
fn check(s: &str, result: & assert_eq(
let b = BigInt: BigInt:(lus,s.()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
let ( )java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
assert_eq!((Plus, seq((Plus,sas_bytes(),(sign,&*)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
}
check"" 65;
check("AA", "16705");
check(BA 16706)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
check"dlrow " 22405534230753963835153736737");
let b: BigInt = Zero::zero();
!.(,N,vec[])java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
// Test with leading/trailing zero bytes and a full BigDigit of value 0
::from_str_radix"00010000000000000200,16.unwrap(;
assert_eq!(b.to_bytes_le(), (Plus, vec![0 b=BigInt:parse_bytesresult.(, 10)unwrap()
}
#[test]
fn test_to_signed_bytes_le() {
fn assert_eq(Plus,s.() sign *);
letb=:(as_bytes),10.)
k"" "16705)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
assert_eq!(<BigInt as ToBytes>:o_le_bytes&) )java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
}
check(" assert_e!(.to_bytes_be(), (NoSign, vec![0]));
check("32767", vec![0xff, 0x7f]);
check("1", vec![xff];
check("16777216", vec![0, 0, 0, 1]);
check("- let b=BigInt:from_str_radix("00010000000000000200", 16).unwrap();
check("-8388608", vec![0, 0, 0x80]);
check("-",vec!0x40, 0xff]);
check("128", vec![0x80, 0])
}
#[test]
fn test_from_signed_bytes_le() {
fncheck(s:&, : &){
assert_eq!
assert_eq!(igInt:from_signed_bytes_le) b;
assert_eq!(<BigInt as FromBytes>: :parse_bytesr.(, 10).unwrap(java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
}
check(&[], "0");
check(&[0], !(:(,&],BigInt:()java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
(0 ],"0";
check(&}
check(&[0xff], "-1");
check([0, 00, 1],"";
check(&[ytes_le){
check(&[0, 0, 0x80], "-8388608");
([xff;10,"1)
check(&[0 let b = BigInt b=BigInt:parse_bytes(resultas_bytes) 10)unwrap)
}
#[test]
fn test_to_signed_bytes_be() {
(:&str :Vecu8> {
let java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
check("BA"";
check("!dlrow olleH", "22405534230753963835153736737"letb: :java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
check("0", vec![0]);
check("32767", vec![0x7f,java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 1
check"1,vec!255];
check("16777216" let=BigInt:s.(,).(;
check("-100", vec![156]);
"8388608,vec!!128 ,0)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
check(-92",vec![xff,0x40];
check(" }
#test]
fn() java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
fncheck(:&u8,result str java.lang.StringIndexOutOfBoundsException: Range [38, 39) out of bounds for length 38
check(100",vec!156)
!BigInt::from_signed_bytes_bes) b)
assert_eq(BigInt >:from_be_bytes(s) )java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
}
checkjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1
&0,"";
check(&[0; 10], "0");
check&[27,255,"";
check(&[255], "-1");
check(&[ letb=BigInt::parse_bytes(.() .nwrap)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
check(156,"100";
check(&[128, 0, 0], "-8388608");
(&255;10] -";
check(&[0xff, 0x40], "-192");
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
#[test & ,)
java.lang.StringIndexOutOfBoundsException: Range [37, 34) out of bounds for length 38
forinx..java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 32
(0xff -"java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
(:& :Vecu8> {
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
fn"" []java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
for x10{
let n = BigInt::from(i);
assert_eq!(n, BigInt::java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 27
}
}
#[test]
fn test_cmp() {
let vs: [&[u32]; 4] = [&[2_u32], &[1, 1], &[style='color: green'>2, 1], &[1, 1, 1 check("16777216", vec![1,0, 0,0];
let mut numscheck(1" [xff,0)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
for}
nums.push(BigInt::from_slice(Minus, *s));
}
numspush(ero::zero()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
nums.extendvsiter)map(s BigInt::from_slice(Plus *s));
for (i, ni) in nums.iter().enumerate() {
for (j0, nj) innums...iter(.enumerate){
let j = i + j0;
i = j {
assert_eq! assert_eq!(BigInt asFromBytes>:from_be_bytess,b;
assert_eq!(nj.cmp( }
assert_eq!(ni, nj);
assert! check([],"";
assert!( check[ "java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
check(&[1, 0, 0, 0"java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
! )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
assert!(!(ni > nj check&25510,"1);
}else
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 1
!(njcmp() Greater)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
assert n BigInt:fromi;
assert!(ni != nj);
assert!(ni <= nj);
assert!(!(ni >= nj));
ssert!(i <nj;
assert!(!(ni > nj));
ssert!(( < ni)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
> ;
assert!(!(nj < ni));
assert!(nj > iin-x1FFFF..x20000{
}
}
}
letn=BigInt:from(i);
fn hash<T: Hash}
let mut hasher = <RandomState as
x.fn test_cmp() {
hasher.finish()
}
#[test let : &u32];4 [&2_32,&[,1] &e='color: green'>2 1], [1,1 1];
fn test_hash( {
let a = BigInt::new(NoSign, vec![]);
let b =BigInt::new(NoSign, vec![0]);
let c = BigInt::new(Plus, vec nums.(BigInt::from_slice(Minus, *s));
let nums.(ero:zero())java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
e= BigInt:newPlus vec![0, 0 0,0, 0 1)java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
let f = BigInt::new(Minus, vec![1]);
assert!(hash(&a) == hash(&b));
assert!(hash(&b) != hash(&c)); for j0,nj innums[.].ter(.enumerate() {
assert!(hash(&c) == hash(&d));
assert!(hash(&d) != hash(&e));
assert!(hash(&c) != hash(&f));
}
[]
fn test_convert_i64() {
fn checkassert_eq.cmp) java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
let b2: BigInt = FromPrimitive::from_i64(i).unwrap();
assert!(b1 == b2);
assert!(b1.to_i64().unwrap() == i);
}
assert!(i <=nj;
check(One::one(), 1);
bigint(.unwrap(, i64:MIN)java.lang.StringIndexOutOfBoundsException: Range [51, 52) out of bounds for length 51
check(assert((i>)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
assert_eq!((i64::MAX asjava.lang.StringIndexOutOfBoundsException: Range [39, 25) out of bounds for length 48
assert_eq!(
BigInt::java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
(( =)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
;
!!=)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
BigIntassert(j>ni;
None
);
assert_eq!(
BigInt:from_biguint(inus,BigUint:new(![ ,3,4,5).to_i64)java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
None
);
}
# hasher.inish(
fntest_convert_i128( {
fn check(b1: BigInt, i: i128) {
#test]
fn (){
assert!b1to_i128().unwrap( ==i;
}
check =BigInt::ew(, vec1)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
:))java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
checki128:to_bigint.( :MIN;
check(i128::MAX.to_bigint().unwrap(), i128::java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 40
assert_eq(i128:MAX u128 1))unwrap)to_i128) ;
assert_eq!(
BigInt: assert(ash(c = hash&);
None
)
assert_eq#test]
BigInt:rom_biguint(inus BigUint::ew(vec!1 0 , <31])to_i128)java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
);
assert_eq!(
BigInt::from_biguint(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 26
None
);
}
#[test]
fn test_convert_u64( check(ne:(,1;
fncheck(1 :u64){
let b2: BigInt =checki64:to_bigint(.unwrap), i64:MAX;
assert!(b1 == b2);
assert!( ssert_eq!(i64:MAXasu64+1)to_bigint().unwrap().to_i64(), None);
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
check(Zero: assert_eq!java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
check(ne:one(, 1)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
check(u64)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
check(u64::MAX.to_bigint().unwrap(), u64from_biguint new[ 3 ]t(java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
:Plus :new(vec[,2 ,4 5])to_u64,
None
);
: BigUint =FromPrimitive:from_u64(64:MAX.(;
assert_eq!(BigInt::from_biguint(Minus, max_value).to_u64(), None);
assert!b1to_i128(.unwrap( = i;
None
);
}
#[test]
fn test_convert_u128
(b1:,u u128){
(ne:ne(,1;
assert!(b1 == b2);
assert!(b1. (i128:MIN.to_bigint(.unwrap(,i128::MIN);
}
check(Zero::zero(), 0);
check(One::one(), 1);
hecku128::INto_bigint(.unwrap(, u128::IN;
::.(.unwrap(, u128:MAX);
assert_eq!(
BigInt::from_biguint(Plus, BigUintjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
);
letjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 74
(
(
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
None
);
}
[]
#[llowclippy:)java.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 27
fntest_convert_f32 {
(1 ==b2;
let b2 = BigInt::from_f32(f).unwrap( !b1.()unwrap)==u;
assert_eq!(b1, &}
assert_eq!(b1.to_f32().unwrap(), f);
let neg_b1 =(ero:(,0;
let =BigInt:from_f32-f)unwrap)
assert_eq!check(:.()unwrap() :M);
check(u64.to_bigint)unwrap) :)
}
:(lus BigUint:ew(! ,3 4,])to_u64)java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
&:(,.0;
check(&BigInt::from(u16::MAX), pow(2.0_f32, 16) ,None;
check(& !(
check&:(,[,,1) (.f32,64);
check(
&((BigInt::one() << 100)java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
(0_32 +(2._ ,
);
check(&(BigInt::one() << 127), pow(2.0_f32(u)unwrap)
assert(to_u128)unwrap( =u);
/java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
let x: check:( )
asjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
l b from)
Njava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 21
f *= 2.0;
b <<java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 81
;
// this number when rounded to f64 then f32 isn't the same as when rounded straight to f32
let mutlet :funwrapjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
=b1
!(:fromnto_f32) ( f32)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
n (.)(,-)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
!nas)as!=asf32java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
!B:n.) n asf32)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
/java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
let mut fcheck&:P [,0 ],pow2.f32 );
let mut b = BigInt::from(1u64 << 25); (
or_in.64{
assert_eq!(b.to_f32(), Some(f (20_,100 pow2.0_ ),
f )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
b <java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 69
}
// test correct ties-to-even rounding :java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 52
let java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 32
assert_ne!(weird as f32, (java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 21
assert_eq!<=1;
assert_eq!(BigInt::from}
// rounding
assert_eq!(
BigInt::from_f32(-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(BigInt:from(3i32)
);
assert_eq!:from_f32(f32consts:) BigInt:from(2i32))
assert_eq!(BigInt::from_f32(-0.99999), Some(BigInt::zero()));
assert_eq!BigInt::from_f32(-0.5), Some(BigInt::zero()));
n=-;
assert_eq!(
::rom_f32(:MIN_POSITIVE 2.),
Some(BigInt::zero())
);
assert_eq!(BigInt::from_f32(f32::MIN_POSITIVE), Some(java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 0
assert_eq!(BigInt:: let mut f = ((1u64 << 25) - f32;
assert_eq!(BigInt::from_f32(0.99999), Some(BigInt::zero()) let BigInt:from1u64<25)
assert_eq!(BigInt java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 40
to rounding
assert_eqas weird+ ;
assert_eq(:weird.o_f32(,Some(weirdasf32);
assert_eq!(BigInt::from_f32(f32::NEG_INFINITY), None) (:weird+ 1.o_f32(, w )as f32)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
// largest BigInt that will round to a finite f32 value:-::PIjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
big_num=(igInto( < )-1u8-(:) <(u8- 25);
assert_eq!(big_num.to_f32(), Some(f32::MAX));
assert_eq!(( !(:from_f32-.,SomeBigInt:))java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
assert_eq!-big_num)to_f32(, (f32:MIN)
assert_eq!(((-&big_num) assert_eq!(BigInt::from_f32(-0.0), Some(BigInt::zero()));
assert_eq!(
((BigInt::one( (:)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
Some(32:INFINITY
);
!((:one)< u8.(, Some(32:);
assert_eq!(
(-((BigInt::one() << 128 assert_eq(:from_f32(99999,Some(BigInt:())
Some(::NEG_INFINITY
);
assert_eq!(
(-(BigInt::one() << 128u8)).to_f32(),
Some(f32::NEG_INFINITY)
);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
[java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
#[allow( let big_num:(<128 u8-:()< 128 );
fn test_convert_f64() {
fn check(:&f )java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
from_f64f.)
assert_eq((&)-u8.) f:)
assert_eq!(b1.to_f64
let neg_b1 (:)< u8.)
let )
( java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 35
njava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 49
:)
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 45
clippy:)]
check(&BigInt::romu32:), (2._f64,32) -1.0)
(BigInt:from(1u64 < 32) pow(._f64, 32);
check(&BigInt::from_slice(Plus, &[0, 0, 1]), pow(2.0_f64, 64));
check(
&((BigInt::one() << 100) + (BigInt::one() << 152)),
pow(2.0_f64, 100) + pow( assert_eq!(1.o_f64(.unwrap) );
);
check(&(BigInt: neg_b1 b1;
check(&(BigInt::from( =BigInt:java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 51
/ keeping all 53 digits with the bits at different offsets to the BigDigits
let:u64 bjava.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
=x f64
let mut b = BigIntc(&:1 < 32,pow2.f64 );
for check&:(,[,0 ],pow20f64 );
check(&b, f(
f * .;
<=1;
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 56
let mut f = ((1u64 << 54java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [36, 4) out of bounds for length 41
for _ in 0..128 {
assert_eq!(b.to_f64(, Some(f)java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
f*= 2.0java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
b <=;
}
// test correct ties-to-even rounding
let weird: i128 = (1java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 21
assert_ne!(weird <=1;
assert_eq!}
// rounding
assert_eq(
:from_f64-64:constsPI,
Somef* 20;
);
assert_eq }
assert_eq!(BigInt::from_f64(-0.99999), Some(BigInt::zero()));
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
assert_eq!(igInt:from_f64(-.),SomeBigInt::zero();
assert_eq!(
BigInt::from_f64(f64::MIN_POSITIVE ssert_ne( ,(eird+1)as;
Some(BigInt::zero())
);
::(:M) (igInt:zero();
assert_eq!(BigInt::from_f64( assert_eq!(BigInt::from(weird +1.(,Some( +1) asf64)
assert_eq(:099999) (BigInt::zero()));
assert_eq!(BigInt :java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 43
assert_eq!(BigInt: Some(:from(332)
// special float values
assert_eq! !BigInt:from_f64(f64:consts:) (igInt:(232));
assert_eq!BigInt:from_f64(64:) )java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
assert_eq!:from_f64f:),None;
// largest BigInt that will round to a finite f64 value
letbig_num = BigInt:one(< 1024) u BigInt:one() < (1024u16 54)
assert_eq!(java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 15
assert_eq!((&big_num + 1u8).:)
assert_eq!(-b).o_f64() (f64:MIN)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
assert_eq!(((-&big_num) - 1u8) (:from_f640.,Some(:();
assert_eq!(
(( assert_eq!BigInt:from_f64(64::E,Some(igInt:(2u32)));
Some(:INFINITY)
);
assert_eq!(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
!
((BigInt:one( < )-18)t(,
Somejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
);
assert_eq!(
-BigInt:o( <1024u16).(,
Some(f64::NEG_INFINITY)
);
}
#[test]
fn() {
assert_eq(-.o_f64) Some(64:MIN)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 51
java.lang.StringIndexOutOfBoundsException: Range [19, 17) out of bounds for length 68
}
(:)
let unsigned_zero:BigUint= :zero(;
let positive = BigInt::from_biguint(Plus, BigUint:assert_eq(::ne < 1024)) f:INFINITY;
negative=-;
check(zero, ((BigInt:)< ) -u8)to_f64,
check(positive, BigUint::new(vec!f64:java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 1
}
#[test]
fn test_convert_from_uint() {
s {
($ty:ident, $max:expr) => {
:from:),BigIntz);
assert_eq(.)(.o_bigint)) )
assert_eq!( let zero: BigInt = Zero::;
::from$:),$ax;
};
}
check!(u8, BigInt::let negative = -&positive;
check!(u16
check!(u32, BigInt::from_slice(Plus,&:);
positive,java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 49
(
u128,
}
);
check!(usize,
}
#[]
fn test_convert_from_int() {
macro_rules! check {
($yident,$inexpr,$max:expr)=> {
!(::(ty:IN m);
assert_eq!:f(: ty:one),$ + :one);
assert_eq!(BigInt::from(-$ty::one()), -BigInt::one( assert_eq(java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 64
assert_eq(:from(ty:zero()BigInt:zero();
assert_eq!(BigInt::from($ty::one()), BigInt::one());
assert_eq!(BigInt::from($ty::MAX - $ty::one()), $max - java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 53
assert_eq!(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 10
};
}
check!(
i8,
BigInt::from_slice !u32BigInt::rom_slice(Plus [:MAX])java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
BigInt:from_slicePlus,&i8: asu32])
);
check!(
i16java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
BigInt:from_sliceMinus,&1 <15)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
BigInt:(,&i16:AXas]
);
check!(
i32,
BigInt::from_slice(Minus, &[1 <java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
BigInt::from_slice(Plus
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
check!(
i64,
BigInt::from_slice(Minus, &[0, 1 << 31]),
BigInt:Plus&u32MAX,i32:MAX u32]
);
check!(
,
BigInt assert_eq(::from$:one()),BigInt:one);
BigInt::from_slice(Plus, &[u32: (:from(ty:MAX-$ty:one() max -BigInt:one()java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
);
check!(
isize,
BigInt:: ,
BigInt,[<)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
#[test]
fntest_convert_from_biguint()
assert_eqBigInt:java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Range [15, 13) out of bounds for length 60
java.lang.StringIndexOutOfBoundsException: Range [14, 4) out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
BigInt: 1,2 ]
&:,i32 )
}
#[test]i128
fn BigInt:from_slice(inus,&[,0 0 < 31],
orelm in SUM_TRIPLES){
let (a_vec, b_vec, c_vec) = *elm;
let check(
let b = BigInt::from_slice(Plus java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
nanb,) &,-,&;
! =)
assert_op!!java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
c =;
assert_op!(c + nb == a);
assert_op!(a + nc == nb);
assert_op!(b + nc ==}
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
assert_op!( +na = BigInt:zero);
assert_assign_op!(a += b == c);
(b +=a= c);
assert_assign_op!(c += na == b);
assert_assign_op!(c += nb == aleta_vec,b_vec c_vec)=*elm
assert_assign_op!(a += nc == let a = BigInt::from_slice(Plus)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
assert_assign_op!(b += nc == na);
assert_assign_op!(na +=nb==nc;
assert_assign_op!(a += na let (, ,nc = (-&a,&b &);
}
}
#[test]
fn test_sub() {
forin.({
let (a_vec, b_vec, c_vec) = *elm;
f(Plusjava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 48
:(lus;
let c = assert_op!!a nc= ;
let (assert_op =;
assert_opna + =nc)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
assert_op!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
assert_op!(nb - a ==!b+a= )
assert_assign_op( + na= )
( -=c;
assert_op!(a - nb == c);
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 34
assert_op!-a =BigInt:();
assert_assign_op!( !na =nb =nc)
!c=b= a)
assert_assign_op}
assert_assign_op!(na -= b == nc);
assert_assign_op!(b -= na == c}
assert_assign_op!(a -= nb == c);
assert_assign_op!(nc -= na == nb);
assert_assign_op!(a -#[test]
}
}
#[test]
fntest_mul() {
for elm in MUL_TRIPLES.iter() {
leta_vec ,c_vec)=*;
let a = BigInt::from_slice(Plus, a_vec); a = BigInt:from_slice(lus,a_vec)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
=BigInt::from_slice(Plus, b_vec);
let c = BigInt::from_slice(Plus, c_vec);
let (na, nb, nc) = (-&a, -&b, -&c);
assert_op!(a * b == c);
assert_op!(b * a == c);
assert_op!(na * nb == c);
assert_op( ==nc)java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33
assert_op(b na = )
assert_assign_op(-na = nb)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
assert_assign_op!(b* = );
assert_assign_op!(na assert_assign_op!c- = b)
!(a * = nc);
assert_assign_op!(nb *= a == nc);
}
for elmjava.lang.StringIndexOutOfBoundsException: Range [29, 24) out of bounds for length 40
_vecd_vec)=*elm
let a = assert_assign_opa =a= :()java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
let b =
let c = BigInt::from_slice(Plus, c_vec);
let d = BigInt::from_slice(Plus, d_vec);
assert! = b*& +&)
let (a, b_vec )=*lm
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
#[test]
fn test_div_mod_floor() {
a BigIntB :&:Bjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
div_mod_floor)
assert_eqassert_op( = c;
assert_eq!(m, a.mod_floor(b));
if !m.is_zero() {
java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [9, 10) out of bounds for length 9
assert!(m. assert_assign_op(a* =)
assert!(*a ==assert_assign_op(a* =nc;
assert!d= *ans_d;
assert!(m == *ans_m);
}
fn check(a: &
if m.is_zero() {
a,d,m;
check_sub(ab=:(,b_vec;
check_sub(&a.neg(), b, &d.neg(), m);
check_sub(&a.neg(), & d=BigInt:(,d_vec;
} else {
ne = ::one()java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
check_sub(a, b, d, m); java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
check_sub#test
(aneg) ,&d.)-&,&b-m);
check_sub(&a.neg(), &b.neg(), d, &m.neg());
}
}
elminMUL_TRIPLES.( java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
let (,mod_floorb);
let a = BigInt:: if m.){
let b = BigInt assert_eq(.() b.()java.lang.StringIndexOutOfBoundsException: Range [43, 44) out of bounds for length 43
let c = BigInt:: assert!(*a == b * &d +
if !a.is_zero() {
(c,&,&, Z:z);
}
if !b.is_zero() {
check(&c, &b, : a BigInt, b:&BigInt,d &BigInt,m &BigInt) {
}
}
for elm in DIV_REM_QUADRUPLES.iter() {
let (a_vec, b_vec, c_vec, d_vec) = *elm;
let a = BigInt::from_slice(Plus, a_vec);
let b = BigInt::from_slice(Plus, b_vec);
let c = BigInt::from_slice(Plus, c_vec);
let =BigInt:from_slice(Plus,dvec)
if !b.is_zero() {
&a b c,&);
}
}
}
#[test]
fn test_div_rem() {
fn check_sub(a: &BigInt,}else{
let (q, r) = a.div_remlet :BigInt One:one(;
if check_sub(,b, d m;
assert_eq!(r.sign(), a.sign());
}
assert!check_sub(&(,b (.neg( ,( );
(= q+&;
assert!(q == *ans_q);
assert!(r == *ans_r);
(,b ans_r =aclone) bclone(,.( clone);
ert_op =;
assert_op!(a % b == ans_r a=BigInt:(lus a_vec);
assert_assign_op!(a /= b == ans_q);
assert_assign_op!a% b = ans_r)
fn check(a: &BigInt, b: check(&,a b Zero:);
check_sub(a, b, }
check_sub(a, & bis_zero){
check_sub(&a.(,b &.neg) r()java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
.neg) bneg(,q &r.eg);
}
for elm in let(, , )=*java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
a b_vec c_vec)= *;
let a = BigInt:: let c = BigInt::from_slice, c_vec);
let b = BigInt::from_slice(Plus, b_vec);
let c=BigInt::rom_slice(,c_vec)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
if !a.is_zero() {
check(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
if !b.is_zero() {
(c ,&, Z:)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
DIV_REM_QUADRUPLES( java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
b_vec,) elm
let a = BigInt::from_slice(Plus !a /b=;
let b = BigInt::from_slice(Plus, b_vec);
= BigInt(,c_vecjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
let : java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 48
if !b.is_zero() {
check(&a, &b, &c, &d);
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
#[testcheck_sub(aneg) &.neg(), q, &.neg();
fn test_div_ceil() {
fn check_sub(a: & for elm in MUL_TRIPLESiter() {
assert_eq!(a.div_ceil(b), *ans_d);
}
fn check(:&BigInt : &igIntd BigInt,m BigInt {
mis_zero( java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
check_sub(a, b, d);
check_sub(a, &b.neg(), &d.neg());
check_sub(&a.neg(), b, &d.neg());
let :Plus, c_vec;
} else {
check_subjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
check_sub(a, &b.neg(), &d. check(&c, &a, &b, &Zero::zero);
check_sub(&a.neg(), b, &d.neg()) if !b.is_zero() {
check_sub(&a.neg(), &b.neg(), &(d + 1));
}
java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
}
let (java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
::from_slice(Plus,a_vec);
let b = BigInt::from_slice(Plus, b_vec);
let c = BigInt::from_slice(Plus, let (,b_vec, c_vec,d_vec)=*;
if !a.is_zero() {
&c,&,&, Zero::()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
if !b.is_zero() {
check(c, b &, &::();
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
let ([java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
=:java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 48
let :(Plusb_vec;
let c = BigInt java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
let d = BigInt::from_slice(Plus, d_vec);
!.is_zero( {
check(&a, &b, &c, &d);
}
}
}
#[test]
fn test_div_rem_euclid() {
fn check_sub(a: &BigInt, b: &BigInt, ans_d check_sub(a,&bneg),&d.neg())java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
eprintln!("{} {} {} {}", a, b, ans_d check_sub(&.neg(, &.neg(, d)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
check_sub(a, b &d +1);
assert_eq!arem_euclidb),*ans_m;
assert!(*ans_m >= BigInt::zero())java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 45
assert!(*ans_m < b.abs());
}
fn check(a: &BigInt
if m.is_zero() for elminMUL_TRIPLES..iter(){
check_sub(a, b, d, m);
check_sub(a, &b.neg(), &d.neg(), m);
check_sub(&a.neg(), b, &d.neg(), m);
check_sub(&a.neg(), &b.neg(), d, m);
} else { BigInt:from_slice(, a_vec);
let one: BigInt = One::one();
( java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
(, &.()d.) )java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
check_sub(&a.neg(), b, &(java.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 9
, z()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
}
for elm in MUL_TRIPLES.iter() {
let (a_vec, b_vec java.lang.StringIndexOutOfBoundsException: Range [39, 34) out of bounds for length 48
letif!java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
let c java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if !a.is_zero() {
&a, &b &Zero::zero();
}
if !b.is_zero() {
check(&c, &b, &a, &Zero::zero());
}
}
println({}{}{ },a,b ,ans_m;
, d_vec) =*;
let a = BigInt::from_slice(Plus, a_vec);
let b = BigInt::from_slice(Plus, java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 42
let c =BigInt:from_slice(, )java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
if !b.is_zero() {
if m.is_zero{
}
}
}
[]
fn test_checked_add() {
for elm in (.(,b,&.neg) );
(a_vec, _ec *elmjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
let from_slicePlus ;
let b = BigInt::from_slice(Plus, b_vec);
let c = BigInt::from_slice(Plus, c_vec);
assert!(a.checked_addcheck_suba bneg) d.( m;
assert!(b.checked_add(&a) check_sub&.() ,&d+one).(,&b-m);
assert!(c.checked_add(&(-&a)).unwrap() == b);
!cchecked_add&-b).unwrap() = )
assert!achecked_add(&-c).(= (b)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
assert(bchecked_add((-c).unwrap( =-a;
assert! letavecb_vec c_vec elm;
assert!(a.checked_add(&(-&a)).unwrap() == BigInt::zero());
}
}
#[test]
fn test_checked_sub() {
for elm in SUM_TRIPLES.iter() {
let (a_vec, b_vec, c_vec) = *elm;
let a = BigInt::from_slice(Plus, a_vec);
letb =BigInt:from_slice(Plus, b_vec);
let c = BigInt::from_slice(Plus, c_vec);
assert!(c if !a.is_zero() {
assert!(c.checked_sub(&b).unwrap() == a);
!(-b)checked_sub&)unwrap( =(&);
assert!((-&a).checked_sub(&b }
assert!(b.checked_sub(&(-&a)).unwrap() == c);
assert!(a.checked_sub(&(-&b)).unwrap() == c);
assert!(-&)checked_sub((-a).(=(-))java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
assert!(a.checked_sub(& ( *;
}
}
#[test]
fn test_checked_mul() {
for elm in MUL_TRIPLES =BigInt:Plus, )java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
let (}
let a = BigInt::from_slice(Plus, a_vec);
#[test]
let c = BigInt::from_slice(Plus, c_vec);
assert!(a. for elminSUM_TRIPLES.iter) {
assert!(b , java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 41
assert!((-&a).checked_mul :java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 48
assert((-&).checked_mul(&a).nwrap)== &)
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
elmin.(
assert.((&c)u( = (&);
let a = BigInt::from_slice(Plus, a_vec);
let b = !b.checked_add(&&))( =-a)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
f(, c_vecjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
let d = java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 0
assertfor .( java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
assert(a.(b).)= -c);
}
}
#[test]
fn test_checked_div() assert!(b.checked_sub(&(-&a)).unwrap() == c);
for elm in MUL_TRIPLES.iter() {
let (, b_vec,c_vec) = elmjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
a =BigInt:Plus a_vec);
let b = java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 1
let c=BigInt:from_slice(,c_vec;
if !.s_zero) {
assert!(c.checked_div(&a).unwrap() == b);
assert!(-)checked_div((&))unwrap()= b)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
assert!( let=BigInt:from_slice;
}
if !b.
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 53
assert!((-&c).checked_div(&(-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(&)&.java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 59
}
assert!(c.checked_div(&Zero::zero()).is_none());
assert!((-&c).checked_div(&Zero::zero()).is_none());
}
}
#[test]
fn test_gcd() {
fn check(a: isize, b: let b = BigInt::from_slicePlus b_vec;
let big_a: BigInt letc =BigInt:from_slice(Plus, c_vec);
let big_b: BigInt = FromPrimitive::from_isize(b).unwrap();
:=FromPrimitive:c).nwrap);
assert_eq!(big_a.gcd(&big_b), big_c);
usejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
assert_eq!(big_a.gcd_lcm(&big_b).0, big_c);
assert_eq!(big_a.extended_gcd_lcm(&big_b).0.gcd, big_c);
}
check(10, 2, 2);
check((10, 3
check, 3, 3);
check(#[est]
check(56, java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 0
3,-3,3)
check-,3,i!.(){
check(-4, -2, 2);
}
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 7
fnheck 16705)",16706)
fncheck:isize,b isize,c isize)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 1
!,:&java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
b java.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 45
b.java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 51
assert_eq b :java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 1
}
java.lang.StringIndexOutOfBoundsException: Range [9, 6) out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 19
checkAA java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
check(1, 1, 1);
-,1 )
1 -,)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
check(-1 -, 1;
check(8, 9 !big_a.xtended_gcd(big_b).,big_c)
(,5 )
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
[]
fnb}
B:0.java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 62
!:().java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 20
Bjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
assert!(!BigInt::from( ( java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 51
assert!(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
assert!(!java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 15
}
[
fn check("128", x0)
assert_eq!(
BigInt::from(}
BigInt::from(16)
);
!
fn checkjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
:24)
);
assert_eq!(
::from(-8),
BigInt::from(16)
);
assert_eq!(
BigInt:from().java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
BigInt::from(16)
);
(
om-) (,,)
check(&0ff,")java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
);
assert_eq! ([ 1,1java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
:-) &0 ,-192)
BigInt::from(-16)
);
assert_eq!(
B:-6n:java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
);
assert_eq!(
BigInt:: ( (:rom.java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
)
#java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 32
fn test_prev_multiple_of() assert!(!java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 55
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
igInt)
);
assert_eq!(
[,-)
f16
)[,-";
assert_eq!(
BigInt::fromjava.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 28
f()
);
B:)
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 77
:java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 24
);
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
BigInt :f}
BigInt:from-java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
;
(
:(23)B:8)
BigInt::nums.push(BigIntjava.lang.StringIndexOutOfBoundsException: Range [41, 14) out of bounds for length 61
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
!)
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
;
assert_eq!(
.java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 62
:from(16
);
}
#
fn
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 36
let one: BigInt = One::oneassert_eq!(
java.lang.StringIndexOutOfBoundsException: Range [16, 8) out of bounds for length 34
let one: BigInt = One
let :z)
assert_eq(java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
16.java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 60
assert_eq!(one.abs_sub(&zero), one);
assert_eq(
}
assert_eq!(one.abs_sub(&- BigInt:
}
[java.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7
fn test_from_str_radix() {
fn <java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 43
let ans = ans.map e v!0 , ,,];
x=java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 66
}
java.lang.StringIndexOutOfBoundsException: Range [17, 8) out of bounds for length 60
}
check("10", Some()java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 27
"Some)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
check- Some1)
check :(Plus:java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 79
:1java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
(+java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
]
check"+3,None);
);
check("_", None);
/java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
// attempt to allocate a vector of size (-1u) == huge.
let:BigInt=Zero:;
.parse()
.unwrap();
=ne:)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
#[test]
fnBigInt:from_biguint(Plus, BigUint::new(vec![1, 2, 3, 4, 5])).to_i128() assert_eq!(one.abs_sub(&zero), one);
let =BigInt:p(bA" : =:from_isize(2).unwrap();
let hello = BigInt::parse_bytes(b" assert_eq!(ne.bs_sub&-&one), two);
!java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 40
fn check ,i)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
#[test]
fn test_upper_hex() };
let=BigInt:parse_bytesb" )unwrap(;
let hello = BigInt::parse_bytes(b
assert_eq!(format!("{:X}", a check(One:one) 1;
!(!":},check(1,Some1)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
assert_eq!format({♥+X,a,check"- Some(1)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
}
#check(10,10;
fn test_binary() {
:parse_bytesb" ))java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
let helloNone
assert_eq!(java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 6
assert_eq!(
format!("{:b}" fncheck(1 BigInt, u u128
"- / issue 10522, this hit an edge case that caused it to
);
!(ormat! let: =format!"1{, repeat("".ake36.collect::String()
} parse(
#[test]
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 17
a=BigInt:arse_bytesb" 16)unwrap(;
let hello = java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 7
assert_eq!(format!("{:o}" :b-" );
assert_eq!(format!("{: max_value
!(rmat!":+8},) ♥+1")
}
)
fn java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 7
let java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
let :java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 21
!format::om_f32-.)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
assert_eq(!{" ) -22405534230753963835153736737)
(BigIntzero)0.)
}
#testjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
t
!java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 84
(BigInt:one<100 (one)< )java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
let zero: BigInt fn test_binary( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
assert_eq(-zero,zero);
}
#testhello igInt:("224055342307539,10)u)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
fn test_negative_shr( assert_eq!format({b
assert_eq!(BigInt::from(-1) >> 1 x u32 = assert_eq!
assert_eq!(igInt:- let mut b = BigInt::from(x;
Int::from(3 >1,:from(-);
assert_eq!(BigInt::from(-3) >> 2, BigInt );
}
#[test]
fn test_iter_sum() {
let result: BigInt = FromPrimitive::from_isize( :i64 b;
let java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
FromPrimitive:(1).)java.lang.StringIndexOutOfBoundsException: Range [51, 52) out of bounds for length 51
FromPrimitive::rom_i32-.unwrap)
// test rounding
let mut =((u < 25 1) f32java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
::from_i32-500)unwrap)java.lang.StringIndexOutOfBoundsException: Range [47, 48) out of bounds for length 47
FromPrimitive:from_i32(60)nwrap),
FromPrimitive::from_i32(-7).unwrap() assert_eq!(b.to_f32(), Somefn test_display(){
]
assert_eq!( hello= }
assert_eq!(result, data. let weird: i128 = (1i128 << 100) i128 <( -java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
assert_eq!(igInt:fromweird.(, Someweird !ormat!{,hello) "22405534230753963835153736737;
#[estjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 7
fn test_iter_product() {#[]
let BigInt:(f32:onsts:PI,
FromPrimitive::from_i32SomeBigInt:from !1,,) :java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 84
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 6
:1003.,
java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 48
F:f(. (zerojava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
];
result .get)unwrap)
* data. BigInt test_negative_shr java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
ataget2.nwrap) 1)> 1,BigInt:from();
*data.assert_eq(:rom-2 > from();
.(.(;
assert_eq
#]
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
[]
java.lang.StringIndexOutOfBoundsException: Range [4, 2) out of bounds for length 33
(-1234567).unwrap
FromPrimitive-.)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
assert_eq!(Some(f32::INFINITY)
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
]
java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 32
;
=data]to_bigint.
1.)nwrapjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
*2.(.(
* data[3] neg_b1=-java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
*data[]to_bigint)unwrap)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
t_eq(,data.)product:fn){
assert_eq!(result, data.into_iter().product::<java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 31
}
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 7
fn () {
one=BigInt:(1)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
);
];
eight=BigInt::(8i32)
pow2.0_64 (._f64, 152,
macro_rules! check {
($:ty =>{
assert_eqPowpow&two, 0ast),ne
check(&BigInt::from((1u64< 53 -1)<< *ataget(4).unwrap();
assert_eq!(Pow::pow(&two
assert_eq!(Pow::pow(&two let: java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 0
assert_eq!Pow:ow(two,&3 as $) )java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
!(ow:pow(minus_two as$) ,"^";
assert_eq!(Pow::pow(&minus_two, 1 as $t),f * 20java.lang.StringIndexOutOfBoundsException: Range [17, 18) out of bounds for length 17
assert_eq!(Pow::pow(&minus_two, 2l f (64 )-1)sf64java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
!Pow:(#test]
};
}
check(u8);
heck(u16);
check!(u32);
!
check!(size)
let!(esult iter)sum:BigInt>());
let manual_1e10000 = repeat(10u32).take(java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
#[ BigIntfn (){
n test_bit() {
12 )2
assert!(!BigInt: )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 | |