{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/math.percent_error.agent.input.json",
  "title": "Percent error — agent input",
  "oneOf": [
    {
      "title": "p",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "p"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "solve_for",
        "observed",
        "true"
      ]
    },
    {
      "title": "o",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "o"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "solve_for",
        "true",
        "percent"
      ]
    },
    {
      "title": "t",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "solve_for": {
          "const": "t"
        },
        "abs": {
          "type": "boolean"
        },
        "observed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "true": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "solve_for",
        "observed",
        "percent"
      ]
    }
  ],
  "description": "Absolute/signed percent error, complete inverse branches and per-branch diagnostics; binary64 range and resolution policy.. Mode-discriminated agent contract. Named fields are canonical; a/b are legacy share-URL aliases. (calculation_version 1.1.5)"
}
