embedded-trig-f32 0.1.0

sin, cos, tan, asin, acos, atan, atan2 f32 FPU pour no_std embarqué, testée sur Cortex-M33
Documentation
  • Coverage
  • 100%
    14 out of 14 items documented0 out of 6 items with examples
  • Size
  • Source code size: 27.99 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 197.52 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 12s Average build duration of successful builds.
  • all releases: 12s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • jorgeandrecastro/embedded-trig-f32
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jorgeandrecastro

embedded-trig-f32

Crate License Target

embedded-trig-f32 est une bibliothèque de fonctions trigonométriques f32 ultra-rapide, écrite en Pur Rust, sans aucune dépendance (zero-deps) et optimisée pour les systèmes embarqués no_std.

🚀 Points forts

  • Zéro Dépendance : Pas besoin de libm.
  • Hardware-Aware : Utilise l'instruction FPU VSQRT si disponible, sinon bascule sur Newton-Raphson.
  • Haute Performance : Utilise des approximations rationnelles (Bhaskara I) et polynomiales (McCutcheon) pour un compromis idéal vitesse/précision.
  • Sécurité : Retourne des Result<f32, TrigError> pour les fonctions inverses, évitant les crashs silencieux.
  • #![forbid(unsafe_code)] : Pour une safety .

🛠 Installation

Ajoute ceci à ton fichier Cargo.toml :

[dependencies]
embedded-trig-f32 = "0.1.0"

Pour profiter de la puissance de la FPU sur ton Cortex-M33(comme sur le RP2350) ou STM32, configure ton .cargo/config.toml :

[target.thumbv8m.main-none-eabihf]
rustflags = ["-C", "target-cpu=cortex-m33", "-C", "target-feature=+vfp2"]


📖 Fonctions disponibles

Fonction Description Retour
sin(x) Sinus (radians) f32
cos(x) Cosinus (radians) f32
atan2(y, x) Arc tangente 2 Result<f32, TrigError>
asin(x) Arc sinus Result<f32, TrigError>
acos(x) Arc cosinus Result<f32, TrigError>

💻 Exemple d'utilisation

Voici comment l'utiliser dans un projet de contrôle moteur ou de robotique :

use embedded_trig_f32::{sin, cos, atan2, consts::PI};

fn main() {
    let angle = PI / 4.0; // 45 degrés
    
    // Calcul direct
    let s = sin(angle);
    let c = cos(angle);
    
    // Calcul inverse sécurisé
    match atan2(s, c) {
        Ok(res) => {
            // res est proche de PI/4
        },
        Err(e) => {
            // Gestion de l'erreur (ex: NaN ou Undefined)
        }
    }
}

🧪 Précision & Tests

La bibliothèque est testée avec une tolérance de 2.10^{-3} (Bhaskara).

Pour lancer les tests sur votre machine de développement :

cargo test

⚖️ Licence

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU (GPL) version 2 ou ultérieure.

Copyright (C) 2026 Jorge Andre Castro