{
  "_id": "6a47cfcbe06c18f0a651fa4e",
  "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-07-03 15:02:39 UTC",
    "User": "root"
  },
  "Author": "Alexander Towell [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-6443-9897>)",
  "Maintainer": "Alexander Towell <queelius@gmail.com>",
  "_user": "queelius",
  "_type": "src",
  "_file": "nabla_0.7.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/126771840484dcb5aac1cd35ff8571504f2e38c3a72a1cf7206975e3fc48c693",
  "_filesize": 1162775,
  "_sha256": "126771840484dcb5aac1cd35ff8571504f2e38c3a72a1cf7206975e3fc48c693",
  "_expires": "2026-10-11T15:05:45.000Z",
  "_created": "2026-07-03T15:02:39.000Z",
  "_published": "2026-07-03T15:05:47.439Z",
  "_jobs": [
    {
      "job": 85026337457,
      "time": 145,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8069725228"
    },
    {
      "job": 85026337441,
      "time": 144,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8069725071"
    },
    {
      "job": 85026337459,
      "time": 124,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8069718458"
    },
    {
      "job": 85026337469,
      "time": 94,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8069708637"
    },
    {
      "job": 85025763292,
      "time": 192,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8069676139"
    },
    {
      "job": 85026337448,
      "time": 84,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8069705237"
    },
    {
      "job": 85026337436,
      "time": 104,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8069711642"
    },
    {
      "job": 85026337463,
      "time": 108,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8069712781"
    },
    {
      "job": 85026337467,
      "time": 103,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8069711558"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190",
  "_status": "success",
  "_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
  },
  "_distro": "resolute",
  "_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",
    "followers": 118,
    "description": "Alexander Towell (Alex Towell). Reliability theory, encrypted search, algebraic structures. Building personal data tools."
  },
  "_downloads": {
    "count": 185,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/nabla"
  },
  "_devurl": "https://github.com/queelius/nabla",
  "_searchresults": 8,
  "_rbuild": "4.6.1",
  "_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",
    "LICENSE",
    "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-07-03T15:04:46.000Z",
      "distro": "resolute",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/ac2ef72475aa6f9640a85beb84ea2c63177aadfba01d6d3798dd74347f2f25b7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.7.1",
      "date": "2026-07-03T15:04:45.000Z",
      "distro": "resolute",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/c5e90e813aa8a7759dcbb696251dc63bef8531ba7d49957b5ffccf325c422a55",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.7.1",
      "date": "2026-07-03T15:04:33.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/e79bf256f04a08e0cb45b3e46946b3c88536eb213c92551788f007894d923f9d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.7.1",
      "date": "2026-07-03T15:04:09.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/c1a14e4d71e57384f89f5c1411c9046f779f66924a1a7367a2a4200bb8acc1be",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.7.1",
      "date": "2026-07-03T15:04:23.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/ac8db0a2dd047210e0a5e20a04dc0f30c04a9e352df841adf576f2d2f7b8f170",
      "status": "success",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-07-03T15:03:52.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/fb6acfffd082887277d076090707fb5da81018e5e5194da1453d38eff626639e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-07-03T15:04:01.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/33f06264a85eb260ecbd261113e7f76f996d143843c7646a4eb5d720db1a6249",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.7.1",
      "date": "2026-07-03T15:03:52.000Z",
      "commit": "0e1ef3ca9412c545afe9f925aaaec2e1e526315b",
      "fileid": "https://r2.ropensci.org/9d9ad0bece5ae284a4557906cbf6523bb1697f6fbc93236b7ba2771e5bf78e23",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/queelius/actions/runs/28668403190"
    }
  ]
}