#![no_std]
#![no_main]
use core::ops::Neg;
use hooks_rs::*;
#[no_mangle]
pub extern "C" fn cbak(_: u32) -> i64 {
0
}
#[no_mangle]
pub extern "C" fn hook(_: u32) -> i64 {
max_iter(1);
if XFL::one().mulratio(false, 1, 2).unwrap_line_number()
!= XFL::one().mulratio(false, 5, 10).unwrap_line_number()
{
rollback(b"", line!().into());
}
let decimal_10 = XFL::new(-14, 1000000000000000).unwrap_line_number();
if XFL::one().mulratio(false, 10, 1).unwrap_line_number() != decimal_10 {
rollback(b"", line!().into());
};
let plus_1000 = XFL::new(-12, 1000000000000000).unwrap_line_number();
let plus_999 = XFL::new(-13, 9990000000000000).unwrap_line_number();
let plus_998 = XFL::new(-13, 9980000000000000).unwrap_line_number();
let minus_1000 = (-plus_1000).unwrap_line_number();
let minus_999 = (-plus_999).unwrap_line_number();
let minus_998 = (-plus_998).unwrap_line_number();
if minus_1000 > minus_999 {
rollback(b"", line!().into());
}
if minus_999 > minus_998 {
rollback(b"", line!().into());
}
if minus_1000 > minus_998 {
rollback(b"", line!().into());
}
if plus_1000 <= plus_999 {
rollback(b"", line!().into());
}
if plus_999 <= plus_998 {
rollback(b"", line!().into());
}
if plus_1000 <= plus_998 {
rollback(b"", line!().into());
}
if minus_1000.exponent() != -12 {
rollback(b"", line!().into());
}
if minus_1000.mantissa() != 1000000000000000 {
rollback(b"", line!().into());
}
if minus_999.exponent() != -13 {
rollback(b"", line!().into());
}
if minus_999.mantissa() != 9990000000000000 {
rollback(b"", line!().into());
}
if minus_998.exponent() != -13 {
rollback(b"", line!().into());
}
if minus_998.mantissa() != 9980000000000000 {
rollback(b"", line!().into());
}
let approx_pi = XFL::new(-15, 3140000000000000).unwrap_line_number();
if 3 != approx_pi.to_int64(0, false).unwrap_line_number() {
rollback(b"", line!().into());
}
let a = XFL::new(17, 1220111606619773).unwrap_line_number();
let expected_negated_enclosing: i64 = 2054861541687565949;
if (-a).unwrap_line_number().0 != expected_negated_enclosing {
rollback(b"", line!().into());
}
let a = XFL::new(-44, 3845483684710632).unwrap_line_number();
let b = XFL::new(-47, 3604275125235076).unwrap_line_number();
let expected_multiplication_enclosing = 5009388803754921537;
if (a * b).unwrap_line_number().0 != expected_multiplication_enclosing {
rollback(b"", line!().into());
}
let a = XFL::new(-17, 9912852236660450)
.unwrap_line_number()
.neg()
.unwrap_line_number();
let b = XFL::new(14, 1663822854409434).unwrap_line_number();
let expected_division_result = XFL::new(-46, 5957877192508581)
.unwrap_line_number()
.neg()
.unwrap_line_number();
if (a / b).unwrap_line_number() != expected_division_result {
rollback(b"", line!().into());
}
let a = XFL::new(-1, 1231231231231230).unwrap_line_number();
let b = XFL::new(-8, 5555555500000000).unwrap_line_number();
let expected_addition_enclosing = 6342299507124445148;
if (a + b).unwrap_line_number().0 != expected_addition_enclosing {
rollback(b"", line!().into());
}
let four = XFL::new(0, 4).unwrap_line_number();
let hundred = XFL::new(0, 100).unwrap_line_number();
let two = XFL::new(0, 2).unwrap_line_number();
let ten = XFL::new(0, 10).unwrap_line_number();
if four.root(2).unwrap_line_number() != two {
rollback(b"four.root(2)", line!().into());
}
if hundred.root(2).unwrap_line_number() != ten {
rollback(b"hundred.root(2)", line!().into());
}
if ten.log().unwrap_line_number() != XFL::one() {
rollback(b"two.log()", line!().into());
}
let thousand = XFL::new(0, 1000).unwrap_line_number();
if thousand.log().unwrap_line_number() != XFL::new(0, 3).unwrap_line_number() {
rollback(b"thousand.log()", line!().into());
}
accept(b"", 0);
}