{
  "_id": "6a14121dacfb0bcc41d3b8f2",
  "Package": "salad",
  "Type": "Package",
  "Title": "Simple Automatic Differentiation",
  "Version": "1.2",
  "Date": "2024-12-18",
  "Authors@R": "person(\"Hervé\", \"Perdry\", email = \"herve.perdry@universite-paris-saclay.fr\", role = c(\"aut\", \"cre\"))",
  "Maintainer": "Hervé Perdry <herve.perdry@universite-paris-saclay.fr>",
  "Description": "Handles both vector and matrices, using a flexible S4\nclass for automatic differentiation. The method used is forward\nautomatic differentiation. Many functions and methods have been\ndefined, so that in most cases, functions written without\nautomatic differentiation in mind can be used without change.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "VignetteBuilder": "knitr",
  "RoxygenNote": "7.3.1",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-25 09:07:27 UTC",
    "User": "root"
  },
  "Author": "Hervé Perdry [aut, cre]",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2024-12-18 12:30:02 UTC",
  "RemoteUrl": "https://github.com/cran/salad",
  "RemoteRef": "HEAD",
  "RemoteSha": "1dd90732cc42cad07bc8bfc2f5bea70092b22f73",
  "MD5sum": "02d7a8e1cbc66b646b46bf1dd59cff19",
  "_user": "cran",
  "_type": "src",
  "_file": "salad_1.2.tar.gz",
  "_fileid": "7ec13cb977af9b4fdc157bbe70ff04006ee98223e4d257e9c245c2f6abacc96d",
  "_filesize": 268030,
  "_sha256": "7ec13cb977af9b4fdc157bbe70ff04006ee98223e4d257e9c245c2f6abacc96d",
  "_created": "2026-05-25T09:07:27.000Z",
  "_published": "2026-05-25T09:10:53.144Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77685933314,
      "time": 120,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7195205973"
    },
    {
      "job": 77685933505,
      "time": 166,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7195214875"
    },
    {
      "job": 77685736988,
      "time": 166,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7195183691"
    },
    {
      "job": 77685933283,
      "time": 81,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7195198948"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/26392512162",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/salad",
  "_commit": {
    "id": "1dd90732cc42cad07bc8bfc2f5bea70092b22f73",
    "author": "Hervé Perdry <herve.perdry@universite-paris-saclay.fr>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.2\n",
    "time": 1734525002
  },
  "_maintainer": {
    "name": "Hervé Perdry",
    "email": "herve.perdry@universite-paris-saclay.fr"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "methods",
      "role": "Depends"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [],
  "_tags": [],
  "_stars": 0,
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 164,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/salad"
  },
  "_searchresults": 11,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/salad.html",
    "manual.pdf"
  ],
  "_realowner": "cran",
  "_cranurl": false,
  "_releases": [
    {
      "version": "1.0",
      "date": "2024-06-24"
    },
    {
      "version": "1.1",
      "date": "2024-11-04"
    },
    {
      "version": "1.2",
      "date": "2024-12-18"
    }
  ],
  "_exports": [
    "%o%",
    "apply",
    "array",
    "as.matrix",
    "atan2",
    "beta",
    "cbind2",
    "choose",
    "colMeans",
    "colSums",
    "d",
    "det",
    "diag",
    "diag<-",
    "dnorm",
    "dnorm.dual",
    "dual",
    "dualFun1",
    "gradient.descent",
    "ifelse",
    "lbeta",
    "lchoose",
    "logNeper",
    "matrix",
    "matrixprod_dd",
    "matrixprod_dn",
    "matrixprod_nd",
    "optiWrap",
    "outer",
    "psigamma",
    "rbind2",
    "rowMeans",
    "rowSums",
    "salad",
    "solve",
    "value",
    "varnames",
    "which.max",
    "which.min"
  ],
  "_help": [
    {
      "page": "apply-dual-method",
      "title": "Apply functions over array margins of dual objects",
      "topics": [
        "apply,dual-method"
      ]
    },
    {
      "page": "Arithmetic",
      "title": "Arithmetic Operators",
      "topics": [
        "*,dual,dual-method",
        "*,dual,numeric-method",
        "*,numeric,dual-method",
        "+,dual,dual-method",
        "+,dual,missing-method",
        "+,dual,numericOrArray-method",
        "+,numericOrArray,dual-method",
        "-,dual,dual-method",
        "-,dual,missing-method",
        "-,dual,numericOrArray-method",
        "-,numericOrArray,dual-method",
        "/,dual,dual-method",
        "/,dual,numeric-method",
        "/,numeric,dual-method",
        "Arithmetic",
        "^,dual,dual-method",
        "^,dual,numeric-method",
        "^,numeric,dual-method"
      ]
    },
    {
      "page": "bind",
      "title": "Binding methods for dual objects",
      "topics": [
        "bind",
        "cbind2,dual,dual-method",
        "cbind2,dual,missing-method",
        "cbind2,dual,numericOrArray-method",
        "cbind2,numericOrArray,dual-method",
        "rbind2,dual,dual-method",
        "rbind2,dual,missing-method",
        "rbind2,dual,numericOrArray-method",
        "rbind2,numericOrArray,dual-method",
        "rbind2_dd"
      ]
    },
    {
      "page": "c-dual",
      "title": "Concatenation methods",
      "topics": [
        "c",
        "c,numericOrArray-method",
        "c-dual",
        "concat0"
      ]
    },
    {
      "page": "colSums",
      "title": "Row and column sums and means",
      "topics": [
        "colMeans",
        "colMeans,dual-method",
        "colMeans.dual",
        "colSums",
        "colSums,dual-method",
        "colSums.dual",
        "rowMeans",
        "rowMeans,dual-method",
        "rowMeans.dual",
        "rowSums",
        "rowSums,dual-method",
        "rowSums.dual"
      ]
    },
    {
      "page": "Comparison",
      "title": "Comparison Operators",
      "topics": [
        "Compare,dual,ANY-method",
        "Comparison"
      ]
    },
    {
      "page": "d",
      "title": "get list of derivatives",
      "topics": [
        "d",
        "d.dual",
        "d.numeric",
        "value",
        "value.dual",
        "value.numeric",
        "varnames",
        "varnames.dual",
        "varnames.numeric"
      ]
    },
    {
      "page": "diag",
      "title": "Matrix diagonals",
      "topics": [
        "diag",
        "diag,dual-method",
        "diag.dual",
        "diag<-,dual,dual-method",
        "diag<-,dual,numericOrArray-method"
      ]
    },
    {
      "page": "dnorm",
      "title": "Normal distribution",
      "topics": [
        "dnorm",
        "dnorm.dual"
      ]
    },
    {
      "page": "dual",
      "title": "Dual objects",
      "topics": [
        "dual"
      ]
    },
    {
      "page": "dual-class",
      "title": "dual class",
      "topics": [
        "dual-class"
      ]
    },
    {
      "page": "dualFun1",
      "title": "Defining in-house derivatives",
      "topics": [
        "dualFun1"
      ]
    },
    {
      "page": "extract",
      "title": "Extract or replace parts of an object",
      "topics": [
        "Extract",
        "[,dual,index,index-method",
        "[,dual,index,missing-method",
        "[,dual,missing,index-method",
        "[,dual,missing,missing-method",
        "[<-,dual,index,index,dual-method",
        "[<-,dual,index,index,logicalOrNumericOrArray-method",
        "[<-,dual,index,missing,dual-method",
        "[<-,dual,index,missing,logicalOrNumericOrArray-method",
        "[<-,dual,missing,index,dual-method",
        "[<-,dual,missing,index,logicalOrNumericOrArray-method",
        "[<-,dual,missing,missing,dual-method",
        "[<-,dual,missing,missing,logicalOrNumericOrArray-method"
      ]
    },
    {
      "page": "gradient.descent",
      "title": "Gradient descent",
      "topics": [
        "gradient.descent"
      ]
    },
    {
      "page": "ifelse",
      "title": "Conditionnal Element Selection",
      "topics": [
        "ifelse",
        "ifelse,ANY,dual,numericOrArrayOrDual-method",
        "ifelse,ANY,numericOrArray,dual-method"
      ]
    },
    {
      "page": "inversion",
      "title": "Determinant and matrix inversion for dual matrices",
      "topics": [
        "det",
        "det,dual-method",
        "det.dual",
        "determinant",
        "determinant.dual",
        "inversion",
        "solve",
        "solve,dual,dual-method",
        "solve,dual,missing-method",
        "solve,dual,numericOrArray-method",
        "solve,numericOrArray,dual-method"
      ]
    },
    {
      "page": "MathFun",
      "title": "Mathematical functions",
      "topics": [
        "abs.dual",
        "acos.dual",
        "acosh.dual",
        "asin.dual",
        "asinh.dual",
        "atan.dual",
        "atan2,dual,dual-method",
        "atan2,dual,numericOrArray-method",
        "atan2,numericOrArray,dual-method",
        "atanh.dual",
        "beta,dual,dual-method",
        "beta,dual,numericOrArray-method",
        "beta,numericOrArray,dual-method",
        "ceiling.dual",
        "choose,dual,numeric-method",
        "cos.dual",
        "cosh.dual",
        "cospi.dual",
        "digamma.dual",
        "exp.dual",
        "expm1.dual",
        "factorial.dual",
        "floor.dual",
        "gamma.dual",
        "lbeta,dual,dual-method",
        "lbeta,dual,numericOrArray-method",
        "lbeta,numericOrArray,dual-method",
        "lchoose,dual,numeric-method",
        "lfactorial.dual",
        "lgamma.dual",
        "log.dual",
        "log10.dual",
        "log1p.dual",
        "log2.dual",
        "logNeper",
        "MathFun",
        "psigamma,dual-method",
        "psigamma.dual",
        "sign.dual",
        "sin.dual",
        "sinh.dual",
        "sinpi.dual",
        "sqrt.dual",
        "tan.dual",
        "tanh.dual",
        "tanpi.dual",
        "trigamma.dual",
        "trunc.dual"
      ]
    },
    {
      "page": "matmult",
      "title": "Matrix Arithmetic",
      "topics": [
        "%*%,dual,dual-method",
        "%*%,dual,numericOrArray-method",
        "%*%,numericOrArray,dual-method",
        "crossprod,dual,dual-method",
        "crossprod,dual,missing-method",
        "crossprod,dual,numericOrArray-method",
        "crossprod,numericOrArray,dual-method",
        "matmult",
        "matrixprod_dd",
        "matrixprod_dn",
        "matrixprod_nd",
        "tcrossprod,dual,dual-method",
        "tcrossprod,dual,missing-method",
        "tcrossprod,dual,numericOrArray-method",
        "tcrossprod,numericOrArray,dual-method"
      ]
    },
    {
      "page": "matrix",
      "title": "Methods for `matrix`, `array`, `as.matrix` and `as.vector`",
      "concept": [
        "dual"
      ],
      "topics": [
        "array,dual-method",
        "as",
        "as.matrix,dual-method",
        "as.matrix.dual",
        "as.vector,dual-method",
        "as.vector.dual",
        "matrix",
        "matrix,dual-method"
      ]
    },
    {
      "page": "optiWrap",
      "title": "Wrapper for optimisation with automatically computed gradient",
      "topics": [
        "optiWrap"
      ]
    },
    {
      "page": "outer",
      "title": "Outer product for dual objects",
      "topics": [
        "%o%,dual,dual-method",
        "%o%,dual,numericOrArray-method",
        "%o%,numericOrArray,dual-method",
        "outer",
        "outer,dual,dual-method",
        "outer,dual,numericOrArray-method",
        "outer,numericOrArray,dual-method",
        "outer.dual"
      ]
    },
    {
      "page": "rep",
      "title": "Replicate elements of a dual vector",
      "topics": [
        "rep",
        "rep.dual"
      ]
    },
    {
      "page": "salad",
      "title": "Salad options",
      "topics": [
        "salad"
      ]
    },
    {
      "page": "shape",
      "title": "Dual objects length, dim, names and dimnames",
      "topics": [
        "dim.dual",
        "dim<-.dual",
        "dimnames.dual",
        "dimnames<-.dual",
        "length.dual",
        "names.dual",
        "names<-.dual",
        "shape"
      ]
    },
    {
      "page": "summary",
      "title": "Summary methods for objects of class dual",
      "topics": [
        "max",
        "max,numericOrArray-method",
        "max.dual",
        "min",
        "min,numericOrArray-method",
        "min.dual",
        "prod",
        "prod,numericOrArray-method",
        "prod.dual",
        "range",
        "range,numericOrArray-method",
        "range.dual",
        "sum",
        "sum,numericOrArray-method",
        "sum.dual",
        "Summary",
        "which.max",
        "which.max,dual-method",
        "which.min",
        "which.min,dual-method"
      ]
    },
    {
      "page": "t",
      "title": "Transposition of matrices and arrays",
      "topics": [
        "aperm",
        "aperm.dual",
        "t",
        "t.dual"
      ]
    }
  ],
  "_rundeps": [],
  "_vignettes": [
    {
      "source": "salad.Rmd",
      "filename": "salad.html",
      "title": "salad package",
      "author": "Hervé Perdry",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Short overview of salad",
        "Examples",
        "A simple function",
        "Matrix arithmetic",
        "Using ifelse, apply etc.",
        "What salad doesn't do well",
        "Salad doesn't check variable names",
        "Illustrating the problem",
        "A possible solution",
        "Best (?) solution",
        "Beware of as.vector and as.matrix",
        "Other caveats : abs, max, min",
        "What salad does",
        "Defining new derivation rules",
        "Contributing to salad"
      ],
      "created": "2024-06-25 02:47:26",
      "modified": "2024-11-04 19:30:02",
      "commits": 2
    }
  ],
  "_score": 2.0413926851582254,
  "_indexed": true,
  "_nocasepkg": "salad",
  "_universes": [
    "cran"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.2",
      "date": "2026-05-25T09:09:27.000Z",
      "distro": "noble",
      "commit": "1dd90732cc42cad07bc8bfc2f5bea70092b22f73",
      "fileid": "02bec6310c9d7f07b2d85518182ddb10168f205ef10a5f00ea3e503dda8f6ead",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26392512162"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.2",
      "date": "2026-05-25T09:10:10.000Z",
      "distro": "noble",
      "commit": "1dd90732cc42cad07bc8bfc2f5bea70092b22f73",
      "fileid": "7a403f378f2556fc3e73ee2edb31cffaebc315f6aa9ccbe607cd48a068a37b85",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26392512162"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.2",
      "date": "2026-05-25T09:09:11.000Z",
      "commit": "1dd90732cc42cad07bc8bfc2f5bea70092b22f73",
      "fileid": "4ecbf9d1e5792a17198440f45015f6bdd7edee75e3574dc523c617b6d7ac7c53",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/26392512162"
    }
  ]
}