| 1173 | |
| 1174 | #[test] |
| 1175 | fn test_float() { |
| 1176 | let a = Float32Array::from(vec![1., f32::MAX, 6., -4., -1., 0.]); |
| 1177 | let b = Float32Array::from(vec![1., f32::MAX, f32::MAX, -3., 45., 0.]); |
| 1178 | let result = add(&a, &b).unwrap(); |
| 1179 | assert_eq!( |
| 1180 | result.as_ref(), |
| 1181 | &Float32Array::from(vec![2., f32::INFINITY, f32::MAX, -7., 44.0, 0.]) |
| 1182 | ); |
| 1183 | |
| 1184 | let result = sub(&a, &b).unwrap(); |
| 1185 | assert_eq!( |
| 1186 | result.as_ref(), |
| 1187 | &Float32Array::from(vec![0., 0., f32::MIN, -1., -46., 0.]) |
| 1188 | ); |
| 1189 | |
| 1190 | let result = mul(&a, &b).unwrap(); |
| 1191 | assert_eq!( |
| 1192 | result.as_ref(), |
| 1193 | &Float32Array::from(vec![1., f32::INFINITY, f32::INFINITY, 12., -45., 0.]) |
| 1194 | ); |
| 1195 | |
| 1196 | let result = div(&a, &b).unwrap(); |
| 1197 | let r = result.as_primitive::<Float32Type>(); |
| 1198 | assert_eq!(r.value(0), 1.); |
| 1199 | assert_eq!(r.value(1), 1.); |
| 1200 | assert!(r.value(2) < f32::EPSILON); |
| 1201 | assert_eq!(r.value(3), -4. / -3.); |
| 1202 | assert!(r.value(5).is_nan()); |
| 1203 | |
| 1204 | let result = rem(&a, &b).unwrap(); |
| 1205 | let r = result.as_primitive::<Float32Type>(); |
| 1206 | assert_eq!(&r.values()[..5], &[0., 0., 6., -1., -1.]); |
| 1207 | assert!(r.value(5).is_nan()); |
| 1208 | } |
| 1209 | |
| 1210 | #[test] |
| 1211 | fn test_decimal() { |