Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ParallelTable should localize variable #135

Open
szhorvat opened this issue Sep 18, 2019 · 3 comments
Open

ParallelTable should localize variable #135

szhorvat opened this issue Sep 18, 2019 · 3 comments
Assignees

Comments

@szhorvat
Copy link
Contributor

szhorvat commented Sep 18, 2019

ParallelTable should localize variables like Table does. Tested in version 2019.2.2.

Table[x, {x, {1,2,3}}]
Table[i, {i,1,5}]

ParallelTable[x, {x, {1,2,3}}]
ParallelTable[i^2, {i, 1, 5}]

image

@szhorvat
Copy link
Contributor Author

szhorvat commented Oct 5, 2019

How can we find all functions that should localize variables?

Here's an attempt: which functions have "LocalVariables" SyntaxInformation?

SetAttributes[localizingFunQ, HoldAll]
localizingFunQ[sym_] :=
 Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", None] =!=None

Result:

In[22]:= res = Select[
 Names["System`*"],
 ToExpression[#, InputForm, localizingFunQ] &
 ]

Out[22]= {"Animate", "Apart", "ApartSquareFree", "ArcCurvature", \
"ArcLength", "ArgMax", "ArgMin", "AsymptoticEqual", \
"AsymptoticEquivalent", "AsymptoticGreater", \
"AsymptoticGreaterEqual", "AsymptoticLess", "AsymptoticLessEqual", \
"BodePlot", "CoefficientArrays", "Collect", "ComplexExpand", \
"ConicOptimization", "ContinuedFractionK", "ContourPlot", \
"ContourPlot3D", "ControllerManipulate", "Curl", \
"CylindricalDecomposition", "D", "DensityPlot", "DiscreteLimit", \
"DiscreteMaxLimit", "DiscreteMinLimit", "DiscretePlot", \
"DiscretePlot3D", "Div", "Do", "Eliminate", "EntityFunction", \
"FactorTerms", "FactorTermsList", "FindArgMax", "FindArgMin", \
"FindInstance", "FindMaximum", "FindMaxValue", "FindMinimum", \
"FindMinValue", "FindRoot", "FourierCosTransform", \
"FourierSinTransform", "FourierTransform", "FrenetSerretSystem", \
"FunctionInterpolation", "GenericCylindricalDecomposition", "Grad", \
"GroebnerBasis", "ImplicitRegion", "Integrate", "Laplacian", "Limit", \
"LinearFractionalOptimization", "LinearOptimization", \
"LineIntegralConvolutionPlot", "ListLineIntegralConvolutionPlot", \
"LogLinearPlot", "LogLogPlot", "LogPlot", "Manipulate", "Maximize", \
"MaxLimit", "MaxValue", "Minimize", "MinLimit", "MinValue", \
"NArgMax", "NArgMin", "NDSolve", "NDSolveValue", "NicholsPlot", \
"NIntegrate", "NMaximize", "NMaxValue", "NMinimize", "NMinValue", \
"NProduct", "NRoots", "NSolve", "NSum", "NyquistPlot", "ParallelDo", \
"ParallelProduct", "ParallelSum", "ParallelTable", "ParametricPlot", \
"ParametricPlot3D", "ParametricRegion", "Play", "Plot", "Plot3D", \
"PolarPlot", "Product", "QuadraticOptimization", "Reduce", \
"RegionPlot", "RegionPlot3D", "RepeatingElement", "RevolutionPlot3D", \
"RootLocusPlot", "Roots", "RSolve", "RSolveValue", \
"SecondOrderConeOptimization", "SemialgebraicComponentInstances", \
"SemidefiniteOptimization", "Series", "SingularValuePlot", \
"SliceContourPlot3D", "SliceDensityPlot3D", "Solve", "SolveAlways", \
"SphericalPlot3D", "StreamDensityPlot", "StreamPlot", "Sum", "Table", \
"VectorDensityPlot", "VectorPlot", "VectorPlot3D"}

Well, that's a lot ... and most should probably not be handled by the WL plugin.

The docs say that the "LocalVariables" setting in SyntaxInformation has the form {type, args}. Let's group the results by type.

SetAttributes[localizingType, HoldAll]
localizingType[sym_] :=
  First@Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", {"None"}]

GroupBy[
 Symbol /@ res,
 localizingType
 ]

We get

<|"Manipulate" -> {Animate, ControllerManipulate, Manipulate, 
   RepeatingElement}, 
 "Solve" -> {Apart, ApartSquareFree, ArcCurvature, ArgMax, ArgMin, 
   CoefficientArrays, Collect, ComplexExpand, ConicOptimization, Curl,
    CylindricalDecomposition, Div, Eliminate, EntityFunction, 
   FactorTerms, FactorTermsList, FindArgMax, FindArgMin, FindInstance,
    FindMaximum, FindMaxValue, FindMinimum, FindMinValue, 
   FourierCosTransform, FourierSinTransform, FourierTransform, 
   FrenetSerretSystem, GenericCylindricalDecomposition, Grad, 
   GroebnerBasis, ImplicitRegion, Laplacian, 
   LinearFractionalOptimization, LinearOptimization, Maximize, 
   MaxValue, Minimize, MinValue, NArgMax, NArgMin, NMaximize, 
   NMaxValue, NMinimize, NMinValue, NRoots, NSolve, ParametricRegion, 
   QuadraticOptimization, Reduce, Roots, RSolve, RSolveValue, 
   SecondOrderConeOptimization, SemialgebraicComponentInstances, 
   SemidefiniteOptimization, Solve, SolveAlways}, 
 "Plot" -> {ArcLength, ContourPlot, ContourPlot3D, DensityPlot, 
   DiscretePlot, DiscretePlot3D, FunctionInterpolation, 
   LineIntegralConvolutionPlot, ListLineIntegralConvolutionPlot, 
   LogLinearPlot, LogLogPlot, LogPlot, NDSolve, NDSolveValue, 
   ParametricPlot, ParametricPlot3D, Play, Plot, Plot3D, PolarPlot, 
   RegionPlot, RegionPlot3D, RevolutionPlot3D, RootLocusPlot, Series, 
   SliceContourPlot3D, SliceDensityPlot3D, SphericalPlot3D, 
   StreamDensityPlot, StreamPlot, VectorDensityPlot, VectorPlot, 
   VectorPlot3D}, 
 "Limit" -> {AsymptoticEqual, AsymptoticEquivalent, AsymptoticGreater,
    AsymptoticGreaterEqual, AsymptoticLess, AsymptoticLessEqual, 
   DiscreteLimit, DiscreteMaxLimit, DiscreteMinLimit, Limit, MaxLimit,
    MinLimit}, 
 "Table" -> {BodePlot, ContinuedFractionK, Do, FindRoot, NicholsPlot, 
   NProduct, NSum, NyquistPlot, ParallelDo, ParallelProduct, 
   ParallelSum, ParallelTable, Product, SingularValuePlot, Sum, 
   Table}, "D" -> {D}, "Integrate" -> {Integrate, NIntegrate}|>

There are some out-of-place things here, but I would say we need

{Do, NProduct, NSum, ParallelDo, ParallelProduct, ParallelSum, \
ParallelTable, Product, Sum, Table}

@halirutan
Copy link
Owner

@szhorvat I fixed several of them and I appreciate a lot that you dug this up in such a structural way. I will leave this issue open because I'd like to fix some more of the plot-functions that are missing.

@halirutan halirutan added enhancement and removed bug labels Oct 6, 2019
@halirutan halirutan added this to High priority in Version 2020.1 Goals Dec 30, 2019
@halirutan
Copy link
Owner

Alright, I made an effort to convert the symbol-information into the format I'm using to see what's necessary to include more. Two questions:

  • Am I right that we only know from experience which forms a specific "localization type" can have_, For instance, the possibilities for Manipulate are horribly complex and not even Mathematica supports all possible forms of local variable specification. Can we find out, which exact forms are possible for "Solve" for instance?
  • Is it implicitly assumed that the body where local variables are used is always at position 1 (0 in my java code)?

Here is what I used:

SetAttributes[localizingFunQ, HoldAll]
localizingFunQ[sym_] := 
 Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", None] =!= None;
res = Select[Names["System`*"], ToExpression[#, InputForm, localizingFunQ] &];

SetAttributes[convertLocalization, HoldAll]
convertLocalization[sym_] := Module[{type, place, str, start, end},
  str = ToString[sym];
  {type, place} = 
   Lookup[SyntaxInformation[Unevaluated[sym]], 
     "LocalVariables", {"None"}][[1 ;; 2]];
  Switch[place,
   {_Integer},
   start = end = place[[1]] - 1,
   {_Integer, _Integer},
   {start, end} = place - 1,
   {_Integer, Infinity},
   {start, end} = {place[[1]] - 1, -1},
   _,
   Throw["wtf is with " <> str <> " " <> ToString[place]]
   ];
  StringTemplate[
    "`uname`(\"`name`\", ScopeType.`utype`_LIKE, 0, `start`, \
`end`)"][
   <| "uname" -> ToUpperCase[str],
    "name" -> str,
    "utype" -> ToUpperCase[type],
    "start" -> start,
    "end" -> end
    |>
   ]
  ]

and it gives me the definitions I can use in Java. However, atm I don't have SOLVE_LIKE implemented. Also, the MANIPULATE_LIKE localization is still missing many possible forms. The output below is in the form

VARNAME("SymbolName", Scope-type, body-pos, start, end)
ABSARGPLOT("AbsArgPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
ANIMATE("Animate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
APART("Apart", ScopeType.SOLVE_LIKE, 0, 1, 1)
APARTSQUAREFREE("ApartSquareFree", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARCCURVATURE("ArcCurvature", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARCLENGTH("ArcLength", ScopeType.PLOT_LIKE, 0, 1, 1)
ARGMAX("ArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARGMIN("ArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
ASYMPTOTIC("Asymptotic", ScopeType.LIMIT_LIKE, 0, 1, 1)
ASYMPTOTICDSOLVEVALUE("AsymptoticDSolveValue", ScopeType.LIMIT_LIKE, 0, 2, 3)
ASYMPTOTICEQUAL("AsymptoticEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICEQUIVALENT("AsymptoticEquivalent", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICGREATER("AsymptoticGreater", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICGREATEREQUAL("AsymptoticGreaterEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICINTEGRATE("AsymptoticIntegrate", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICLESS("AsymptoticLess", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICLESSEQUAL("AsymptoticLessEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICPRODUCT("AsymptoticProduct", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICRSOLVEVALUE("AsymptoticRSolveValue", ScopeType.LIMIT_LIKE, 0, 2, 3)
ASYMPTOTICSOLVE("AsymptoticSolve", ScopeType.LIMIT_LIKE, 0, 1, 2)
ASYMPTOTICSUM("AsymptoticSum", ScopeType.LIMIT_LIKE, 0, 2, 2)
BODEPLOT("BodePlot", ScopeType.TABLE_LIKE, 0, 1, -1)
COEFFICIENTARRAYS("CoefficientArrays", ScopeType.SOLVE_LIKE, 0, 1, 1)
COLLECT("Collect", ScopeType.SOLVE_LIKE, 0, 1, 1)
COMPLEXCONTOURPLOT("ComplexContourPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXEXPAND("ComplexExpand", ScopeType.SOLVE_LIKE, 0, 1, 1)
COMPLEXPLOT("ComplexPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXPLOT3D("ComplexPlot3D", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXREGIONPLOT("ComplexRegionPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXSTREAMPLOT("ComplexStreamPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXVECTORPLOT("ComplexVectorPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
CONICOPTIMIZATION("ConicOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
CONTINUEDFRACTIONK("ContinuedFractionK", ScopeType.TABLE_LIKE, 0, 1, -1)
CONTOURPLOT("ContourPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
CONTOURPLOT3D("ContourPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
CONTROLLERMANIPULATE("ControllerManipulate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
CONVOLVE("Convolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
CURL("Curl", ScopeType.SOLVE_LIKE, 0, 1, 1)
CYLINDRICALDECOMPOSITION("CylindricalDecomposition", ScopeType.SOLVE_LIKE, 0, 1, 1)
D("D", ScopeType.D_LIKE, 0, 1, -1)
DENSITYPLOT("DensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
DIRICHLETCONVOLVE("DirichletConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
DISCRETECONVOLVE("DiscreteConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
DISCRETELIMIT("DiscreteLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEMAXLIMIT("DiscreteMaxLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEMINLIMIT("DiscreteMinLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEPLOT("DiscretePlot", ScopeType.PLOT_LIKE, 0, 1, 1)
DISCRETEPLOT3D("DiscretePlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
DIV("Div", ScopeType.SOLVE_LIKE, 0, 1, 1)
DO("Do", ScopeType.TABLE_LIKE, 0, 1, -1)
ELIMINATE("Eliminate", ScopeType.SOLVE_LIKE, 0, 1, 1)
ENTITYFUNCTION("EntityFunction", ScopeType.SOLVE_LIKE, 0, 0, 0)
EXPONENTIALGENERATINGFUNCTION("ExponentialGeneratingFunction", ScopeType.SOLVE_LIKE, 0, 1, 1)
FACTORTERMS("FactorTerms", ScopeType.SOLVE_LIKE, 0, 1, 1)
FACTORTERMSLIST("FactorTermsList", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDARGMAX("FindArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDARGMIN("FindArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDINSTANCE("FindInstance", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMAXIMUM("FindMaximum", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMAXVALUE("FindMaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMINIMUM("FindMinimum", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMINVALUE("FindMinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDROOT("FindRoot", ScopeType.TABLE_LIKE, 0, 1, -1)
FOURIERCOSTRANSFORM("FourierCosTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERSEQUENCETRANSFORM("FourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERSINTRANSFORM("FourierSinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERTRANSFORM("FourierTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FRENETSERRETSYSTEM("FrenetSerretSystem", ScopeType.SOLVE_LIKE, 0, 1, 1)
FUNCTIONINTERPOLATION("FunctionInterpolation", ScopeType.PLOT_LIKE, 0, 1, -1)
GENERATINGFUNCTION("GeneratingFunction", ScopeType.SOLVE_LIKE, 0, 1, 1)
GENERICCYLINDRICALDECOMPOSITION("GenericCylindricalDecomposition", ScopeType.SOLVE_LIKE, 0, 1, 1)
GRAD("Grad", ScopeType.SOLVE_LIKE, 0, 1, 1)
GROEBNERBASIS("GroebnerBasis", ScopeType.SOLVE_LIKE, 0, 1, 2)
IMPLICITREGION("ImplicitRegion", ScopeType.SOLVE_LIKE, 0, 1, 1)
INTEGRATE("Integrate", ScopeType.INTEGRATE_LIKE, 0, 1, -1)
INVERSEFOURIERCOSTRANSFORM("InverseFourierCosTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERSEQUENCETRANSFORM("InverseFourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERSINTRANSFORM("InverseFourierSinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERTRANSFORM("InverseFourierTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSELAPLACETRANSFORM("InverseLaplaceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEMELLINTRANSFORM("InverseMellinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEZTRANSFORM("InverseZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LAPLACETRANSFORM("LaplaceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LAPLACIAN("Laplacian", ScopeType.SOLVE_LIKE, 0, 1, 1)
LIMIT("Limit", ScopeType.LIMIT_LIKE, 0, 1, 1)
LINEARFRACTIONALOPTIMIZATION("LinearFractionalOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
LINEAROPTIMIZATION("LinearOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
LINEINTEGRALCONVOLUTIONPLOT("LineIntegralConvolutionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
LISTFOURIERSEQUENCETRANSFORM("ListFourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LISTLINEINTEGRALCONVOLUTIONPLOT("ListLineIntegralConvolutionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
LISTZTRANSFORM("ListZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LOGLINEARPLOT("LogLinearPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
LOGLOGPLOT("LogLogPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
LOGPLOT("LogPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
MANIPULATE("Manipulate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
MAXIMIZE("Maximize", ScopeType.SOLVE_LIKE, 0, 1, 1)
MAXLIMIT("MaxLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
MAXVALUE("MaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
MELLINCONVOLVE("MellinConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
MELLINTRANSFORM("MellinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
MINIMIZE("Minimize", ScopeType.SOLVE_LIKE, 0, 1, 1)
MINLIMIT("MinLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
MINVALUE("MinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NARGMAX("NArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
NARGMIN("NArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
NDSOLVE("NDSolve", ScopeType.PLOT_LIKE, 0, 2, -1)
NDSOLVEVALUE("NDSolveValue", ScopeType.PLOT_LIKE, 0, 2, -1)
NICHOLSPLOT("NicholsPlot", ScopeType.TABLE_LIKE, 0, 1, -1)
NINTEGRATE("NIntegrate", ScopeType.INTEGRATE_LIKE, 0, 1, -1)
NMAXIMIZE("NMaximize", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMAXVALUE("NMaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMINIMIZE("NMinimize", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMINVALUE("NMinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NPRODUCT("NProduct", ScopeType.TABLE_LIKE, 0, 1, -1)
NROOTS("NRoots", ScopeType.SOLVE_LIKE, 0, 1, 1)
NSOLVE("NSolve", ScopeType.SOLVE_LIKE, 0, 1, 1)
NSUM("NSum", ScopeType.TABLE_LIKE, 0, 1, -1)
NYQUISTPLOT("NyquistPlot", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELDO("ParallelDo", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELPRODUCT("ParallelProduct", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELSUM("ParallelSum", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELTABLE("ParallelTable", ScopeType.TABLE_LIKE, 0, 1, -1)
PARAMETRICPLOT("ParametricPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
PARAMETRICPLOT3D("ParametricPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
PARAMETRICREGION("ParametricRegion", ScopeType.SOLVE_LIKE, 0, 1, 1)
PLAY("Play", ScopeType.PLOT_LIKE, 0, 1, 1)
PLOT("Plot", ScopeType.PLOT_LIKE, 0, 1, 1)
PLOT3D("Plot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
POLARPLOT("PolarPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
PRODUCT("Product", ScopeType.TABLE_LIKE, 0, 1, -1)
QUADRATICOPTIMIZATION("QuadraticOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
REDUCE("Reduce", ScopeType.SOLVE_LIKE, 0, 1, 1)
REGIONPLOT("RegionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
REGIONPLOT3D("RegionPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
REIMPLOT("ReImPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
REPEATINGELEMENT("RepeatingElement", ScopeType.MANIPULATE_LIKE, 0, 1, 1)
REVOLUTIONPLOT3D("RevolutionPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
ROOTLOCUSPLOT("RootLocusPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
ROOTS("Roots", ScopeType.SOLVE_LIKE, 0, 1, 1)
RSOLVE("RSolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
RSOLVEVALUE("RSolveValue", ScopeType.SOLVE_LIKE, 0, 2, 2)
SECONDORDERCONEOPTIMIZATION("SecondOrderConeOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
SEMIALGEBRAICCOMPONENTINSTANCES("SemialgebraicComponentInstances", ScopeType.SOLVE_LIKE, 0, 1, 1)
SEMIDEFINITEOPTIMIZATION("SemidefiniteOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
SERIES("Series", ScopeType.PLOT_LIKE, 0, 1, -1)
SERIESCOEFFICIENT("SeriesCoefficient", ScopeType.PLOT_LIKE, 0, 1, -1)
SINGULARVALUEPLOT("SingularValuePlot", ScopeType.TABLE_LIKE, 0, 1, -1)
SLICECONTOURPLOT3D("SliceContourPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SLICEDENSITYPLOT3D("SliceDensityPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SLICEVECTORPLOT3D("SliceVectorPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SOLVE("Solve", ScopeType.SOLVE_LIKE, 0, 1, 1)
SOLVEALWAYS("SolveAlways", ScopeType.SOLVE_LIKE, 0, 1, 1)
SPHERICALPLOT3D("SphericalPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
STREAMDENSITYPLOT("StreamDensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
STREAMPLOT("StreamPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
SUM("Sum", ScopeType.TABLE_LIKE, 0, 1, -1)
TABLE("Table", ScopeType.TABLE_LIKE, 0, 1, -1)
VECTORDENSITYPLOT("VectorDensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
VECTORPLOT("VectorPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
VECTORPLOT3D("VectorPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
ZTRANSFORM("ZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Version 2020.1 Goals
  
High priority
Development

No branches or pull requests

2 participants