#![forbid(unsafe_code)]
#![warn(missing_docs)]
#![cfg_attr(all(feature = "no_std", not(feature = "gpu")), no_std)]
#[cfg(feature = "no_std")]
extern crate alloc;
pub mod const_params;
pub mod consts;
pub mod math_compat;
mod coord;
mod datum;
mod dms;
mod ellipsoid;
mod ellps_table;
mod error;
mod prime_meridian;
mod units;
mod math;
mod factors;
mod factors_exact;
mod grid_registry;
mod hessian_factors;
mod operation;
pub mod tissot;
pub mod autodiff;
pub mod projection_generic;
pub mod scalar;
pub mod interval;
pub mod interval_transform;
pub use interval::{Interval, IntervalCoord};
pub use interval_transform::{
Convention, Helmert7, IntervalXyz, MercParams, Rotation, TmercParams,
};
pub mod newton_inverse;
pub use newton_inverse::{newton_inverse, NewtonParams};
pub mod simd;
pub mod epoch;
pub use epoch::{epsg_pmo, Epoch, EpochCoord, EpochParseError, EpochTaggedCrs, RefFrameEpoch};
pub use coord::{Coord, Direction, Enu, Geod, Lp, Lpz, Lpzt, Opk, Uv, Uvw, Uvwt, Xy, Xyz, Xyzt};
pub use datum::{datum_params, find_datum, DatumDef, DatumParams, DatumType};
pub use dms::{decode_sexagesimal_dms, dmstor, parse_leading_f64};
pub use ellipsoid::{
calc_ellipsoid_params, from_a_b, from_a_es, from_a_f, from_a_rf, named as named_ellipsoid,
sphere, try_new as try_new_ellipsoid, Ellipsoid,
};
pub use ellps_table::{find_ellps, EllpsDef, ELLPS_TABLE};
pub use error::{ProjError, ProjResult};
pub use factors::Factors;
pub use factors_exact::FactorsExact;
pub use grid_registry::GridRegistry;
pub use hessian_factors::HessianFactors;
pub use operation::{IoUnits, Operation};
pub use prime_meridian::{find_prime_meridian, prime_meridian_offset, PrimeMeridianDef};
pub use tissot::TissotParams;
pub use units::{find_angular_unit, find_linear_unit, UnitDef};
pub use math::{
aacos, aasin, aatan2, adjlon, asqrt, pj_authalic_lat, pj_authalic_lat_compute_coeffs,
pj_authalic_lat_inverse, pj_auxlat_coeffs, pj_auxlat_convert, pj_auxlat_convert_sc,
pj_auxlat_convert_seta_ceta, pj_clenshaw, pj_enfn, pj_gauss, pj_gauss_ini, pj_inv_gauss,
pj_inv_mlfn, pj_mlfn, pj_msfn, pj_msfn_g, pj_phi2, pj_polyval, pj_qsfn, pj_qsfn_g,
pj_rectifying_radius, pj_sinhpsi2tanphi, pj_tsfn, pj_tsfn_g, pj_zpoly1, pj_zpolyd1,
proj_inv_mdist, proj_mdist, proj_mdist_ini, Apa, AuxLat, Complex, EnFn, Gauss, MDist,
};
pub use consts::{DEG_TO_RAD, M_FORTPI, M_HALFPI, M_PI, M_TWOPI, RAD_TO_DEG, SEC_TO_RAD};
pub use autodiff::{Dual1, Dual2};
pub use projection_generic::{ProjectGeneric, ProjectGenericBox};
pub use scalar::Scalar;
pub mod plate_motion;
pub use plate_motion::{Plate, PlateAngularVelocity, PlateMotionModel};
pub mod covariance;
pub use covariance::CovMatrix2x2;
pub use const_params::{
es_from_rf, GRS80_A, GRS80_ES, GRS80_F, GRS80_RF, WGS84_A, WGS84_E, WGS84_ES, WGS84_F, WGS84_RF,
};
pub mod typed_coord;
pub use typed_coord::{
CrsMarker, Etrs89, Etrs89Coord, Itrf2020, Itrf2020Coord, TypedCoord, TypedEpochCoord,
TypedTransform, Unknown, UnknownCoord, Utm, UtmCoord, WebMercator, WebMercatorCoord, Wgs84,
Wgs84Coord,
};
#[cfg(feature = "oxiz")]
pub mod smtcheck;
#[cfg(feature = "gpu")]
pub mod gpu;