moonbit-geofield

    MoonBit geophysical field toolkit for gravity, magnetic field, gridded data, profiles, CSV and GeoJSON.

    geophysics
    gravity
    magnetic
    geojson
    grid
    Download zip
    Version
    0.2.0
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    42

    No dependencies

    #moonbit-geofield

    moonbit-geofield is a dependency-light MoonBit toolkit for deterministic geophysical field workflows. It provides transparent, composable building blocks for gravity, magnetic-field approximations, regular latitude/longitude grids, profiles, coordinate transforms, statistics, and simple scientific-data export.

    #Core capabilities

    • WGS84/Somigliana normal gravity, free-air, Bouguer, terrain, and uncertainty helpers.
    • Dipole magnetic-field vectors with declination, inclination, intensity, profiles, and grids.
    • Compact spherical-harmonic coefficient tables with text parsing, validation, evaluation, and round trips.
    • Grid sampling, interpolation, convolution, Sobel edges, resampling, pyramids, masking, connected components, IDW interpolation, and contours.
    • Series analysis including interpolation, derivatives, integration, smoothing, correlation, regression, histograms, and robust outlier reports.
    • ECEF/ENU conversions, geodesic utilities, CSV/TSV/XYZ/GeoJSON export, and deterministic CLI examples.

    #Quick start

    moon add 2515050243qyf/moonbit-geofield moon check --deny-warn --target all moon test --deny-warn --target all moon run --target native cmd/main

    #Example

    ///|
    test {
    let station : GeoPoint = { lat: 32.0, lon: 118.0, elevation_m: 25.0 }
    let gravity = normal_gravity_mgal(station.lat)
    assert_true(gravity > 979000.0 && gravity < 980000.0)

    let grid = make_grid(
    origin_lat=32.0,
    origin_lon=118.0,
    lat_step=0.5,
    lon_step=0.5,
    rows=2,
    cols=2,
    values=[10.0, 12.0, 18.0, 22.0],
    )
    let value = grid.sample_bilinear({ lat: 32.25, lon: 118.25, elevation_m: 0.0 })
    assert_true(value is Some(15.5))
    }

    #Numerical scope

    Distances and elevations are metres, gravity results are mGal, and magnetic intensities are nT unless a function name states otherwise. Grid coordinates are regular latitude/longitude coordinates in degrees. Missing and non-finite values are handled explicitly. Dipole and compact harmonic routines are transparent approximations; authoritative EGM, WMM, or IGRF coefficient tables are supplied by the calling application.

    #Validation

    The repository runs formatting, generated-interface checks, strict all-target compilation, tests, native build, CLI smoke tests, and a native benchmark. Run moon run --target native cmd/bench to obtain a workload size, elapsed time, and runtime checksum for the current machine.

    #License

    Apache-2.0. See LICENSE.

    CoefficientTable

    pub(all) struct CoefficientTable {
    reference_radius_m : Double
    scale : Double
    terms : Array[HarmonicTerm]
    source : String
    } derive(Eq,
    Debug
    )

    ContourSegment

    pub(all) struct ContourSegment {
    start : GeoPoint
    finish : GeoPoint
    level : Double
    } derive(Eq,
    Debug
    )

    CovarianceSummary

    pub(all) struct CovarianceSummary {
    covariance : Double
    correlation : Double
    samples : Int
    } derive(Eq,
    Debug
    )

    CrossValidationReport

    pub(all) struct CrossValidationReport {
    samples : Int
    predictions : Array[Double]
    residuals : Array[Double]
    rmse : Double
    mean_absolute_error : Double
    } derive(Eq,
    Debug
    )

    DegreeSummary

    pub(all) struct DegreeSummary {
    degree : Int
    terms : Int
    cosine_energy : Double
    sine_energy : Double
    } derive(Eq,
    Debug
    )

    FieldSample

    pub(all) struct FieldSample {
    point : GeoPoint
    value : Double
    name : String
    } derive(Eq,
    Debug
    )

    A scalar geophysical observation attached to a geographic point.

    FieldSeries

    pub(all) struct FieldSeries {
    name : String
    points : Array[SeriesPoint]
    } derive(Eq,
    Debug
    )

    A named ordered sequence of field observations.

    GeoPoint

    pub(all) struct GeoPoint {
    lat : Double
    lon : Double
    elevation_m : Double
    } derive(Eq,
    Debug
    )

    A geographic point in degrees and metres.

    Gradient

    pub(all) struct Gradient {
    north_per_degree : Double
    east_per_degree : Double
    magnitude : Double
    azimuth_deg : Double
    } derive(Eq,
    Debug
    )

    GravityComponents

    pub(all) struct GravityComponents {
    normal_mgal : Double
    free_air_mgal : Double
    bouguer_mgal : Double
    terrain_mgal : Double
    } derive(Eq,
    Debug
    )

    Grid

    pub(all) struct Grid {
    origin_lat : Double
    origin_lon : Double
    lat_step : Double
    lon_step : Double
    rows : Int
    cols : Int
    values : Array[Double]
    } derive(Eq,
    Debug
    )

    Regular latitude/longitude grid in row-major order.

    Grid::aspect_degrees

    fn Grid::aspect_degrees(self : Grid, row : Int, col : Int) -> Double?

    Grid::boundary

    fn Grid::boundary(self : Grid, border : Int) -> Grid

    Grid::cell

    fn Grid::cell(self : Grid, row : Int, col : Int) -> GridCell?

    Grid::cell_centres

    fn Grid::cell_centres(self : Grid) -> Array[GeoPoint]

    Grid::cells

    fn Grid::cells(self : Grid) -> Array[GridCell]

    Grid::clamp_values

    fn Grid::clamp_values(self : Grid, range : NumericRange) -> Grid

    Grid::column

    fn Grid::column(self : Grid, col : Int) -> Array[Double]

    Grid::combine

    fn Grid::combine(self : Grid, other : Grid, operation : (Double, Double) -> Double) -> Grid?

    Grid::connected_components

    fn Grid::connected_components(self : Grid, predicate : (Double) -> Bool) -> Array[RegionSummary]

    Grid::contains

    fn Grid::contains(self : Grid, point : GeoPoint) -> Bool

    Grid::contour

    fn Grid::contour(self : Grid, level : Double) -> Array[ContourSegment]

    Extract marching-squares segments for one contour level.

    Grid::contours

    fn Grid::contours(self : Grid, levels : ArrayView[Double]) -> Array[ContourSegment]

    Grid::convolve

    fn Grid::convolve(self : Grid, kernel : Kernel3x3) -> Grid

    Grid::count_where

    fn Grid::count_where(self : Grid, predicate : (Double) -> Bool) -> Int

    Grid::crop

    fn Grid::crop(self : Grid, first_row : Int, first_col : Int, rows : Int, cols : Int) -> Grid

    Grid::difference

    fn Grid::difference(self : Grid, other : Grid) -> Grid?

    Grid::downsample_max

    fn Grid::downsample_max(self : Grid, factor : Int) -> Grid

    Grid::downsample_mean

    fn Grid::downsample_mean(self : Grid, factor : Int) -> Grid

    Grid::downsample_min

    fn Grid::downsample_min(self : Grid, factor : Int) -> Grid

    Grid::downsample_with

    fn Grid::downsample_with(self : Grid, factor : Int, reducer : (ArrayView[Double]) -> Double) -> Grid

    Grid::edge_strength

    fn Grid::edge_strength(self : Grid) -> Grid

    Grid::extent

    fn Grid::extent(self : Grid) -> GridExtent

    Grid::fill_missing_focal

    fn Grid::fill_missing_focal(self : Grid, radius : Int) -> Grid

    Grid::fill_missing_nearest

    fn Grid::fill_missing_nearest(self : Grid) -> Grid

    Grid::focal_max

    fn Grid::focal_max(self : Grid, radius : Int) -> Grid

    Grid::focal_mean

    fn Grid::focal_mean(self : Grid, radius : Int) -> Grid

    Grid::focal_median

    fn Grid::focal_median(self : Grid, radius : Int) -> Grid

    Grid::focal_min

    fn Grid::focal_min(self : Grid, radius : Int) -> Grid

    Grid::focal_quantile

    fn Grid::focal_quantile(self : Grid, radius : Int, fraction : Double) -> Grid

    Grid::gaussian_blur

    fn Grid::gaussian_blur(self : Grid, radius : Int) -> Grid

    Grid::gradient

    fn Grid::gradient(self : Grid) -> Grid

    Grid::gradient_at

    fn Grid::gradient_at(self : Grid, row : Int, col : Int) -> Gradient?

    Grid::grid_region_summaries

    fn Grid::grid_region_summaries(self : Grid, labels : Grid) -> Array[RegionSummary]

    Grid::hillshade

    fn Grid::hillshade(self : Grid, illumination_deg : Double) -> Grid

    Grid::index

    fn Grid::index(self : Grid, row : Int, col : Int) -> Int?

    Grid::integral

    fn Grid::integral(self : Grid) -> Double

    Grid::interior

    fn Grid::interior(self : Grid, border : Int) -> Grid

    Grid::is_valid

    fn Grid::is_valid(self : Grid) -> Bool

    Grid::laplacian

    fn Grid::laplacian(self : Grid) -> Grid

    Grid::laplacian_at

    fn Grid::laplacian_at(self : Grid, row : Int, col : Int) -> Double?

    Grid::local_standard_deviation

    fn Grid::local_standard_deviation(self : Grid, radius : Int) -> Grid

    Grid::local_variance

    fn Grid::local_variance(self : Grid, radius : Int) -> Grid

    Grid::local_z_score

    fn Grid::local_z_score(self : Grid, radius : Int) -> Grid

    Grid::map

    fn Grid::map(self : Grid, transform : (Double) -> Double) -> Grid

    Grid::map_cells

    fn Grid::map_cells(self : Grid, transform : (GridCell) -> Double) -> Grid

    Grid::mask

    fn Grid::mask(self : Grid, predicate : (GridCell) -> Bool, replacement : Double) -> Grid

    Grid::mean_absolute

    fn Grid::mean_absolute(self : Grid) -> Double

    Grid::min_max

    fn Grid::min_max(self : Grid) -> (Double, Double)

    Grid::nearest_cell

    fn Grid::nearest_cell(self : Grid, point : GeoPoint) -> GridCell?

    Grid::normalize

    fn Grid::normalize(self : Grid) -> Grid

    Grid::offset

    fn Grid::offset(self : Grid, amount : Double) -> Grid

    Grid::pad

    fn Grid::pad(self : Grid, border : Int, value : Double) -> Grid

    Grid::point_at

    fn Grid::point_at(self : Grid, row : Int, col : Int) -> GeoPoint?

    Grid::pyramid

    fn Grid::pyramid(self : Grid, levels : Int) -> Array[Grid]

    Grid::quantize

    fn Grid::quantize(self : Grid, step : Double) -> Grid

    Grid::rank_transform

    fn Grid::rank_transform(self : Grid) -> Grid

    Grid::raster_stats

    fn Grid::raster_stats(self : Grid) -> RasterStats

    Grid::reclassify

    fn Grid::reclassify(self : Grid, breaks : ArrayView[Double], classes : ArrayView[Double]) -> Grid

    Grid::replace_missing

    fn Grid::replace_missing(self : Grid, replacement : Double) -> Grid

    Grid::resample

    fn Grid::resample(self : Grid, rows : Int, cols : Int) -> Grid

    Grid::resample_nearest

    fn Grid::resample_nearest(self : Grid, rows : Int, cols : Int) -> Grid

    Grid::rescale_values

    fn Grid::rescale_values(self : Grid, target : NumericRange) -> Grid

    Grid::row

    fn Grid::row(self : Grid, row : Int) -> Array[Double]

    Grid::sample_bilinear

    fn Grid::sample_bilinear(self : Grid, point : GeoPoint) -> Double?

    Grid::sample_nearest

    fn Grid::sample_nearest(self : Grid, point : GeoPoint) -> Double?

    Grid::scale

    fn Grid::scale(self : Grid, factor : Double) -> Grid

    Grid::slope_degrees

    fn Grid::slope_degrees(self : Grid, row : Int, col : Int) -> Double?

    Grid::sobel_east

    fn Grid::sobel_east(self : Grid) -> Grid

    Grid::sobel_north

    fn Grid::sobel_north(self : Grid) -> Grid

    Grid::summary

    fn Grid::summary(self : Grid) -> Summary

    Grid::threshold

    fn Grid::threshold(self : Grid, level : Double, low : Double, high : Double) -> Grid

    Grid::threshold_mask

    fn Grid::threshold_mask(self : Grid, range : NumericRange) -> Grid

    Grid::tile

    fn Grid::tile(self : Grid, tile_rows : Int, tile_cols : Int) -> Array[Grid]

    Grid::tile_index

    fn Grid::tile_index(self : Grid, row : Int, col : Int, tile_rows : Int, tile_cols : Int) -> Int?

    Grid::transpose

    fn Grid::transpose(self : Grid) -> Grid

    Grid::valid_fraction

    fn Grid::valid_fraction(self : Grid) -> Double

    Grid::value_at

    fn Grid::value_at(self : Grid, row : Int, col : Int) -> Double?

    Grid::value_range

    fn Grid::value_range(self : Grid) -> NumericRange

    Grid::window

    fn Grid::window(self : Grid, row : Int, col : Int, radius : Int) -> Array[Double]

    Grid::window_summary

    fn Grid::window_summary(self : Grid, row : Int, col : Int, radius : Int) -> Summary

    GridCell

    pub(all) struct GridCell {
    row : Int
    col : Int
    point : GeoPoint
    value : Double
    } derive(Eq,
    Debug
    )

    GridExtent

    pub(all) struct GridExtent {
    min_lat : Double
    max_lat : Double
    min_lon : Double
    max_lon : Double
    } derive(Eq,
    Debug
    )

    HarmonicTerm

    pub(all) struct HarmonicTerm {
    degree : Int
    order : Int
    cosine : Double
    sine : Double
    } derive(Eq,
    Debug
    )

    One coefficient pair for a compact spherical-harmonic-style model.

    HistogramBin

    pub(all) struct HistogramBin {
    lower : Double
    upper : Double
    count : Int
    } derive(Eq,
    Debug
    )

    Kernel3x3

    pub(all) struct Kernel3x3 {
    values : Array[Double]
    divisor : Double
    } derive(Eq,
    Debug
    )

    LeastSquaresResult

    pub(all) struct LeastSquaresResult {
    coefficients : Array[Double]
    residual_sum_squares : Double
    rank : Int
    samples : Int
    } derive(Eq,
    Debug
    )

    MagneticField

    pub(all) struct MagneticField {
    north_nt : Double
    east_nt : Double
    down_nt : Double
    total_nt : Double
    declination_deg : Double
    inclination_deg : Double
    } derive(Eq,
    Debug
    )

    MagneticPole

    pub(all) struct MagneticPole {
    latitude_deg : Double
    longitude_deg : Double
    strength_nt : Double
    } derive(Eq,
    Debug
    )

    Matrix

    pub(all) struct Matrix {
    rows : Int
    cols : Int
    values : Array[Double]
    } derive(Eq,
    Debug
    )

    Dense row-major matrix used by small least-squares and transformation tasks.

    Matrix::column

    fn Matrix::column(self : Matrix, col : Int) -> Array[Double]

    Matrix::get

    fn Matrix::get(self : Matrix, row : Int, col : Int) -> Double?

    Matrix::map

    fn Matrix::map(self : Matrix, transform : (Double) -> Double) -> Matrix

    Matrix::multiply_vector

    fn Matrix::multiply_vector(self : Matrix, vector : ArrayView[Double]) -> Array[Double]

    Matrix::row

    fn Matrix::row(self : Matrix, row : Int) -> Array[Double]

    Matrix::scale

    fn Matrix::scale(self : Matrix, factor : Double) -> Matrix

    Matrix::set

    fn Matrix::set(self : Matrix, row : Int, col : Int, value : Double) -> Bool

    Matrix::transpose

    fn Matrix::transpose(self : Matrix) -> Matrix

    MissingPolicy

    pub enum MissingPolicy {
    SkipMissing
    PreserveMissing
    ReplaceWith(value~ : Double)
    } derive(Eq,
    Debug
    )

    NumericRange

    pub(all) struct NumericRange {
    minimum : Double
    maximum : Double
    } derive(Eq,
    Debug
    )

    A closed numeric interval used by quality-control and resampling APIs.

    OutlierReport

    pub(all) struct OutlierReport {
    indices : Array[Int]
    center : Double
    scale : Double
    } derive(Eq,
    Debug
    )

    PointEstimate

    pub(all) struct PointEstimate {
    point : GeoPoint
    value : Double
    neighbours : Int
    } derive(Eq,
    Debug
    )

    PolylineFeature

    pub(all) struct PolylineFeature {
    name : String
    points : Array[GeoPoint]
    } derive(Eq,
    Debug
    )

    ProfileSample

    pub(all) struct ProfileSample {
    point : GeoPoint
    distance_m : Double
    value : Double
    } derive(Eq,
    Debug
    )

    Result of sampling a grid along a transect.

    ProfileSummary

    pub(all) struct ProfileSummary {
    samples : Int
    distance_m : Double
    minimum : Double
    maximum : Double
    mean : Double
    range : Double
    } derive(Eq,
    Debug
    )

    QualityFlag

    pub enum QualityFlag {
    Good
    Suspect
    Missing
    Invalid
    Outlier
    } derive(Eq,
    Debug
    )

    QualitySample

    pub(all) struct QualitySample {
    sample : FieldSample
    flag : QualityFlag
    uncertainty : Double
    source : String
    } derive(Eq,
    Debug
    )

    A field sample with a quality flag and optional source label.

    QualitySummary

    pub(all) struct QualitySummary {
    total : Int
    usable : Int
    missing : Int
    invalid : Int
    suspect : Int
    outlier : Int
    } derive(Eq,
    Debug
    )

    RasterStats

    pub(all) struct RasterStats {
    valid : Int
    missing : Int
    minimum : Double
    maximum : Double
    mean : Double
    standard_deviation : Double
    area_m2 : Double
    } derive(Eq,
    Debug
    )

    RegionSummary

    pub(all) struct RegionSummary {
    label : Int
    cells : Int
    mean : Double
    minimum : Double
    maximum : Double
    area_m2 : Double
    } derive(Eq,
    Debug
    )

    Regression

    pub(all) struct Regression {
    slope : Double
    intercept : Double
    r_squared : Double
    residual_rms : Double
    samples : Int
    } derive(Eq,
    Debug
    )

    SampleDesign

    pub(all) struct SampleDesign {
    points : Array[GeoPoint]
    rows : Int
    cols : Int
    spacing_lat_deg : Double
    spacing_lon_deg : Double
    } derive(Eq,
    Debug
    )

    SeriesPoint

    pub(all) struct SeriesPoint {
    coordinate : Double
    value : Double
    flag : QualityFlag
    } derive(Eq,
    Debug
    )

    A scalar observation on a one-dimensional distance or time axis.

    SpatialSummary

    pub(all) struct SpatialSummary {
    neighbours : Int
    mean : Double
    weighted_mean : Double
    minimum_distance_m : Double
    maximum_distance_m : Double
    } derive(Eq,
    Debug
    )

    SphericalHarmonicModel

    pub(all) struct SphericalHarmonicModel {
    reference_radius_m : Double
    scale : Double
    terms : Array[HarmonicTerm]
    } derive(Eq,
    Debug
    )

    Lightweight spherical harmonic model. The coefficients are dimensionless; callers decide whether the returned scalar represents potential, anomaly, or a normalized field correction.

    Summary

    pub(all) struct Summary {
    count : Int
    missing : Int
    minimum : Double
    maximum : Double
    mean : Double
    variance : Double
    sum : Double
    } derive(Eq,
    Debug
    )

    VariogramBin

    pub(all) struct VariogramBin {
    lower_distance_m : Double
    upper_distance_m : Double
    pairs : Int
    mean_distance_m : Double
    semivariance : Double
    } derive(Eq,
    Debug
    )

    VariogramModel

    pub(all) struct VariogramModel {
    nugget : Double
    sill : Double
    range_m : Double
    } derive(Eq,
    Debug
    )

    Vector3

    pub(all) struct Vector3 {
    x : Double
    y : Double
    z : Double
    } derive(Eq,
    Debug
    )

    angular_distance_deg

    fn angular_distance_deg(a : GeoPoint, b : GeoPoint) -> Double

    angular_distance_rad

    fn angular_distance_rad(a : GeoPoint, b : GeoPoint) -> Double

    average_nearest_distance_m

    fn average_nearest_distance_m(samples : ArrayView[FieldSample]) -> Double

    azimuth_to_unit_vector

    fn azimuth_to_unit_vector(azimuth_deg : Double) -> Vector3

    best_parameter

    fn best_parameter(results : ArrayView[(Double, Double)]) -> (Double, Double)?

    bouguer_anomaly_mgal

    fn bouguer_anomaly_mgal(observed_mgal : Double, latitude_deg : Double, height_m : Double, density_kg_m3? : Double) -> Double

    Simple Bouguer anomaly in mGal.

    bouguer_correction_grid

    fn bouguer_correction_grid(grid : Grid, density_kg_m3? : Double) -> Grid

    bouguer_slab_correction_mgal

    fn bouguer_slab_correction_mgal(height_m : Double, density_kg_m3? : Double) -> Double

    Bouguer slab correction in mGal. Density defaults to 2670 kg/m3.

    bracket_index

    fn bracket_index(values : ArrayView[Double], query : Double) -> Int?

    centered_values

    fn centered_values(values : ArrayView[Double], center : Double) -> Array[Double]

    central_angle_from_chord

    fn central_angle_from_chord(chord_m : Double) -> Double

    chord_distance_m

    fn chord_distance_m(angle_rad : Double) -> Double

    clamp_latitude

    fn clamp_latitude(lat : Double) -> Double

    clamp_to_range

    fn clamp_to_range(value : Double, range : NumericRange) -> Double

    coefficient_degree_summaries

    fn coefficient_degree_summaries(table : CoefficientTable) -> Array[DegreeSummary]

    coefficient_difference

    fn coefficient_difference(left : CoefficientTable, right : CoefficientTable) -> CoefficientTable?

    coefficient_energy

    fn coefficient_energy(table : CoefficientTable) -> Double

    coefficient_max_degree

    fn coefficient_max_degree(table : CoefficientTable) -> Int

    coefficient_merge

    fn coefficient_merge(left : CoefficientTable, right : CoefficientTable) -> CoefficientTable?

    coefficient_regularize

    fn coefficient_regularize(coefficients : ArrayView[Double], penalty : Double) -> Array[Double]

    coefficient_remove_degree

    fn coefficient_remove_degree(table : CoefficientTable, degree : Int) -> CoefficientTable

    coefficient_roundtrip

    fn coefficient_roundtrip(table : CoefficientTable) -> CoefficientTable raise

    coefficient_scale

    fn coefficient_scale(table : CoefficientTable, factor : Double) -> CoefficientTable

    coefficient_table

    fn coefficient_table(reference_radius_m~ : Double, scale~ : Double, terms~ : Array[HarmonicTerm], source? : String) -> CoefficientTable

    coefficient_table_is_valid

    fn coefficient_table_is_valid(table : CoefficientTable) -> Bool

    coefficient_table_to_model

    fn coefficient_table_to_model(table : CoefficientTable) -> SphericalHarmonicModel

    coefficient_table_to_text

    fn coefficient_table_to_text(table : CoefficientTable) -> String

    coefficient_terms_at_degree

    fn coefficient_terms_at_degree(table : CoefficientTable, degree : Int) -> Array[HarmonicTerm]

    coefficient_terms_at_order

    fn coefficient_terms_at_order(table : CoefficientTable, order : Int) -> Array[HarmonicTerm]

    coefficient_truncate

    fn coefficient_truncate(table : CoefficientTable, maximum_degree : Int) -> CoefficientTable

    concentric_sample_points

    fn concentric_sample_points(center : GeoPoint, radii_m : ArrayView[Double], count_per_ring : Int) -> Array[GeoPoint]

    contour_level_range

    fn contour_level_range(grid : Grid, count : Int) -> Array[Double]

    contour_segment_length

    fn contour_segment_length(segment : ContourSegment) -> Double

    contours_to_geojson

    fn contours_to_geojson(segments : ArrayView[ContourSegment]) -> String

    contours_total_length

    fn contours_total_length(segments : ArrayView[ContourSegment]) -> Double

    convert_density_g_cm3_to_kg_m3

    fn convert_density_g_cm3_to_kg_m3(value : Double) -> Double

    convert_density_kg_m3_to_g_cm3

    fn convert_density_kg_m3_to_g_cm3(value : Double) -> Double

    convolve_1d

    fn convolve_1d(values : ArrayView[Double], kernel : ArrayView[Double]) -> Array[Double]

    count_finite

    fn count_finite(values : ArrayView[Double]) -> Int

    covariance_summary

    fn covariance_summary(x : ArrayView[Double], y : ArrayView[Double]) -> CovarianceSummary

    cross

    fn cross(a : Vector3, b : Vector3) -> Vector3

    csv_escape

    fn csv_escape(value : String) -> String

    csv_header

    fn csv_header(columns : ArrayView[String]) -> String

    csv_row

    fn csv_row(values : ArrayView[String]) -> String

    cubic_hermite

    fn cubic_hermite(y0 : Double, y1 : Double, y2 : Double, y3 : Double, fraction : Double) -> Double

    cubic_interpolate

    fn cubic_interpolate(coordinates : ArrayView[Double], values : ArrayView[Double], query : Double) -> Double?

    cumulative_sum

    fn cumulative_sum(values : ArrayView[Double]) -> Array[Double]

    deg_to_rad

    fn deg_to_rad(deg : Double) -> Double

    degrees_latitude_to_metres

    fn degrees_latitude_to_metres(degrees : Double) -> Double

    degrees_longitude_to_metres

    fn degrees_longitude_to_metres(degrees : Double, latitude_deg : Double) -> Double

    destination_point

    fn destination_point(start : GeoPoint, bearing_deg : Double, distance_m : Double) -> GeoPoint

    detrend_linear

    fn detrend_linear(values : ArrayView[Double]) -> Array[Double]

    detrend_spatial_samples

    fn detrend_spatial_samples(samples : ArrayView[FieldSample], origin : GeoPoint) -> Array[FieldSample]

    distance_error_m

    fn distance_error_m(a : GeoPoint, b : GeoPoint) -> Double

    dot

    fn dot(a : Vector3, b : Vector3) -> Double

    ecef_difference

    fn ecef_difference(a : GeoPoint, b : GeoPoint) -> Vector3

    ecef_distance_m

    fn ecef_distance_m(a : GeoPoint, b : GeoPoint) -> Double

    ecef_midpoint

    fn ecef_midpoint(a : GeoPoint, b : GeoPoint) -> GeoPoint

    ecef_to_enu

    fn ecef_to_enu(origin : GeoPoint, point : GeoPoint) -> Vector3

    ecef_to_geo

    fn ecef_to_geo(vector : Vector3) -> GeoPoint

    empirical_cdf

    fn empirical_cdf(values : ArrayView[Double], query : Double) -> Double

    empirical_variogram

    fn empirical_variogram(samples : ArrayView[FieldSample], maximum_distance_m : Double, bins : Int) -> Array[VariogramBin]

    empty_harmonic_model

    fn empty_harmonic_model(scale? : Double) -> SphericalHarmonicModel

    enu_basis

    fn enu_basis(origin : GeoPoint) -> (Vector3, Vector3, Vector3)

    enu_to_ecef

    fn enu_to_ecef(origin : GeoPoint, delta : Vector3) -> Vector3

    enu_to_geo

    fn enu_to_geo(origin : GeoPoint, delta : Vector3) -> GeoPoint

    equirectangular_distance_m

    fn equirectangular_distance_m(a : GeoPoint, b : GeoPoint) -> Double

    evaluate_coefficient_grid

    fn evaluate_coefficient_grid(table : CoefficientTable, grid : Grid) -> Grid

    evaluate_coefficient_table

    fn evaluate_coefficient_table(table : CoefficientTable, point : GeoPoint) -> Double

    evaluate_spherical_harmonic

    fn evaluate_spherical_harmonic(model : SphericalHarmonicModel, point : GeoPoint) -> Double

    Evaluate a compact spherical-harmonic-style model at a geographic point.

    exponential_smooth

    fn exponential_smooth(values : ArrayView[Double], alpha : Double) -> Array[Double]

    export_samples_bundle

    fn export_samples_bundle(samples : ArrayView[FieldSample], name : String) -> String

    fibonacci_sample_points

    fn fibonacci_sample_points(center : GeoPoint, radius_m : Double, count : Int) -> Array[GeoPoint]

    field_series_to_csv

    fn field_series_to_csv(series : FieldSeries) -> String

    final_bearing_deg

    fn final_bearing_deg(start : GeoPoint, finish : GeoPoint) -> Double

    finite_linear_interpolate

    fn finite_linear_interpolate(coordinates : ArrayView[Double], values : ArrayView[Double], query : Double) -> Double?

    finite_objective

    fn finite_objective(values : ArrayView[Double], objective : (Double) -> Double) -> Double

    first_difference

    fn first_difference(values : ArrayView[Double]) -> Array[Double]

    fit_scale_offset

    fn fit_scale_offset(observed : ArrayView[Double], reference : ArrayView[Double]) -> LeastSquaresResult

    format_double_table

    fn format_double_table(values : ArrayView[Double], separator : String) -> String

    free_air_anomaly_mgal

    fn free_air_anomaly_mgal(observed_mgal : Double, latitude_deg : Double, height_m : Double) -> Double

    Free-air gravity anomaly in mGal.

    free_air_correction_grid

    fn free_air_correction_grid(grid : Grid) -> Grid

    free_air_correction_mgal

    fn free_air_correction_mgal(height_m : Double) -> Double

    Free-air correction in mGal for an elevation in metres.

    from_local_enu

    fn from_local_enu(origin : GeoPoint, delta : Vector3) -> GeoPoint

    gal_to_mgal

    fn gal_to_mgal(gal : Double) -> Double

    gaussian_kernel

    fn gaussian_kernel(radius : Int, sigma : Double) -> Array[Double]

    gaussian_smooth

    fn gaussian_smooth(values : ArrayView[Double], radius : Int, sigma : Double) -> Array[Double]

    geo_to_ecef

    fn geo_to_ecef(point : GeoPoint) -> Vector3

    geocentric_latitude

    fn geocentric_latitude(point : GeoPoint) -> Double

    geocentric_radius_m

    fn geocentric_radius_m(point : GeoPoint) -> Double

    geodesic_area_triangle

    fn geodesic_area_triangle(a : GeoPoint, b : GeoPoint, c : GeoPoint) -> Double

    geodesic_polyline

    fn geodesic_polyline(start : GeoPoint, finish : GeoPoint, spacing_m : Double) -> Array[GeoPoint]

    geodesic_polyline_length

    fn geodesic_polyline_length(points : ArrayView[GeoPoint]) -> Double

    geodetic_height

    fn geodetic_height(point : GeoPoint) -> Double

    golden_section_minimize

    fn golden_section_minimize(objective : (Double) -> Double, minimum : Double, maximum : Double, iterations : Int) -> (Double, Double)

    gravity_anomaly_grid

    fn gravity_anomaly_grid(observed : Grid, latitude_deg : Double, height_m : Double, density_kg_m3? : Double) -> Grid

    gravity_anomaly_series

    fn gravity_anomaly_series(observed : ArrayView[FieldSample], density_kg_m3? : Double) -> FieldSeries

    gravity_apply_reference

    fn gravity_apply_reference(observed : ArrayView[FieldSample], reference_mgal : Double) -> Array[FieldSample]

    gravity_components

    fn gravity_components(observed_mgal : Double, point : GeoPoint, density_kg_m3? : Double, terrain_mgal? : Double) -> GravityComponents

    gravity_height_gradient_mgal_per_m

    fn gravity_height_gradient_mgal_per_m(latitude_deg : Double, height_m : Double) -> Double

    gravity_latitude_correction_mgal

    fn gravity_latitude_correction_mgal(observed_mgal : Double, from_latitude_deg : Double, to_latitude_deg : Double) -> Double

    gravity_normal_gradient_mgal_per_degree

    fn gravity_normal_gradient_mgal_per_degree(latitude_deg : Double) -> Double

    gravity_residual_grid

    fn gravity_residual_grid(observed : Grid, reference : Grid) -> Grid?

    gravity_uncertainty_mgal

    fn gravity_uncertainty_mgal(height_uncertainty_m : Double, density_uncertainty_kg_m3 : Double, height_m : Double) -> Double

    grid_apply_mask

    fn grid_apply_mask(source : Grid, mask : Grid, accepted_value : Double) -> Grid

    grid_apply_polynomial

    fn grid_apply_polynomial(grid : Grid, coefficients : ArrayView[Double]) -> Grid

    grid_area_m2

    fn grid_area_m2(grid : Grid) -> Double

    grid_aspect_radians

    fn grid_aspect_radians(grid : Grid) -> Grid

    grid_cell_area_m2

    fn grid_cell_area_m2(grid : Grid, row : Int) -> Double

    grid_centroid

    fn grid_centroid(grid : Grid) -> GeoPoint?

    grid_classify_quantiles

    fn grid_classify_quantiles(grid : Grid, classes : Int) -> Grid

    grid_column_means

    fn grid_column_means(grid : Grid) -> Array[Double]

    grid_column_sum

    fn grid_column_sum(grid : Grid, col : Int) -> Double

    grid_correlation

    fn grid_correlation(a : Grid, b : Grid) -> Double

    grid_difference_of_gaussians

    fn grid_difference_of_gaussians(grid : Grid, small_radius : Int, large_radius : Int) -> Grid

    grid_edge_difference

    fn grid_edge_difference(grid : Grid) -> Grid

    grid_entropy

    fn grid_entropy(grid : Grid, bins : Int) -> Double

    grid_from_samples_idw

    fn grid_from_samples_idw(grid : Grid, samples : ArrayView[FieldSample], power? : Double, radius_m? : Double) -> Grid

    grid_histogram

    fn grid_histogram(grid : Grid, bins : Int) -> Array[HistogramBin]

    grid_local_extrema

    fn grid_local_extrema(grid : Grid, find_maximum : Bool) -> Array[GridCell]

    grid_mae

    fn grid_mae(a : Grid, b : Grid) -> Double

    grid_match_extent

    fn grid_match_extent(a : Grid, b : Grid) -> Bool

    grid_metadata_csv

    fn grid_metadata_csv(grid : Grid) -> String

    grid_mosaic

    fn grid_mosaic(grids : ArrayView[Grid]) -> Grid?

    grid_normalized_gradient

    fn grid_normalized_gradient(grid : Grid) -> Grid

    grid_percentile

    fn grid_percentile(grid : Grid, fraction : Double) -> Double

    grid_percentile_clip

    fn grid_percentile_clip(grid : Grid, lower_fraction : Double, upper_fraction : Double) -> Grid

    grid_profile_sum

    fn grid_profile_sum(grid : Grid, row : Int) -> Double

    grid_quantile_mask

    fn grid_quantile_mask(grid : Grid, fraction : Double) -> Grid

    grid_residual

    fn grid_residual(a : Grid, b : Grid) -> Grid?

    grid_residual_stats

    fn grid_residual_stats(observed : Grid, predicted : Grid) -> Summary

    grid_rmse

    fn grid_rmse(a : Grid, b : Grid) -> Double

    grid_row_means

    fn grid_row_means(grid : Grid) -> Array[Double]

    grid_ruggedness

    fn grid_ruggedness(grid : Grid, radius : Int) -> Grid

    grid_sample_field

    fn grid_sample_field(grid : Grid, samples : ArrayView[FieldSample]) -> Array[PointEstimate]

    grid_sample_points

    fn grid_sample_points(grid : Grid, points : ArrayView[GeoPoint]) -> Array[PointEstimate]

    grid_signal_to_noise

    fn grid_signal_to_noise(grid : Grid, noise : Grid) -> Grid?

    grid_slope_radians

    fn grid_slope_radians(grid : Grid) -> Grid

    grid_standardize

    fn grid_standardize(grid : Grid) -> Grid

    grid_surface_area_m2

    fn grid_surface_area_m2(grid : Grid) -> Double

    grid_to_csv

    fn grid_to_csv(grid : Grid) -> String

    grid_to_csv_safe

    fn grid_to_csv_safe(grid : Grid) -> String

    grid_to_json

    fn grid_to_json(grid : Grid, name : String) -> String

    grid_to_matrix_rows

    fn grid_to_matrix_rows(grid : Grid) -> Array[Array[Double]]

    grid_to_samples

    fn grid_to_samples(grid : Grid, name? : String) -> Array[FieldSample]

    grid_to_xyz

    fn grid_to_xyz(grid : Grid) -> String

    grid_total_variation

    fn grid_total_variation(grid : Grid) -> Double

    grid_valid_cells

    fn grid_valid_cells(grid : Grid) -> Array[GridCell]

    haversine_distance_m

    fn haversine_distance_m(a : GeoPoint, b : GeoPoint) -> Double

    histogram

    fn histogram(values : ArrayView[Double], bins : Int, range? : NumericRange) -> Array[HistogramBin]

    idw_estimate

    fn idw_estimate(samples : ArrayView[FieldSample], point : GeoPoint, power? : Double, radius_m? : Double) -> PointEstimate

    initial_bearing_deg

    fn initial_bearing_deg(start : GeoPoint, finish : GeoPoint) -> Double

    interpolate_geodesic

    fn interpolate_geodesic(a : GeoPoint, b : GeoPoint, fraction : Double) -> GeoPoint

    interpolate_grid_profile

    fn interpolate_grid_profile(grid : Grid, points : ArrayView[GeoPoint], nearest : Bool) -> Array[PointEstimate]

    interpolate_grid_value

    fn interpolate_grid_value(grid : Grid, point : GeoPoint, nearest : Bool) -> Double?

    interpolate_missing_values

    fn interpolate_missing_values(coordinates : ArrayView[Double], values : ArrayView[Double]) -> Array[Double]

    interpolate_point

    fn interpolate_point(a : GeoPoint, b : GeoPoint, t : Double) -> GeoPoint

    interpolate_series_cubic

    fn interpolate_series_cubic(series : FieldSeries, coordinate : Double) -> Double?

    interquartile_range

    fn interquartile_range(values : ArrayView[Double]) -> Double

    inverse_distance_weights

    fn inverse_distance_weights(distances : ArrayView[Double], power : Double) -> Array[Double]

    is_finite

    fn is_finite(value : Double) -> Bool

    is_monotone

    fn is_monotone(values : ArrayView[Double], increasing : Bool) -> Bool

    k_nearest_samples

    fn k_nearest_samples(samples : ArrayView[FieldSample], point : GeoPoint, k : Int) -> Array[FieldSample]

    kernel3x3

    fn kernel3x3(values~ : Array[Double], divisor? : Double) -> Kernel3x3

    kilometres_to_metres

    fn kilometres_to_metres(kilometres : Double) -> Double

    kriging_like_estimate

    fn kriging_like_estimate(samples : ArrayView[FieldSample], point : GeoPoint, model : VariogramModel) -> PointEstimate

    kriging_like_weights

    fn kriging_like_weights(samples : ArrayView[FieldSample], point : GeoPoint, model : VariogramModel) -> Array[Double]

    latitude_band_area_m2

    fn latitude_band_area_m2(min_lat : Double, max_lat : Double, min_lon : Double, max_lon : Double) -> Double

    leave_one_out_idw

    fn leave_one_out_idw(samples : ArrayView[FieldSample], power : Double) -> CrossValidationReport

    lerp

    fn lerp(a : Double, b : Double, t : Double) -> Double

    linear_interpolate

    fn linear_interpolate(coordinates : ArrayView[Double], values : ArrayView[Double], query : Double) -> Double?

    linear_interpolate_clamped

    fn linear_interpolate_clamped(left_x : Double, left_y : Double, right_x : Double, right_y : Double, query : Double) -> Double

    linear_regression

    fn linear_regression(x : ArrayView[Double], y : ArrayView[Double]) -> Regression

    local_azimuth_deg

    fn local_azimuth_deg(a : GeoPoint, b : GeoPoint) -> Double

    local_degree_latitude_m

    fn local_degree_latitude_m(latitude_deg : Double) -> Double

    local_degree_longitude_m

    fn local_degree_longitude_m(latitude_deg : Double) -> Double

    local_distance_components

    fn local_distance_components(a : GeoPoint, b : GeoPoint) -> Vector3

    local_enu_delta_m

    fn local_enu_delta_m(origin : GeoPoint, point : GeoPoint) -> Vector3

    local_linear_trend

    fn local_linear_trend(samples : ArrayView[FieldSample], origin : GeoPoint) -> LeastSquaresResult

    local_mean

    fn local_mean(samples : ArrayView[FieldSample], point : GeoPoint, radius_m : Double) -> Double

    local_north_east

    fn local_north_east(point : GeoPoint, bearing_deg : Double, distance_m : Double) -> GeoPoint

    local_scale_factors

    fn local_scale_factors(latitude_deg : Double) -> Vector3

    local_slope_angle_deg

    fn local_slope_angle_deg(a : GeoPoint, b : GeoPoint) -> Double

    local_slope_percent

    fn local_slope_percent(a : GeoPoint, b : GeoPoint) -> Double

    local_weighted_mean

    fn local_weighted_mean(samples : ArrayView[FieldSample], point : GeoPoint, radius_m : Double) -> Double

    longitude_span

    fn longitude_span(points : ArrayView[GeoPoint]) -> Double

    magnetic_components

    fn magnetic_components(total_nt : Double, declination_deg : Double, inclination_deg : Double) -> (Double, Double, Double)

    Convert a total magnetic intensity and declination/inclination to north, east, and down components.

    magnetic_components_to_samples

    fn magnetic_components_to_samples(points : ArrayView[GeoPoint], total_nt : Double, declination_deg : Double, inclination_deg : Double) -> Array[FieldSample]

    magnetic_declination_deg

    fn magnetic_declination_deg(latitude_deg : Double, longitude_deg : Double) -> Double

    Approximate magnetic declination in degrees using a centered dipole pole. It is meant for planning and visualization, not navigation.

    magnetic_declination_difference

    fn magnetic_declination_difference(a : GeoPoint, b : GeoPoint) -> Double

    magnetic_declination_grid

    fn magnetic_declination_grid(grid : Grid) -> Grid

    magnetic_field_add

    fn magnetic_field_add(a : MagneticField, b : MagneticField) -> MagneticField

    magnetic_field_at

    fn magnetic_field_at(point : GeoPoint, pole? : MagneticPole) -> MagneticField

    magnetic_field_from_components

    fn magnetic_field_from_components(north_nt : Double, east_nt : Double, down_nt : Double) -> MagneticField

    magnetic_field_from_direction

    fn magnetic_field_from_direction(total_nt : Double, declination_deg : Double, inclination_deg : Double) -> MagneticField

    magnetic_field_scale

    fn magnetic_field_scale(field : MagneticField, factor : Double) -> MagneticField

    magnetic_inclination_deg

    fn magnetic_inclination_deg(latitude_deg : Double) -> Double

    Inclination approximation in degrees from magnetic latitude.

    magnetic_inclination_grid

    fn magnetic_inclination_grid(grid : Grid) -> Grid

    magnetic_intensity_grid

    fn magnetic_intensity_grid(grid : Grid, pole? : MagneticPole) -> Grid

    magnetic_pole_field

    fn magnetic_pole_field(pole : MagneticPole, point : GeoPoint) -> MagneticField

    magnetic_profile

    fn magnetic_profile(points : ArrayView[GeoPoint], pole? : MagneticPole) -> FieldSeries

    magnetic_vector_error

    fn magnetic_vector_error(expected : MagneticField, actual : MagneticField) -> Double

    make_grid

    fn make_grid(origin_lat~ : Double, origin_lon~ : Double, lat_step~ : Double, lon_step~ : Double, rows~ : Int, cols~ : Int, values~ : Array[Double]) -> Grid

    make_range

    fn make_range(minimum~ : Double, maximum~ : Double) -> NumericRange

    make_series

    fn make_series(name~ : String, points~ : Array[SeriesPoint]) -> FieldSeries

    mark_missing

    fn mark_missing(sample : FieldSample) -> QualitySample

    mark_outlier

    fn mark_outlier(sample : FieldSample, uncertainty~ : Double) -> QualitySample

    matrix

    fn matrix(rows~ : Int, cols~ : Int, values~ : Array[Double]) -> Matrix

    matrix_add

    fn matrix_add(left : Matrix, right : Matrix) -> Matrix?

    matrix_covariance_design

    fn matrix_covariance_design(values : ArrayView[Double]) -> Matrix

    matrix_determinant

    fn matrix_determinant(value : Matrix) -> Double

    matrix_frobenius_norm

    fn matrix_frobenius_norm(value : Matrix) -> Double

    matrix_identity

    fn matrix_identity(size : Int) -> Matrix

    matrix_is_valid

    fn matrix_is_valid(value : Matrix) -> Bool

    matrix_multiply

    fn matrix_multiply(left : Matrix, right : Matrix) -> Matrix?

    matrix_rows_to_grid

    fn matrix_rows_to_grid(rows : ArrayView[Array[Double]], origin_lat : Double, origin_lon : Double, lat_step : Double, lon_step : Double) -> Grid

    matrix_solve

    fn matrix_solve(left : Matrix, right : ArrayView[Double]) -> Array[Double]?

    Solve a small dense linear system with partial pivoting.

    matrix_subtract

    fn matrix_subtract(left : Matrix, right : Matrix) -> Matrix?

    matrix_trace

    fn matrix_trace(value : Matrix) -> Double

    matrix_zeros

    fn matrix_zeros(rows : Int, cols : Int) -> Matrix

    maximum_finite

    fn maximum_finite(values : ArrayView[Double]) -> Double

    mean_absolute_deviation

    fn mean_absolute_deviation(values : ArrayView[Double], center? : Double) -> Double

    median

    fn median(values : ArrayView[Double]) -> Double

    median_absolute_deviation

    fn median_absolute_deviation(values : ArrayView[Double]) -> Double

    meridian_radius_m

    fn meridian_radius_m(latitude_deg : Double) -> Double

    metres_to_degrees_latitude

    fn metres_to_degrees_latitude(metres : Double) -> Double

    metres_to_degrees_longitude

    fn metres_to_degrees_longitude(metres : Double, latitude_deg : Double) -> Double

    metres_to_kilometres

    fn metres_to_kilometres(metres : Double) -> Double

    mgal_to_gal

    fn mgal_to_gal(mgal : Double) -> Double

    microtesla_to_nt

    fn microtesla_to_nt(value : Double) -> Double

    midpoint

    fn midpoint(a : GeoPoint, b : GeoPoint) -> GeoPoint

    minimum_finite

    fn minimum_finite(values : ArrayView[Double]) -> Double

    missing_policy_names

    fn missing_policy_names() -> Array[String]

    monotone_envelope

    fn monotone_envelope(values : ArrayView[Double], increasing : Bool) -> Array[Double]

    moran_spatial_autocorrelation

    fn moran_spatial_autocorrelation(samples : ArrayView[FieldSample], radius_m : Double) -> Double

    moving_average

    fn moving_average(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_linear_smooth

    fn moving_linear_smooth(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_max

    fn moving_max(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_median

    fn moving_median(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_min

    fn moving_min(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_sum

    fn moving_sum(values : ArrayView[Double], radius : Int) -> Array[Double]

    moving_weighted_smooth

    fn moving_weighted_smooth(values : ArrayView[Double], radius : Int, decay : Double) -> Array[Double]

    nearest_index

    fn nearest_index(values : ArrayView[Double], query : Double) -> Int?

    nearest_interpolate

    fn nearest_interpolate(coordinates : ArrayView[Double], values : ArrayView[Double], query : Double) -> Double?

    nearest_sample

    fn nearest_sample(samples : ArrayView[FieldSample], point : GeoPoint) -> FieldSample?

    normal_gravity_at_height_mgal

    fn normal_gravity_at_height_mgal(latitude_deg : Double, height_m : Double) -> Double

    normal_gravity_latitude_profile

    fn normal_gravity_latitude_profile(start_latitude_deg : Double, finish_latitude_deg : Double, count : Int) -> FieldSeries

    normal_gravity_mgal

    fn normal_gravity_mgal(latitude_deg : Double) -> Double

    WGS84/Somigliana normal gravity on the ellipsoid, in mGal.

    normal_gravity_vector

    fn normal_gravity_vector(point : GeoPoint) -> Vector3

    normalize_longitude

    fn normalize_longitude(lon : Double) -> Double

    normalize_min_max

    fn normalize_min_max(values : ArrayView[Double], lower : Double, upper : Double) -> Array[Double]

    normalize_values

    fn normalize_values(values : ArrayView[Double]) -> Array[Double]

    normalize_vector

    fn normalize_vector(vector : Vector3) -> Vector3

    nt_to_microtesla

    fn nt_to_microtesla(nt : Double) -> Double

    objective_mae

    fn objective_mae(observed : ArrayView[Double], predicted : ArrayView[Double]) -> Double

    objective_rmse

    fn objective_rmse(observed : ArrayView[Double], predicted : ArrayView[Double]) -> Double

    outlier_report

    fn outlier_report(values : ArrayView[Double], threshold? : Double) -> OutlierReport

    parameter_sweep

    fn parameter_sweep(values : ArrayView[Double], objective : (Double) -> Double) -> Array[(Double, Double)]

    parse_coefficient_table

    fn parse_coefficient_table(text : String, reference_radius_m? : Double, scale? : Double, source? : String) -> CoefficientTable raise

    Parse simple coefficient rows: degree order cosine sine.

    parse_field_samples_csv

    fn parse_field_samples_csv(csv : String) -> Array[FieldSample] raise

    Parse CSV rows with columns: latitude, longitude, elevation_m, value, name. The first row may be a header.

    parse_field_samples_tsv

    fn parse_field_samples_tsv(text : String) -> Array[FieldSample] raise

    parse_grid_values_csv

    fn parse_grid_values_csv(text : String, origin_lat : Double, origin_lon : Double, lat_step : Double, lon_step : Double, rows : Int, cols : Int) -> Grid raise

    parse_series_csv

    fn parse_series_csv(text : String, name? : String) -> FieldSeries raise

    parse_series_tsv

    fn parse_series_tsv(text : String, name? : String) -> FieldSeries raise

    parse_xyz_samples

    fn parse_xyz_samples(text : String, name? : String) -> Array[FieldSample] raise

    Parse whitespace-separated XYZ rows: longitude latitude value, optionally elevation.

    percentile

    fn percentile(values : ArrayView[Double], fraction : Double) -> Double

    point_approximately_equal

    fn point_approximately_equal(a : GeoPoint, b : GeoPoint, tolerance_m : Double) -> Bool

    polygon_centroid

    fn polygon_centroid(points : ArrayView[GeoPoint]) -> GeoPoint

    polygon_perimeter_m

    fn polygon_perimeter_m(points : ArrayView[GeoPoint], closed : Bool) -> Double

    polynomial_design

    fn polynomial_design(coordinates : ArrayView[Double], degree : Int) -> Matrix

    polynomial_evaluate

    fn polynomial_evaluate(coefficients : ArrayView[Double], coordinate : Double) -> Double

    polynomial_fit

    fn polynomial_fit(coordinates : ArrayView[Double], values : ArrayView[Double], degree : Int) -> LeastSquaresResult

    prime_vertical_radius_m

    fn prime_vertical_radius_m(latitude_deg : Double) -> Double

    profile_between

    fn profile_between(grid : Grid, start : GeoPoint, finish : GeoPoint, samples : Int) -> Array[ProfileSample]

    profile_cumulative_change

    fn profile_cumulative_change(profile : ArrayView[ProfileSample]) -> Array[Double]

    profile_distances

    fn profile_distances(points : ArrayView[GeoPoint]) -> Array[Double]

    profile_filter_range

    fn profile_filter_range(profile : ArrayView[ProfileSample], range : NumericRange) -> Array[ProfileSample]

    profile_integral

    fn profile_integral(profile : ArrayView[ProfileSample]) -> Double

    profile_max_change

    fn profile_max_change(profile : ArrayView[ProfileSample]) -> Double

    profile_monotonic

    fn profile_monotonic(profile : ArrayView[ProfileSample], increasing : Bool) -> Bool

    profile_points

    fn profile_points(start : GeoPoint, finish : GeoPoint, count : Int) -> Array[GeoPoint]

    profile_resample

    fn profile_resample(profile : ArrayView[ProfileSample], count : Int) -> Array[ProfileSample]

    profile_reverse

    fn profile_reverse(profile : ArrayView[ProfileSample]) -> Array[ProfileSample]

    profile_slice

    fn profile_slice(profile : ArrayView[ProfileSample], start : Int, end : Int) -> Array[ProfileSample]

    profile_slope

    fn profile_slope(profile : ArrayView[ProfileSample]) -> Array[Double]

    profile_summary

    fn profile_summary(profile : ArrayView[ProfileSample]) -> ProfileSummary

    profile_to_csv

    fn profile_to_csv(profile : ArrayView[ProfileSample]) -> String

    profile_to_geojson

    fn profile_to_geojson(profile : ArrayView[ProfileSample], name? : String) -> String

    profile_to_samples

    fn profile_to_samples(profile : ArrayView[ProfileSample], name? : String) -> Array[FieldSample]

    profile_to_tsv

    fn profile_to_tsv(profile : ArrayView[ProfileSample]) -> String

    profile_values

    fn profile_values(profile : ArrayView[ProfileSample]) -> Array[Double]

    quality_apply_offset

    fn quality_apply_offset(samples : ArrayView[QualitySample], offset : Double) -> Array[QualitySample]

    quality_completeness

    fn quality_completeness(samples : ArrayView[QualitySample]) -> Double

    quality_deduplicate

    fn quality_deduplicate(samples : ArrayView[QualitySample], tolerance_m : Double) -> Array[QualitySample]

    quality_flag_counts

    fn quality_flag_counts(samples : ArrayView[QualitySample]) -> Array[Int]

    quality_from_samples

    fn quality_from_samples(samples : ArrayView[FieldSample], source : String) -> Array[QualitySample]

    quality_is_usable

    fn quality_is_usable(flag : QualityFlag) -> Bool

    quality_merge

    fn quality_merge(left : ArrayView[QualitySample], right : ArrayView[QualitySample]) -> Array[QualitySample]

    quality_name

    fn quality_name(flag : QualityFlag) -> String

    quality_reflag_missing

    fn quality_reflag_missing(samples : ArrayView[QualitySample]) -> Array[QualitySample]

    quality_reflag_outliers

    fn quality_reflag_outliers(samples : ArrayView[QualitySample], threshold : Double) -> Array[QualitySample]

    quality_reflag_range

    fn quality_reflag_range(samples : ArrayView[QualitySample], range : NumericRange) -> Array[QualitySample]

    quality_sample

    fn quality_sample(sample : FieldSample, flag : QualityFlag, uncertainty : Double, source : String) -> QualitySample

    quality_sort_by_coordinate

    fn quality_sort_by_coordinate(samples : ArrayView[QualitySample], origin : GeoPoint) -> Array[QualitySample]

    quality_summary

    fn quality_summary(samples : ArrayView[QualitySample]) -> QualitySummary

    quality_to_samples

    fn quality_to_samples(samples : ArrayView[QualitySample]) -> Array[FieldSample]

    quality_usable_samples

    fn quality_usable_samples(samples : ArrayView[QualitySample]) -> Array[QualitySample]

    quality_values

    fn quality_values(samples : ArrayView[QualitySample], policy : MissingPolicy) -> Array[Double]

    quality_weighted_mean

    fn quality_weighted_mean(samples : ArrayView[QualitySample]) -> Double

    quality_weighted_variance

    fn quality_weighted_variance(samples : ArrayView[QualitySample]) -> Double

    quality_with_uncertainty

    fn quality_with_uncertainty(samples : ArrayView[QualitySample], uncertainty : Double) -> Array[QualitySample]

    rad_to_deg

    fn rad_to_deg(rad : Double) -> Double

    radial_sample_points

    fn radial_sample_points(center : GeoPoint, radius_m : Double, count : Int) -> Array[GeoPoint]

    range_contains

    fn range_contains(range : NumericRange, value : Double) -> Bool

    rank_values

    fn rank_values(values : ArrayView[Double]) -> Array[Double]

    regression_predict

    fn regression_predict(model : Regression, x : Double) -> Double

    regression_residuals

    fn regression_residuals(model : Regression, x : ArrayView[Double], y : ArrayView[Double]) -> Array[Double]

    regular_sample_design

    fn regular_sample_design(extent : GridExtent, rows : Int, cols : Int) -> SampleDesign

    regular_sample_points

    fn regular_sample_points(extent : GridExtent, rows : Int, cols : Int) -> Array[GeoPoint]

    resample_array_linear

    fn resample_array_linear(coordinates : ArrayView[Double], values : ArrayView[Double], queries : ArrayView[Double]) -> Array[Double]

    resample_array_nearest

    fn resample_array_nearest(coordinates : ArrayView[Double], values : ArrayView[Double], queries : ArrayView[Double]) -> Array[Double]

    resample_grid_like

    fn resample_grid_like(source : Grid, target : Grid, nearest : Bool) -> Grid

    residual_summary

    fn residual_summary(observed : ArrayView[Double], predicted : ArrayView[Double]) -> Summary

    rms

    fn rms(values : ArrayView[Double]) -> Double

    robust_linear_fit

    fn robust_linear_fit(x : ArrayView[Double], y : ArrayView[Double], iterations : Int) -> LeastSquaresResult

    robust_z_score

    fn robust_z_score(value : Double, values : ArrayView[Double]) -> Double

    rotate_horizontal

    fn rotate_horizontal(vector : Vector3, angle_deg : Double) -> Vector3

    route_bearings

    fn route_bearings(points : ArrayView[GeoPoint]) -> Array[Double]

    route_distances

    fn route_distances(points : ArrayView[GeoPoint]) -> Array[Double]

    route_total_distance

    fn route_total_distance(points : ArrayView[GeoPoint]) -> Double

    sample_density

    fn sample_density(samples : ArrayView[FieldSample], point : GeoPoint, radius_m : Double) -> Double

    sample_design_extent

    fn sample_design_extent(design : SampleDesign) -> GridExtent

    sample_design_grid

    fn sample_design_grid(design : SampleDesign, values : ArrayView[Double]) -> Grid

    sample_design_is_rectangular

    fn sample_design_is_rectangular(design : SampleDesign) -> Bool

    sample_design_points_at_column

    fn sample_design_points_at_column(design : SampleDesign, col : Int) -> Array[GeoPoint]

    sample_design_points_at_row

    fn sample_design_points_at_row(design : SampleDesign, row : Int) -> Array[GeoPoint]

    sample_design_to_samples

    fn sample_design_to_samples(design : SampleDesign, values : ArrayView[Double], name : String) -> Array[FieldSample]

    sample_design_translate

    fn sample_design_translate(design : SampleDesign, north_m : Double, east_m : Double) -> SampleDesign

    sample_nearest_distance_m

    fn sample_nearest_distance_m(samples : ArrayView[FieldSample], index : Int) -> Double

    sample_pair_count

    fn sample_pair_count(samples : ArrayView[FieldSample]) -> Int

    sample_point_distances

    fn sample_point_distances(origin : GeoPoint, points : ArrayView[GeoPoint]) -> Array[Double]

    sample_points_along_grid_edges

    fn sample_points_along_grid_edges(grid : Grid, threshold : Double) -> Array[GeoPoint]

    sample_points_deduplicate

    fn sample_points_deduplicate(points : ArrayView[GeoPoint], tolerance_m : Double) -> Array[GeoPoint]

    sample_points_from_grid_percentile

    fn sample_points_from_grid_percentile(grid : Grid, fraction : Double) -> Array[GeoPoint]

    sample_points_in_extent

    fn sample_points_in_extent(points : ArrayView[GeoPoint], extent : GridExtent) -> Array[GeoPoint]

    sample_points_near

    fn sample_points_near(points : ArrayView[GeoPoint], center : GeoPoint, radius_m : Double) -> Array[GeoPoint]

    sample_points_sort_by_distance

    fn sample_points_sort_by_distance(points : ArrayView[GeoPoint], origin : GeoPoint) -> Array[GeoPoint]

    sample_summary

    fn sample_summary(samples : ArrayView[FieldSample]) -> Summary

    sample_value_quantiles

    fn sample_value_quantiles(samples : ArrayView[FieldSample], fractions : ArrayView[Double]) -> Array[Double]

    sample_value_range

    fn sample_value_range(samples : ArrayView[FieldSample]) -> NumericRange

    samples_bounds

    fn samples_bounds(samples : ArrayView[FieldSample]) -> GridExtent

    samples_deduplicate

    fn samples_deduplicate(samples : ArrayView[FieldSample], tolerance_m : Double) -> Array[FieldSample]

    samples_filter_name

    fn samples_filter_name(samples : ArrayView[FieldSample], name : String) -> Array[FieldSample]

    samples_map_value

    fn samples_map_value(samples : ArrayView[FieldSample], transform : (Double) -> Double) -> Array[FieldSample]

    samples_sort_by_distance

    fn samples_sort_by_distance(samples : ArrayView[FieldSample], origin : GeoPoint) -> Array[FieldSample]

    samples_to_csv

    fn samples_to_csv(samples : ArrayView[FieldSample]) -> String

    samples_to_csv_safe

    fn samples_to_csv_safe(samples : ArrayView[FieldSample]) -> String

    samples_to_design

    fn samples_to_design(points : ArrayView[GeoPoint], rows : Int, cols : Int) -> SampleDesign

    samples_to_field_series

    fn samples_to_field_series(samples : ArrayView[FieldSample], origin : GeoPoint, name? : String) -> FieldSeries

    samples_to_geojson

    fn samples_to_geojson(samples : ArrayView[FieldSample]) -> String

    samples_to_geojson_lines

    fn samples_to_geojson_lines(features : ArrayView[PolylineFeature]) -> String

    samples_to_tsv

    fn samples_to_tsv(samples : ArrayView[FieldSample]) -> String

    samples_to_xyz

    fn samples_to_xyz(samples : ArrayView[FieldSample]) -> String

    samples_translate

    fn samples_translate(samples : ArrayView[FieldSample], north_m : Double, east_m : Double) -> Array[FieldSample]

    fn scalar_grid_search(objective : (Double) -> Double, minimum : Double, maximum : Double, steps : Int) -> (Double, Double)

    scalar_maximize

    fn scalar_maximize(objective : (Double) -> Double, minimum : Double, maximum : Double, iterations : Int) -> (Double, Double)

    second_difference

    fn second_difference(values : ArrayView[Double]) -> Array[Double]

    series_at

    fn series_at(series : FieldSeries, coordinate : Double) -> Double?

    series_autocorrelation

    fn series_autocorrelation(series : FieldSeries, lag : Int) -> Double

    series_clip

    fn series_clip(series : FieldSeries, range : NumericRange) -> FieldSeries

    series_cross_correlation

    fn series_cross_correlation(a : FieldSeries, b : FieldSeries, lag : Int) -> Double

    series_cumulative_integral

    fn series_cumulative_integral(series : FieldSeries) -> FieldSeries

    series_differences

    fn series_differences(series : FieldSeries) -> FieldSeries

    series_fill_linear

    fn series_fill_linear(series : FieldSeries) -> FieldSeries

    series_from_profile

    fn series_from_profile(profile : ArrayView[ProfileSample], name? : String) -> FieldSeries

    series_integral

    fn series_integral(series : FieldSeries) -> Double

    series_interpolate

    fn series_interpolate(series : FieldSeries, coordinate : Double) -> Double?

    series_is_sorted

    fn series_is_sorted(series : FieldSeries) -> Bool

    series_moving_average

    fn series_moving_average(series : FieldSeries, radius : Int) -> FieldSeries

    series_outliers

    fn series_outliers(series : FieldSeries, threshold? : Double) -> OutlierReport

    series_peaks

    fn series_peaks(series : FieldSeries, prominence~ : Double) -> Array[SeriesPoint]

    series_resample

    fn series_resample(series : FieldSeries, coordinates : ArrayView[Double]) -> FieldSeries

    series_scale

    fn series_scale(series : FieldSeries, factor : Double) -> FieldSeries

    series_shift

    fn series_shift(series : FieldSeries, offset : Double) -> FieldSeries

    series_sort

    fn series_sort(series : FieldSeries) -> FieldSeries

    series_summary

    fn series_summary(series : FieldSeries) -> Summary

    series_to_json

    fn series_to_json(series : FieldSeries) -> String

    series_troughs

    fn series_troughs(series : FieldSeries, prominence~ : Double) -> Array[SeriesPoint]

    series_values

    fn series_values(series : FieldSeries, policy? : MissingPolicy) -> Array[Double]

    signed_angle_difference_deg

    fn signed_angle_difference_deg(a : Double, b : Double) -> Double

    spatial_join_nearest

    fn spatial_join_nearest(left : ArrayView[FieldSample], right : ArrayView[FieldSample], max_distance_m : Double) -> Array[(FieldSample, FieldSample)]

    spatial_outlier_samples

    fn spatial_outlier_samples(samples : ArrayView[FieldSample], radius_m : Double, threshold : Double) -> Array[FieldSample]

    spatial_summary

    fn spatial_summary(samples : ArrayView[FieldSample], point : GeoPoint, radius_m : Double) -> SpatialSummary

    spherical_bouguer_correction_mgal

    fn spherical_bouguer_correction_mgal(height_m : Double, density_kg_m3? : Double) -> Double

    split_antimeridian

    fn split_antimeridian(start : GeoPoint, finish : GeoPoint) -> Array[GeoPoint]

    sum_finite

    fn sum_finite(values : ArrayView[Double]) -> Double

    summary

    fn summary(values : ArrayView[Double]) -> Summary

    terrain_correction_from_samples_mgal

    fn terrain_correction_from_samples_mgal(station : GeoPoint, terrain : ArrayView[FieldSample], density_kg_m3? : Double) -> Double

    terrain_prism_correction_mgal

    fn terrain_prism_correction_mgal(density_kg_m3 : Double, horizontal_distance_m : Double, elevation_difference_m : Double) -> Double

    transect_sample_by_spacing

    fn transect_sample_by_spacing(start : GeoPoint, finish : GeoPoint, spacing_m : Double) -> Array[GeoPoint]

    transect_sample_points

    fn transect_sample_points(start : GeoPoint, finish : GeoPoint, count : Int) -> Array[GeoPoint]

    trim_values

    fn trim_values(values : ArrayView[Double], fraction : Double) -> Array[Double]

    unwrap_longitudes

    fn unwrap_longitudes(points : ArrayView[GeoPoint]) -> Array[GeoPoint]

    unwrap_point_sequence

    fn unwrap_point_sequence(points : ArrayView[GeoPoint]) -> Array[GeoPoint]

    valid_grid

    fn valid_grid(grid : Grid) -> Bool

    valid_latitude

    fn valid_latitude(latitude_deg : Double) -> Bool

    valid_longitude

    fn valid_longitude(longitude_deg : Double) -> Bool

    valid_model

    fn valid_model(model : SphericalHarmonicModel) -> Bool

    valid_point

    fn valid_point(point : GeoPoint) -> Bool

    valid_range

    fn valid_range(range : NumericRange) -> Bool

    valid_term

    fn valid_term(term : HarmonicTerm) -> Bool

    validate_samples

    fn validate_samples(samples : ArrayView[FieldSample]) -> Array[QualitySample]

    values_from_samples

    fn values_from_samples(samples : ArrayView[FieldSample], policy? : MissingPolicy) -> Array[Double]

    variogram_exponential

    fn variogram_exponential(distance_m : Double, model : VariogramModel) -> Double

    variogram_gaussian

    fn variogram_gaussian(distance_m : Double, model : VariogramModel) -> Double

    variogram_model_from_bins

    fn variogram_model_from_bins(bins : ArrayView[VariogramBin], range_m : Double) -> VariogramModel

    variogram_spherical

    fn variogram_spherical(distance_m : Double, model : VariogramModel) -> Double

    vector_add

    fn vector_add(a : Vector3, b : Vector3) -> Vector3

    vector_magnitude

    fn vector_magnitude(vector : Vector3) -> Double

    vector_scale

    fn vector_scale(a : Vector3, factor : Double) -> Vector3

    vector_subtract

    fn vector_subtract(a : Vector3, b : Vector3) -> Vector3

    weighted_interpolate

    fn weighted_interpolate(values : ArrayView[Double], weights : ArrayView[Double]) -> Double

    weighted_linear_fit

    fn weighted_linear_fit(x : ArrayView[Double], y : ArrayView[Double], weights : ArrayView[Double]) -> LeastSquaresResult

    weighted_mean

    fn weighted_mean(values : ArrayView[Double], weights : ArrayView[Double]) -> Double

    weighted_variance

    fn weighted_variance(values : ArrayView[Double], weights : ArrayView[Double]) -> Double

    wgs84_flattening

    fn wgs84_flattening() -> Double

    wgs84_semimajor_m

    fn wgs84_semimajor_m() -> Double

    wgs84_semiminor_m

    fn wgs84_semiminor_m() -> Double

    winsorize

    fn winsorize(values : ArrayView[Double], lower_fraction : Double, upper_fraction : Double) -> Array[Double]

    z_score

    fn z_score(value : Double, center : Double, scale : Double) -> Double