{
  "version": "20260915d",
  "dateModified": "2026-09-15",
  "name": "Cas limites de formules, dates et conversions",
  "creator": "Semantiak",
  "license": "https://www.calculatrice.com/cgu.html#reutilisation",
  "methodology": "https://www.calculatrice.com/verification.html#cas-limites",
  "scope": "Attentes fixes, résultats exacts sauf tolérance explicitement indiquée. Ces cas ne constituent ni une certification ni un test exhaustif.",
  "cases": [
    {
      "id": "v4-notation-e",
      "label": "Notation scientifique : 1e-3 × x",
      "engine": "graph",
      "explanation": "1e-3 vaut 0,001 ; pour x = 2, le résultat vaut 0,002.",
      "expression": "1e-3*x",
      "x": 2,
      "expected": 0.002,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-notation-e-maj",
      "label": "Notation scientifique avec E majuscule",
      "engine": "graph",
      "explanation": "2E+3 représente 2 × 10³.",
      "expression": "2E+3",
      "x": 0,
      "expected": 2000,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-petit-diviseur",
      "label": "Division par un petit nombre non nul",
      "engine": "graph",
      "explanation": "10⁻¹³ est non nul : son inverse vaut 10¹³.",
      "expression": "1/0.0000000000001",
      "x": 0,
      "expected": 10000000000000.0,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-constante-e",
      "label": "Constante e et multiplication implicite",
      "engine": "graph",
      "explanation": "2e conserve le sens 2 × e ; un exposant chiffré distingue 2e3.",
      "expression": "2e",
      "x": 0,
      "absoluteTolerance": 1e-14,
      "expected": 5.43656365691809,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-min",
      "label": "Plusieurs arguments séparés par un point-virgule",
      "engine": "graph",
      "explanation": "Le minimum de 2, −3 et 4 est −3.",
      "expression": "min(2;-3;4)",
      "x": 0,
      "expected": -3,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-pow",
      "label": "Deux arguments pour pow",
      "engine": "graph",
      "explanation": "pow(2;3) calcule 2³.",
      "expression": "pow(2;3)",
      "x": 0,
      "expected": 8,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-sin-arguments",
      "label": "Argument surnuméraire de sin refusé",
      "engine": "graph",
      "explanation": "sin attend un seul angle ; le deuxième ne doit pas être ignoré.",
      "expression": "sin(30;90)",
      "x": 0,
      "mode": "deg",
      "errorPattern": "attend 1 argument",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-pow-arguments",
      "label": "Troisième argument de pow refusé",
      "engine": "graph",
      "explanation": "pow attend une base et un exposant, soit deux arguments.",
      "expression": "pow(2;3;4)",
      "x": 0,
      "errorPattern": "attend 2 arguments",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-min-vide",
      "label": "Minimum sans valeur refusé",
      "engine": "graph",
      "explanation": "Le minimum nécessite au moins une valeur.",
      "expression": "min()",
      "x": 0,
      "errorPattern": "au moins un argument",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-nombre-invalide",
      "label": "Deux séparateurs décimaux refusés",
      "engine": "graph",
      "explanation": "1.2.3 n’est pas un nombre ; aucune multiplication n’est déduite.",
      "expression": "1.2.3",
      "x": 0,
      "errorPattern": "Nombre invalide",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-depassement",
      "label": "Nombre hors domaine refusé",
      "engine": "graph",
      "explanation": "1e999 dépasse le domaine des nombres flottants utilisés.",
      "expression": "1e999",
      "x": 0,
      "errorPattern": "hors domaine",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-longueur",
      "label": "Formule trop longue refusée sans troncature",
      "engine": "graph",
      "explanation": "La limite est de 160 caractères ; la formule entière est refusée au-delà.",
      "expression": "1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1",
      "x": 0,
      "errorPattern": "160 caractères",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-petit-angle",
      "label": "Cosécante d’un petit angle non nul",
      "engine": "graph",
      "explanation": "En radians, sin(10⁻¹³) est proche de 10⁻¹³ : son inverse est proche de 10¹³.",
      "expression": "csc(1e-13)",
      "x": 0,
      "relativeTolerance": 1e-14,
      "expected": 10000000000000.0,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-pole-tangente",
      "label": "Tangente à 90 degrés refusée",
      "engine": "graph",
      "explanation": "La tangente n’est pas définie à un quart de tour.",
      "expression": "tan(90)",
      "x": 0,
      "mode": "deg",
      "errorPattern": "non défini",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-pole-cosecante",
      "label": "Cosécante à pi radians refusée",
      "engine": "graph",
      "explanation": "sin(pi) vaut mathématiquement zéro ; son inverse n’est pas défini.",
      "expression": "csc(pi)",
      "x": 0,
      "errorPattern": "non défini",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-puissance-negative",
      "label": "Priorité d’une puissance négative",
      "engine": "graph",
      "explanation": "2⁻² = 1/4.",
      "expression": "2^-2",
      "x": 0,
      "expected": 0.25,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-division-zero",
      "label": "Division par zéro refusée",
      "engine": "graph",
      "explanation": "Un diviseur exactement nul reste interdit.",
      "expression": "1/0",
      "x": 0,
      "errorPattern": "non défini",
      "error": true,
      "url": "https://www.calculatrice.com/math/graphique.html"
    },
    {
      "id": "v4-29-fevrier-invalide",
      "label": "29 février hors année bissextile refusé",
      "engine": "duration",
      "explanation": "2025 n’est pas bissextile ; le 29 février ne doit pas devenir le 1er mars.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "2025-02-29T12:00",
        "zone": "utc"
      },
      "errorPattern": "invalide",
      "error": true,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-31-avril",
      "label": "31 avril refusé",
      "engine": "duration",
      "explanation": "Avril comporte 30 jours ; le 31 avril ne doit pas devenir le 1er mai.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "2026-04-31T12:00",
        "zone": "utc"
      },
      "errorPattern": "invalide",
      "error": true,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-24-heures",
      "label": "Heure 24:00 refusée",
      "engine": "duration",
      "explanation": "Le formulaire attend une heure de 00:00 à 23:59 ; saisir le lendemain à 00:00.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "2026-01-01T24:00",
        "zone": "utc"
      },
      "errorPattern": "invalide",
      "error": true,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-minute-60",
      "label": "Minute 60 refusée",
      "engine": "duration",
      "explanation": "Les minutes vont de 00 à 59.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "2026-01-01T12:60",
        "zone": "utc"
      },
      "errorPattern": "invalide",
      "error": true,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-offset-invalide",
      "label": "Décalage horaire invalide refusé",
      "engine": "duration",
      "explanation": "Le décalage +25:00 dépasse le domaine accepté.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "1970-01-01T00:00+25:00",
        "zone": "utc"
      },
      "errorPattern": "décalage horaire",
      "error": true,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-29-fevrier-valide",
      "label": "29 février bissextile conservé",
      "engine": "duration",
      "explanation": "2024 est bissextile : la date reste le 29 février.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "2024-02-29T12:00",
        "zone": "utc"
      },
      "field": "iso",
      "expected": "2024-02-29T12:00:00.000Z",
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-offset-epoch",
      "label": "Un décalage explicite conserve l’instant",
      "engine": "duration",
      "explanation": "01:00 avec le décalage +01:00 correspond à 00:00 UTC.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "1970-01-01T01:00+01:00",
        "zone": "utc"
      },
      "expected": 0,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-annee-0099",
      "label": "Année 0099 conservée",
      "engine": "duration",
      "explanation": "Une année sur quatre chiffres n’est pas réinterprétée comme 1999.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "0099-01-01T00:00",
        "zone": "utc"
      },
      "field": "iso",
      "expected": "0099-01-01T00:00:00.000Z",
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-millisecondes-negatives",
      "label": "Seconde négative arrondie vers le bas",
      "engine": "duration",
      "explanation": "−0,5 seconde est ramenée à −1 seconde entière, conformément à la convention affichée.",
      "slug": "timestamp-unix",
      "params": {
        "direction": "toTimestamp",
        "dateTime": "1969-12-31T23:59:59.500Z",
        "zone": "utc"
      },
      "expected": -1,
      "url": "https://www.calculatrice.com/duree/timestamp-unix.html"
    },
    {
      "id": "v4-allure",
      "label": "Allure sans vitesse saisie",
      "engine": "measures",
      "explanation": "60 ÷ 5 = 12 km/h ; la vitesse est le résultat, pas une entrée obligatoire.",
      "slug": "allure-vitesse",
      "params": {
        "direction": "forward",
        "paceMinutes": 5,
        "paceSeconds": 0
      },
      "expected": 12,
      "url": "https://www.calculatrice.com/mesures/allure-vitesse.html"
    },
    {
      "id": "v4-vitesse",
      "label": "Vitesse sans allure saisie",
      "engine": "measures",
      "explanation": "60 ÷ 12 = 5 min/km ; les minutes et secondes ne sont pas des entrées obligatoires.",
      "slug": "allure-vitesse",
      "params": {
        "direction": "reverse",
        "speed": 12
      },
      "expected": 5,
      "url": "https://www.calculatrice.com/mesures/allure-vitesse.html"
    },
    {
      "id": "v4-champ-inactif",
      "label": "Champ inactif sans effet sur le calcul",
      "engine": "measures",
      "explanation": "Dans ce sens, seule l’allure est utilisée ; une ancienne vitesse vide n’empêche pas le calcul.",
      "slug": "allure-vitesse",
      "params": {
        "direction": "forward",
        "paceMinutes": 5,
        "paceSeconds": 0,
        "speed": ""
      },
      "expected": 12,
      "url": "https://www.calculatrice.com/mesures/allure-vitesse.html"
    },
    {
      "id": "v4-champ-actif",
      "label": "Allure active manquante refusée",
      "engine": "measures",
      "explanation": "Les minutes doivent être renseignées lorsque l’allure est l’entrée.",
      "slug": "allure-vitesse",
      "params": {
        "direction": "forward",
        "paceMinutes": "",
        "paceSeconds": 0
      },
      "errorPattern": "renseigné",
      "error": true,
      "url": "https://www.calculatrice.com/mesures/allure-vitesse.html"
    }
  ]
}
