mod common;
use crate::common::same_value;
const INFINITY: f64 = f64::INFINITY;
#[allow(non_upper_case_globals)]
const NaN: f64 = f64::NAN;
#[test]
fn basic() {
same_value(&[1.0, 2.0, 3.0], 6.0);
same_value(&[1e308], 1e308);
same_value(&[1e308, -1e308], 0.0);
same_value(&[0.1], 0.1);
same_value(&[0.1, 0.1], 0.2);
same_value(&[0.1, -0.1], 0.0);
same_value(
&[1e308, 1e308, 0.1, 0.1, 1e30, 0.1, -1e30, -1e308, -1e308],
0.30000000000000004,
);
same_value(
&[1e20, 0.1, -1e20, 1e20, 0.1, -1e20, 1e20, 0.1, -1e20],
0.30000000000000004,
);
same_value(&[1e30, 0.1, -1e30], 0.1);
}
#[test]
fn complex() {
same_value(
&[
8.98846567431158e+307,
8.988_465_674_311_579e307,
-1.797_693_134_862_315_7e308,
],
9.9792015476736e+291,
);
same_value(
&[
-5.630_637_621_603_525e255,
9.565_271_205_476_345e307,
2.993_760_464_302_079_7e292,
],
9.565_271_205_476_347e307,
);
same_value(
&[
6.739_986_666_787_661e66,
2.0,
-1.2689709186578243e-116,
1.704_601_573_946_735_4e308,
-9.979_201_547_673_601e291,
6.160_926_733_208_294e307,
-3.179_557_053_031_852e234,
-7.027_282_978_772_846e307,
-0.7500000000000001,
],
1.61796594939028e+308,
);
same_value(
&[
0.31150493246968836,
-8.988_465_674_311_582e307,
1.8315037361673755e-270,
-15.999999999999996,
2.9999999999999996,
7.345_200_721_499_384e164,
-2.033582473639399,
-8.98846567431158e+307,
-3.573_729_515_540_599_3e292,
4.13894772383715e-124,
-3.6111186457260667e-35,
2.387_234_887_098_013e180,
7.645295562778372e-298,
3.395189016861822e-103,
-2.6331611115768973e-149,
],
-INFINITY,
);
same_value(
&[
-1.144_258_913_440_990_2e308,
9.593_842_098_384_855e138,
4.494_232_837_155_791e307,
-1.348_269_851_146_736_7e308,
4.494_232_837_155_792e307,
],
-1.593_682_197_156_568_5e308,
);
same_value(
&[
-1.144_258_913_440_990_2e308,
4.494_232_837_155_791e307,
-1.348_269_851_146_736_7e308,
4.494_232_837_155_792e307,
],
-1.593_682_197_156_568_7e308,
);
same_value(
&[
9.593_842_098_384_855e138,
-6.948_356_297_254_111e307,
-1.348_269_851_146_736_7e308,
4.494_232_837_155_792e307,
],
-1.593_682_197_156_568_5e308,
);
same_value(
&[
-2.534_858_246_857_893e115,
8.988_465_674_311_579e307,
8.98846567431158e+307,
],
1.797_693_134_862_315_7e308,
);
same_value(
&[
1.358_812_489_418_619_3e308,
1.480_398_620_115_200_6e223,
6.741_349_255_733_684e307,
],
INFINITY,
);
same_value(
&[
6.741_349_255_733_684e307,
1.797_693_134_862_315_5e308,
-7.388_327_292_663_961e41,
],
INFINITY,
);
same_value(
&[
-1.980_704_062_856_609_3e28,
1.797_693_134_862_315_7e308,
9.9792015476736e+291,
],
1.797_693_134_862_315_7e308,
);
same_value(
&[
-1.021_455_799_117_396_4e61,
1.797_693_134_862_315_7e308,
8.98846567431158e+307,
-8.988_465_674_311_579e307,
],
1.797_693_134_862_315_7e308,
);
same_value(
&[
1.797_693_134_862_315_7e308,
7.999999999999999,
-1.908963895403937e-230,
1.644_595_008_232_026_4e292,
2.073_485_670_760_580_6e205,
],
INFINITY,
);
same_value(
&[
6.197409167220438e-223,
-9.979_201_547_673_601e291,
-1.797_693_134_862_315_7e308,
],
-INFINITY,
);
same_value(
&[
4.49423283715579e+307,
8.944_251_746_776_101e307,
-0.0002441406250000001,
1.175_206_071_004_381_7e308,
4.940_846_717_201_632e292,
-1.683_669_940_645_452_8e308,
],
8.353_845_887_521_184e307,
);
same_value(
&[
8.988_465_674_311_579e307,
7.999999999999998,
7.029158107234023e-308,
-2.2303483759420562e-172,
-1.797_693_134_862_315_7e308,
-8.98846567431158e+307,
],
-1.797_693_134_862_315_7e308,
);
same_value(&[8.98846567431158e+307, 8.98846567431158e+307], INFINITY);
}
#[test]
fn nan_infinity() {
same_value(&[NaN], NaN);
same_value(&[INFINITY, -INFINITY], NaN);
same_value(&[-INFINITY, INFINITY], NaN);
same_value(&[INFINITY], INFINITY);
same_value(&[INFINITY, INFINITY], INFINITY);
same_value(&[-INFINITY], -INFINITY);
same_value(&[-INFINITY, -INFINITY], -INFINITY);
}
#[test]
fn zeros() {
same_value(&[], -0.0);
same_value(&[-0.0], -0.0);
same_value(&[-0.0, -0.0], -0.0);
same_value(&[-0.0, 0.0], 0.0);
same_value(&[0.0], 0.0);
}