From 7cc33ef69fcb93bbc75b2b55ceb61dbafc7220f3 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 27 Sep 2023 16:10:52 +1300 Subject: [PATCH] Add all nonlinear operators supported by MathOptInterface (#34) --- README.md | 80 +++++++++++++++++++++++++++++---- schemas/mof.1.6.schema.json | 90 ++++++++++++++++++++++++++++++++++--- schemas/mof.1.schema.json | 90 ++++++++++++++++++++++++++++++++++--- 3 files changed, 242 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 3e9290c..ea79510 100644 --- a/README.md +++ b/README.md @@ -358,30 +358,94 @@ and their corresponding arity. | Name | Arity | | ---- | ----- | +| `"+"` | Unary | +| `"-"` | Unary | +| `"abs"` | Unary | +| `"sqrt"` | Unary | +| `"cbrt"` | Unary | +| `"abs2"` | Unary | +| `"inv"` | Unary | | `"log"` | Unary | | `"log10"` | Unary | +| `"log2"` | Unary | +| `"log1p"` | Unary | | `"exp"` | Unary | -| `"sqrt"` | Unary | -| `"floor"` | Unary | -| `"ceil"` | Unary | -| `"abs"` | Unary | -| `"cos"` | Unary | +| `"exp2"` | Unary | +| `"expm1"` | Unary | | `"sin"` | Unary | +| `"cos"` | Unary | | `"tan"` | Unary | -| `"acos"` | Unary | +| `"sec"` | Unary | +| `"csc"` | Unary | +| `"cot"` | Unary | +| `"sind"` | Unary | +| `"cosd"` | Unary | +| `"tand"` | Unary | +| `"secd"` | Unary | +| `"cscd"` | Unary | +| `"cotd"` | Unary | | `"asin"` | Unary | +| `"acos"` | Unary | | `"atan"` | Unary | -| `"cosh"` | Unary | +| `"asec"` | Unary | +| `"acsc"` | Unary | +| `"acot"` | Unary | +| `"asind"` | Unary | +| `"acosd"` | Unary | +| `"atand"` | Unary | +| `"asecd"` | Unary | +| `"acscd"` | Unary | +| `"acotd"` | Unary | | `"sinh"` | Unary | +| `"cosh"` | Unary | | `"tanh"` | Unary | -| `"acosh"` | Unary | +| `"sech"` | Unary | +| `"csch"` | Unary | +| `"coth"` | Unary | | `"asinh"` | Unary | +| `"acosh"` | Unary | | `"atanh"` | Unary | +| `"asech"` | Unary | +| `"acsch"` | Unary | +| `"acoth"` | Unary | +| `"deg2rad"` | Unary | +| `"rad2deg"` | Unary | +| `"erf"` | Unary | +| `"erfinv"` | Unary | +| `"erfc"` | Unary | +| `"erfcinv"` | Unary | +| `"erfi"` | Unary | +| `"gamma"` | Unary | +| `"lgamma"` | Unary | +| `"digamma"` | Unary | +| `"invdigamma"` | Unary | +| `"trigamma"` | Unary | +| `"airyai"` | Unary | +| `"airybi"` | Unary | +| `"airyaiprime"` | Unary | +| `"airybiprime"` | Unary | +| `"besselj0"` | Unary | +| `"besselj1"` | Unary | +| `"bessely0"` | Unary | +| `"bessely1"` | Unary | +| `"erfcx"` | Unary | +| `"dawson"` | Unary | +| `"floor"` | Unary | +| `"ceil"` | Unary | | `"/"` | Binary | | `"^"` | Binary | +| `"atan"` | Binary | +| `"&&"` | Binary | +| `"||"` | Binary | +| `"<="` | Binary | +| `"<"` | Binary | +| `">="` | Binary | +| `">"` | Binary | +| `"=="` | Binary | | `"+"` | N-ary | | `"-"` | N-ary | | `"*"` | N-ary | +| `"ifelse"` | N-ary | | `"min"` | N-ary | | `"max"` | N-ary | diff --git a/schemas/mof.1.6.schema.json b/schemas/mof.1.6.schema.json index 3481525..dd73a68 100644 --- a/schemas/mof.1.6.schema.json +++ b/schemas/mof.1.6.schema.json @@ -199,9 +199,78 @@ "properties": { "type": { "enum": [ - "log", "log10", "exp", "sqrt", "floor", "ceil", - "abs", "cos", "sin", "tan", "acos", "asin", "atan", - "cosh", "sinh", "tanh", "acosh", "asinh", "atanh" + "abs", + "sqrt", + "cbrt", + "abs2", + "inv", + "log", + "log10", + "log2", + "log1p", + "exp", + "exp2", + "expm1", + "sin", + "cos", + "tan", + "sec", + "csc", + "cot", + "sind", + "cosd", + "tand", + "secd", + "cscd", + "cotd", + "asin", + "acos", + "atan", + "asec", + "acsc", + "acot", + "asind", + "acosd", + "atand", + "asecd", + "acscd", + "acotd", + "sinh", + "cosh", + "tanh", + "sech", + "csch", + "coth", + "asinh", + "acosh", + "atanh", + "asech", + "acsch", + "acoth", + "deg2rad", + "rad2deg", + "erf", + "erfinv", + "erfc", + "erfcinv", + "erfi", + "gamma", + "lgamma", + "digamma", + "invdigamma", + "trigamma", + "airyai", + "airybi", + "airyaiprime", + "airybiprime", + "besselj0", + "besselj1", + "bessely0", + "bessely1", + "erfcx", + "dawson", + "floor", + "ceil" ] }, "args": { @@ -218,7 +287,18 @@ "required": ["args"], "properties": { "type": { - "enum": ["/", "^"] + "enum": [ + "/", + "^", + "atan", + "&&", + "||", + "<=", + "<", + ">=", + ">", + "==" + ] }, "args": { "type": "array", @@ -234,7 +314,7 @@ "required": ["args"], "properties": { "type": { - "enum": ["+", "-", "*", "min", "max"] + "enum": ["+", "-", "*", "ifelse", "min", "max"] }, "args": { "type": "array", diff --git a/schemas/mof.1.schema.json b/schemas/mof.1.schema.json index 3481525..dd73a68 100644 --- a/schemas/mof.1.schema.json +++ b/schemas/mof.1.schema.json @@ -199,9 +199,78 @@ "properties": { "type": { "enum": [ - "log", "log10", "exp", "sqrt", "floor", "ceil", - "abs", "cos", "sin", "tan", "acos", "asin", "atan", - "cosh", "sinh", "tanh", "acosh", "asinh", "atanh" + "abs", + "sqrt", + "cbrt", + "abs2", + "inv", + "log", + "log10", + "log2", + "log1p", + "exp", + "exp2", + "expm1", + "sin", + "cos", + "tan", + "sec", + "csc", + "cot", + "sind", + "cosd", + "tand", + "secd", + "cscd", + "cotd", + "asin", + "acos", + "atan", + "asec", + "acsc", + "acot", + "asind", + "acosd", + "atand", + "asecd", + "acscd", + "acotd", + "sinh", + "cosh", + "tanh", + "sech", + "csch", + "coth", + "asinh", + "acosh", + "atanh", + "asech", + "acsch", + "acoth", + "deg2rad", + "rad2deg", + "erf", + "erfinv", + "erfc", + "erfcinv", + "erfi", + "gamma", + "lgamma", + "digamma", + "invdigamma", + "trigamma", + "airyai", + "airybi", + "airyaiprime", + "airybiprime", + "besselj0", + "besselj1", + "bessely0", + "bessely1", + "erfcx", + "dawson", + "floor", + "ceil" ] }, "args": { @@ -218,7 +287,18 @@ "required": ["args"], "properties": { "type": { - "enum": ["/", "^"] + "enum": [ + "/", + "^", + "atan", + "&&", + "||", + "<=", + "<", + ">=", + ">", + "==" + ] }, "args": { "type": "array", @@ -234,7 +314,7 @@ "required": ["args"], "properties": { "type": { - "enum": ["+", "-", "*", "min", "max"] + "enum": ["+", "-", "*", "ifelse", "min", "max"] }, "args": { "type": "array",