forked from 1b-agent/fieldcraft-upstream
The system maths library's sin, cos, atan2, log … are not correctly rounded and differ between platforms: mesh.hex.generate gave the plate of the strong-relax test a different mesh on Linux than on macOS (nodes from 2809 on), so the test passed on a Mac and failed in CI. Every transcendental call in fieldcraft-mesh now goes through the libm crate (a pure-Rust port of musl's), which gives the same bits everywhere. Part of #438. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
26 lines
978 B
TOML
26 lines
978 B
TOML
[package]
|
|
name = "fieldcraft-mesh"
|
|
description = "FieldCraft's meshing: robust predicates, surface preparation, tetrahedral and hexahedral meshing, quality metrics"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
fieldcraft-model = { workspace = true }
|
|
# Pure-Rust maths (a port of musl's libm) for sin, cos, log, exp, pow, hypot, acos: the same
|
|
# bits on every platform, where the system library's are not correctly rounded and differ (the
|
|
# plate's hex mesh differed between macOS and Linux, #438). atan2 and cbrt are crate::vec3's.
|
|
libm = "0.2"
|
|
thiserror = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
# Test oracles only (never linked into FieldCraft): exact rationals, and georust's port of
|
|
# Shewchuk's public-domain predicates.c as a differential reference.
|
|
num-bigint = "0.4"
|
|
num-rational = { version = "0.4", default-features = false, features = ["num-bigint", "std"] }
|
|
num-traits = "0.2"
|
|
robust = "1.2"
|