{
  "_id": "6a16a1b3acfb0bcc41d81570",
  "Package": "nabla",
  "Title": "Exact Derivatives via Automatic Differentiation",
  "Version": "0.7.1",
  "Authors@R": "person(\"Alexander\", \"Towell\",\nrole = c(\"aut\", \"cre\"),\nemail = \"queelius@gmail.com\",\ncomment = c(ORCID = \"0000-0001-6443-9897\"))",
  "URL": "https://github.com/queelius/nabla, https://metafunctor.com",
  "BugReports": "https://github.com/queelius/nabla/issues",
  "Description": "Exact automatic differentiation for R functions. Provides\na composable derivative operator D that computes gradients,\nHessians, Jacobians, and arbitrary-order derivative tensors at\nmachine precision. D(D(f)) gives Hessians, D(D(D(f))) gives\nthird-order tensors for skewness of maximum likelihood\nestimators, and so on to any order. Works through any R code\nincluding loops, branches, and control flow.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Collate": "'dual-class.R' 'dual-arithmetic.R' 'dual-math.R'\n'dual-special.R' 'dual-higher.R' 'derivatives.R'\n'nabla-package.R'",
  "Repository": "https://queelius.r-universe.dev",
  "Date/Publication": "2026-02-26 07:04:13 UTC",
  "RemoteUrl": "https://github.com/queelius/nabla",
  "RemoteRef": "HEAD",
  "RemoteSha": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-27 07:45:06 UTC",
    "User": "root"
  },
  "Author": "Alexander Towell [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-6443-9897>)",
  "Maintainer": "Alexander Towell <queelius@gmail.com>",
  "MD5sum": "9cf3353f6a0dd05a695ff43a6c327ca9",
  "_user": "queelius",
  "_type": "src",
  "_file": "nabla_0.7.1.tar.gz",
  "_fileid": "ad5bed99189ff0903657e0879738ee2da866aec1c79aa62490dce9d40d3bfcf8",
  "_filesize": 1164149,
  "_sha256": "ad5bed99189ff0903657e0879738ee2da866aec1c79aa62490dce9d40d3bfcf8",
  "_created": "2026-05-27T07:45:06.000Z",
  "_published": "2026-05-27T07:48:03.439Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78030995425,
      "time": 140,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7234772839"
    },
    {
      "job": 78030995387,
      "time": 133,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7234770321"
    },
    {
      "job": 78030995428,
      "time": 84,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7234753930"
    },
    {
      "job": 78030995385,
      "time": 124,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7234767206"
    },
    {
      "job": 78030477398,
      "time": 197,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7234724591"
    },
    {
      "job": 78030995373,
      "time": 90,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7234756612"
    },
    {
      "job": 78030995402,
      "time": 119,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7234765756"
    },
    {
      "job": 78030995419,
      "time": 143,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7234773700"
    },
    {
      "job": 78030995442,
      "time": 116,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7234765059"
    }
  ],
  "_buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/queelius/nabla",
  "_commit": {
    "id": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
    "author": "Alex Towell <lex@metafunctor.com>",
    "committer": "Alex Towell <lex@metafunctor.com>",
    "message": "Add JOSS paper draft, community files, and test cleanup\n\n- Add paper.md and paper.bib for JOSS submission\n- Add CONTRIBUTING.md (bug reports, PR process, coding style, testing)\n- Add CODE_OF_CONDUCT.md (Contributor Covenant v2.1)\n- Add Deriv package to State of the Field in paper.md\n- Update R Core Team citation to 2026\n- Suppress expected NaN warning in log(negative dual) test\n- Add paper.md, paper.bib, CONTRIBUTING.md to .Rbuildignore\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n",
    "time": 1772089453
  },
  "_maintainer": {
    "name": "Alexander Towell",
    "email": "queelius@gmail.com",
    "login": "queelius",
    "orcid": "0000-0001-6443-9897",
    "twitter": "@queelius",
    "description": "Alexander Towell (Alex Towell). Reliability theory, encrypted search, algebraic structures. Building personal data tools.",
    "uuid": 1896674
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.0.0",
      "role": "Depends"
    },
    {
      "package": "methods",
      "role": "Depends"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "queelius",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-05",
      "n": 5
    },
    {
      "week": "2026-06",
      "n": 5
    },
    {
      "week": "2026-09",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-01-31"
    },
    {
      "name": "v0.2.0",
      "date": "2026-02-01"
    },
    {
      "name": "v0.5.0",
      "date": "2026-02-01"
    },
    {
      "name": "v0.7.0",
      "date": "2026-02-02"
    },
    {
      "name": "v0.7.1",
      "date": "2026-02-25"
    }
  ],
  "_topics": [
    "automatic-differentiation",
    "derivative-operator",
    "gradient",
    "hessian",
    "higher-order-derivatives",
    "jacobian",
    "mle"
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "queelius",
      "count": 12,
      "uuid": 1896674
    }
  ],
  "_userbio": {
    "uuid": 1896674,
    "type": "user",
    "name": "Alex Towell",
    "description": "Alexander Towell (Alex Towell). Reliability theory, encrypted search, algebraic structures. Building personal data tools."
  },
  "_downloads": {
    "count": 127,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/nabla"
  },
  "_devurl": "https://github.com/queelius/nabla",
  "_searchresults": 8,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/nabla.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/queelius/nabla",
  "_realowner": "queelius",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.7.1",
      "date": "2026-02-16"
    }
  ],
  "_exports": [
    "atan2",
    "beta",
    "D",
    "deriv",
    "deriv_n",
    "differentiate_n",
    "dual",
    "dual_constant",
    "dual_constant_n",
    "dual_variable",
    "dual_variable_n",
    "dual_vector",
    "erf",
    "erfc",
    "gradient",
    "hessian",
    "is_dual",
    "jacobian",
    "lbeta",
    "Math",
    "Math2",
    "Ops",
    "psigamma",
    "show",
    "Summary",
    "value"
  ],
  "_help": [
    {
      "page": "nabla-package",
      "title": "nabla: Exact Derivatives via Automatic Differentiation",
      "topics": [
        "nabla-package",
        "nabla"
      ]
    },
    {
      "page": "beta",
      "title": "Beta function for dual numbers",
      "topics": [
        "beta",
        "beta,ANY,ANY-method",
        "beta,numeric,numeric-method"
      ]
    },
    {
      "page": "D",
      "title": "Composable total derivative operator",
      "topics": [
        "D"
      ]
    },
    {
      "page": "deriv",
      "title": "Extract the derivative (tangent) part of a dual number",
      "topics": [
        "deriv",
        "deriv,dualr-method",
        "deriv,numeric-method"
      ]
    },
    {
      "page": "deriv_n",
      "title": "Extract the k-th derivative from a nested dual result",
      "topics": [
        "deriv_n"
      ]
    },
    {
      "page": "differentiate_n",
      "title": "Compute a function value and all derivatives up to order n",
      "topics": [
        "differentiate_n"
      ]
    },
    {
      "page": "dual",
      "title": "Create a dual number",
      "topics": [
        "dual"
      ]
    },
    {
      "page": "dual_constant",
      "title": "Create a dual constant (derivative seed = 0)",
      "topics": [
        "dual_constant"
      ]
    },
    {
      "page": "dual_constant_n",
      "title": "Create a constant dual for n-th order differentiation",
      "topics": [
        "dual_constant_n"
      ]
    },
    {
      "page": "dual_variable",
      "title": "Create a dual variable (derivative seed = 1)",
      "topics": [
        "dual_variable"
      ]
    },
    {
      "page": "dual_variable_n",
      "title": "Create a dual seeded for n-th order differentiation",
      "topics": [
        "dual_variable_n"
      ]
    },
    {
      "page": "dual_vector",
      "title": "Create a vector of dual numbers",
      "topics": [
        "dual_vector"
      ]
    },
    {
      "page": "dual_vector-access",
      "title": "Indexing and length for dual_vector",
      "topics": [
        "dual_vector-access",
        "length,dual_vector-method",
        "[,dual_vector,numeric-method"
      ]
    },
    {
      "page": "dual_vector-class",
      "title": "Dual Number Vector",
      "topics": [
        "dual_vector-class"
      ]
    },
    {
      "page": "dual-arithmetic",
      "title": "Arithmetic and comparison operators for dual numbers",
      "topics": [
        "!,dualr-method",
        "*,dualr,dualr-method",
        "*,dualr,numeric-method",
        "*,numeric,dualr-method",
        "+,dualr,dualr-method",
        "+,dualr,missing-method",
        "+,dualr,numeric-method",
        "+,numeric,dualr-method",
        "-,dualr,dualr-method",
        "-,dualr,missing-method",
        "-,dualr,numeric-method",
        "-,numeric,dualr-method",
        "/,dualr,dualr-method",
        "/,dualr,numeric-method",
        "/,numeric,dualr-method",
        "dual-arithmetic",
        "Ops,dualr,dualr-method",
        "Ops,dualr,numeric-method",
        "Ops,numeric,dualr-method",
        "^,dualr,dualr-method",
        "^,dualr,numeric-method",
        "^,numeric,dualr-method"
      ]
    },
    {
      "page": "dual-atan2",
      "title": "Two-argument arctangent for dual numbers",
      "topics": [
        "atan2,dualr,dualr-method",
        "atan2,dualr,numeric-method",
        "atan2,numeric,dualr-method",
        "dual-atan2"
      ]
    },
    {
      "page": "dual-coerce",
      "title": "Coerce dual to numeric",
      "topics": [
        "as.numeric,dualr-method",
        "dual-coerce"
      ]
    },
    {
      "page": "dual-combine",
      "title": "Combine dual numbers into a dual_vector",
      "topics": [
        "c,dualr-method",
        "dual-combine"
      ]
    },
    {
      "page": "dual-is-numeric",
      "title": "Check if a dual number is numeric",
      "topics": [
        "dual-is-numeric",
        "is.numeric,dualr-method"
      ]
    },
    {
      "page": "dual-log",
      "title": "Logarithm with optional base for dual numbers",
      "topics": [
        "dual-log",
        "log,dualr-method"
      ]
    },
    {
      "page": "dual-math",
      "title": "Math group generic for dual numbers",
      "topics": [
        "dual-math",
        "exp,dualr-method",
        "Math,dualr-method",
        "sqrt,dualr-method"
      ]
    },
    {
      "page": "dual-math2",
      "title": "Math2 group generic for dual numbers",
      "topics": [
        "dual-math2",
        "Math2,dualr-method"
      ]
    },
    {
      "page": "dual-maxmin",
      "title": "Piecewise max and min for dual numbers",
      "topics": [
        "dual-maxmin",
        "max,dualr-method",
        "min,dualr-method"
      ]
    },
    {
      "page": "dual-show",
      "title": "Display a dual number",
      "topics": [
        "dual-show",
        "show,dualr-method",
        "show,dual_vector-method"
      ]
    },
    {
      "page": "dual-summary",
      "title": "Summary group generic for dual numbers",
      "topics": [
        "dual-summary",
        "Summary,dualr-method"
      ]
    },
    {
      "page": "dualr-class",
      "title": "Dual Number Class for Automatic Differentiation",
      "topics": [
        "dualr-class"
      ]
    },
    {
      "page": "erf",
      "title": "Error function",
      "topics": [
        "erf",
        "erf,dualr-method",
        "erf,numeric-method"
      ]
    },
    {
      "page": "erfc",
      "title": "Complementary error function",
      "topics": [
        "erfc",
        "erfc,dualr-method",
        "erfc,numeric-method"
      ]
    },
    {
      "page": "gradient",
      "title": "Compute the gradient of a scalar-valued function",
      "topics": [
        "gradient"
      ]
    },
    {
      "page": "hessian",
      "title": "Compute the Hessian of a scalar-valued function",
      "topics": [
        "hessian"
      ]
    },
    {
      "page": "is_dual",
      "title": "Test whether an object is a dual number",
      "topics": [
        "is_dual"
      ]
    },
    {
      "page": "jacobian",
      "title": "Compute the Jacobian of a vector-valued function",
      "topics": [
        "jacobian"
      ]
    },
    {
      "page": "lbeta",
      "title": "Log-beta function for dual numbers",
      "topics": [
        "lbeta",
        "lbeta,dualr,dualr-method",
        "lbeta,dualr,numeric-method",
        "lbeta,numeric,dualr-method",
        "lbeta,numeric,numeric-method"
      ]
    },
    {
      "page": "psigamma",
      "title": "Polygamma function for dual numbers",
      "topics": [
        "psigamma",
        "psigamma,dualr-method",
        "psigamma,numeric-method"
      ]
    },
    {
      "page": "value",
      "title": "Extract the value (primal) part of a dual number",
      "topics": [
        "value",
        "value,dualr-method",
        "value,numeric-method"
      ]
    }
  ],
  "_readme": "https://github.com/queelius/nabla/raw/HEAD/README.md",
  "_rundeps": [],
  "_vignettes": [
    {
      "source": "mle-workflow.Rmd",
      "filename": "mle-workflow.html",
      "title": "Gradient and Hessian Computation with nabla",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Helper: finite difference utilities",
        "Normal log-likelihood: known sigma, unknown mu",
        "Normal log-likelihood: unknown mu and sigma",
        "Poisson log-likelihood: unknown lambda",
        "Visualizing the gradient",
        "Gamma log-likelihood: unknown shape, known rate",
        "Logistic regression: 2 predictors",
        "Newton-Raphson optimizer",
        "Contour plot: Normal(mu, sigma) log-likelihood surface",
        "Newton-Raphson convergence path",
        "jacobian(): differentiating a vector-valued function",
        "Summary"
      ],
      "created": "2026-01-31 07:38:55",
      "modified": "2026-02-07 22:20:43",
      "commits": 5
    },
    {
      "source": "higher-order.Rmd",
      "filename": "higher-order.html",
      "title": "Higher-Order Derivatives",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The D operator",
        "Curvature analysis",
        "Visualizing curvature along sin(x)",
        "Taylor expansion",
        "Connection to MLE: exact Hessians for standard errors",
        "How it works: nested duals",
        "Summary"
      ],
      "created": "2026-01-31 07:38:55",
      "modified": "2026-02-07 22:20:43",
      "commits": 5
    },
    {
      "source": "mle-skewness.Rmd",
      "filename": "mle-skewness.html",
      "title": "Higher-Order MLE Analysis",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Motivation",
        "The Gamma model",
        "Finding the MLE",
        "Score and observed information",
        "Third-order derivative tensor",
        "Asymptotic skewness of the MLE",
        "Monte Carlo validation",
        "Visualizing MLE asymmetry",
        "Summary"
      ],
      "created": "2026-02-02 09:29:22",
      "modified": "2026-02-07 22:20:43",
      "commits": 3
    },
    {
      "source": "introduction.Rmd",
      "filename": "introduction.html",
      "title": "Introduction to nabla",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What is nabla?",
        "Quick start",
        "Works through any R code",
        "Multi-parameter functions",
        "Quick comparison: three ways to differentiate",
        "Why exact derivatives matter",
        "How it works: dual numbers",
        "What's next?"
      ],
      "created": "2026-01-31 07:38:55",
      "modified": "2026-02-07 22:20:43",
      "commits": 5
    },
    {
      "source": "optimizer-integration.Rmd",
      "filename": "optimizer-integration.html",
      "title": "Optimizer Integration",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "optim() with AD gradients",
        "nlminb() with AD gradient + Hessian",
        "Logistic regression example",
        "Standard errors from the Hessian",
        "Convergence comparison",
        "Summary"
      ],
      "created": "2026-01-31 07:38:55",
      "modified": "2026-02-07 22:20:43",
      "commits": 5
    }
  ],
  "_score": 4.8750612633917,
  "_indexed": true,
  "_nocasepkg": "nabla",
  "_universes": [
    "queelius"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.7.1",
      "date": "2026-05-27T07:47:05.000Z",
      "distro": "noble",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "956cae1e41dfef8768d5080618215bfe8fceb45bc7c0f91321be9f40e269135d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.7.1",
      "date": "2026-05-27T07:47:00.000Z",
      "distro": "noble",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "1ae71ab9efc2265c9e3234083aa9dea45057f5b15e37c93af9394328442a99b6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.7.1",
      "date": "2026-05-27T07:46:26.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "3a0d3241c16d0cb1e399c60d54b3c6fa5038533d270d607f5b838dbe35d3e8c3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.7.1",
      "date": "2026-05-27T07:46:55.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "f25aa1e67cd9ccf09e19b9328a579ac401dc0f8386490510b6226bc3dba5a544",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.7.1",
      "date": "2026-05-27T07:46:56.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "e641fed52b57f91da6967830460535cf384e6bd3d33b08ac51f5c0d192c57bb2",
      "status": "success",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-05-27T07:46:37.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "0c682d836cf527251b00cd9006dde1498bd4c8f68f2a1968a25221a2466e97fb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-05-27T07:47:01.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "443301c9299c145713edcfa6327fff4addd2862d58561952971b1989295781f0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-05-27T07:46:43.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "e266c11afeb7a6a01b468ce991abc5412baac6572204d6b02bb39dc3ab09f2c2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/26497862900"
    }
  ]
}