#![cfg_attr(not(feature = "std"), no_std)]
extern crate core;
mod algebra;
mod alias;
mod cast;
mod complex;
pub mod float;
mod float_106;
mod float_option;
mod identity;
pub mod iso;
pub mod num;
mod ops;
pub mod utils_tests;
pub use crate::alias::{Matrix3, Vector3};
pub use crate::algebra::algebra_assoc::AssociativeAlgebra;
pub use crate::algebra::algebra_assoc_div::AssociativeDivisionAlgebra;
pub use crate::algebra::algebra_base::Algebra;
pub use crate::algebra::algebra_div::DivisionAlgebra;
pub use crate::algebra::algebra_properties::{Associative, Commutative, Distributive};
pub use crate::algebra::domain_euclidean::EuclideanDomain;
pub use crate::algebra::field::Field;
pub use crate::algebra::field_complex::ComplexField;
pub use crate::algebra::field_real::RealField;
pub use crate::algebra::group::Group;
pub use crate::algebra::group_abelian::AbelianGroup;
pub use crate::algebra::group_add::AddGroup;
pub use crate::algebra::group_div::DivGroup;
pub use crate::algebra::group_mul::MulGroup;
pub use crate::algebra::magma::{AddMagma, MulMagma};
pub use crate::algebra::module::Module;
pub use crate::algebra::monoid::{AddMonoid, InvMonoid, MulMonoid};
pub use crate::algebra::ring::Ring;
pub use crate::algebra::ring_associative::AssociativeRing;
pub use crate::algebra::ring_com::CommutativeRing;
pub use crate::algebra::rotation::Rotation;
pub use crate::algebra::semigroup::{AddSemigroup, MulSemigroup};
pub use crate::cast::as_primitive::AsPrimitive;
pub use crate::cast::as_scalar::float_as_scalar_impl::FloatAsScalar;
pub use crate::cast::as_scalar::int_as_scalar_impl::IntAsScalar;
pub use crate::cast::from_primitive::FromPrimitive;
pub use crate::cast::num_cast::NumCast;
pub use crate::cast::to_float::{FloatFromInt, IntoFloat};
pub use crate::cast::to_primitive::ToPrimitive;
pub use crate::complex::complex_number::{Complex, Complex32, Complex64};
pub use crate::complex::octonion_number::{Octonion, Octonion32, Octonion64};
pub use crate::complex::quaternion_number::{Quaternion, Quaternion32, Quaternion64};
pub use crate::iso::{AlgebraIso, DivisionAlgebraIso, FieldIso, GroupIso, RingIso};
pub use crate::float::Float;
pub use crate::float_106::Float106;
pub use crate::float_option::FloatOption;
pub use crate::identity::one::{ConstOne, One};
pub use crate::identity::zero::{ConstZero, Zero};
pub use crate::num::Num;
pub use crate::ops::num_ops::*;
mod integer;
pub use crate::integer::{Integer, SignedInt, UnsignedInt};