Skip to content

Evaluate ​

L'endpoint /evaluate évalue une expression mathématique de manière sécurisée et retourne son résultat. Il utilise un parseur Pratt — aucun eval() n'est jamais appelé.

Comment ça marche ?

Les expressions sont tokenisées puis parsées récursivement via des binding powers (Pratt parsing). Le résultat est calculé directement depuis l'AST — pas d'eval(), pas de Function(). Deux constantes sont disponibles : pi (≈ 3.14159…) et e (≈ 2.71828…). La profondeur de récursion est limitée à 100 et la longueur de l'expression à 500 caractères.

Paramètres ​

ParamètreRequisDescription
exprOuiL'expression mathématique à évaluer (max 500 caractères)
precisionNonNombre de décimales dans le résultat (0–15)

Opérateurs supportés ​

OpérateurDescription
+Addition
-Soustraction / négation unaire
*Multiplication
/Division
%Modulo
^Exponentiation

La négation unaire - a une priorité plus faible que ^, conformément à la convention mathématique standard : -2^2 donne -4 (soit -(2^2)), et non 4.

Fonctions disponibles ​

sin, cos, tan, asin, acos, atan, sqrt, abs, floor, ceil, round, log, log2, log10

Champs de réponse ​

ChampTypeDescription
exprstringL'expression originale
resultnumberLe résultat évalué

Exemples de code ​

curl -X GET \
  "https://api.sylvain.sh/v6/evaluate?expr=2*%283%2B4%29%5E2&precision=2"

Essayer ​

Gestion des erreurs ​

Si les paramètres sont manquants ou invalides, l'API retournera une erreur :

Message d'erreurDescription
Please provide a math expression (?expr={expression})Le paramètre expr est manquant
Expression is too long (max 500 characters)L'expression dépasse 500 caractères
Maximum expression depth exceededLa profondeur d'imbrication dépasse 100 niveaux
Division by zeroL'expression tente une division par zéro
Unknown identifier: {name}Une constante ou fonction inconnue a été utilisée
Invalid number: {num}Un nombre contient plus d'un point décimal (ex. 1.2.3)
precision must be between 0 and 15La valeur de precision est hors limites