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/v5/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