Enter expression to calculate:

This is a calculator that accepts LSL expressions, using the evaluation engine of the LSL script optimizer LSL PyOptimizer.

Input expression is any valid LSL expression (only an expression, not a statement, so no ; is expected and no variable declaration is accepted). All types are accepted; all constants are defined. The following functions can also be used:

llAbs, llAcos, llAngleBetween, llAsin, llAtan2, llAxes2Rot, llAxisAngle2Rot, llBase64ToInteger, llBase64ToString, llCSV2List, llCeil, llCos, llDeleteSubList, llDeleteSubString, llDumpList2String, llEscapeURL, llEuler2Rot, llFabs, llFloor, llGetListEntryType, llGetListLength, llGetSubString, llInsertString, llIntegerToBase64, llLinear2sRGB, llList2CSV, llList2Float, llList2Integer, llList2Key, llList2List, llList2ListStrided, llList2Rot, llList2String, llList2Vector, llListFindList, llListInsertList, llListReplaceList, llListSort, llListStatistics, llLog, llLog10, llMD5String, llModPow, llParseString2List, llParseStringKeepNulls, llPow, llRot2Angle, llRot2Axis, llRot2Euler, llRot2Fwd, llRot2Left, llRot2Up, llRotBetween, llRound, llSHA1String, llSin, llSqrt, llsRGB2Linear, llStringLength, llStringToBase64, llStringTrim, llSubStringIndex, llTan, llToLower, llToUpper, llUnescapeURL, llVecDist, llVecMag, llVecNorm, llXorBase64, llXorBase64Strings, llXorBase64StringsCorrect

Except for the JSON functions, which are not implemented, these are all the functions that do not depend on anything but the parameters to produce the result. Other valid LSL functions may be used, but the results will be left unchanged if the input doesn't always produce the same output. Some other functions that have predictable results for certain inputs are also implemented; for example, llGetAgentSize(NULL_KEY) returns ZERO_VECTOR.

Mono mode expression evaluation rules are in effect. If you notice any mismatch between how LSL evaluates the expressions and how this tool does, please report it inworld via an IM to sei.lisa (note that a mismatch in the number of decimals displayed is not considered a difference, as long as the reported result is correct).

Examples of evaluation:

(<137.90334, 76.63866, 4.74680>-<138.28571, 76.62544, 3.14988>)/llEuler2Rot(<0,0,180>*DEG_TO_RAD)
result: <0.38237, -0.013214145, 1.59692>, type: vector
result: 828, type: integer
~llListFindList([5, <1.5, 2, 3>, (key)"blah"], ["blah"])
result: 0, type: integer
~llListFindList([5, <1.5, 2, 3>, (key)"blah"], [(key)"blah"])
result: -3, type: integer
llList2Key([], 0)
result: ((key)"") (because of Mono rules), type: key
"" != "."
result: 1 (because of Mono rules), type: integer
result: "%3F%3F" (because of Mono rules), type: string
["", ""] != ["", "", "", ""]
result: -2, type: integer
llList2Vector(["<1, 2, 3>"], 0)
result: <0., 0., 0.>, type: vector
llList2Vector([<1, 2, 3>], 0)
result: <1., 2., 3.>, type: vector
<3, 4, -5> * <0, 1, 0, 0>
result: <-3., 4., 5.>, type: vector
result: "5748decc-f629-461c-9a36-a35a221fe21f00000000-0000-0000-0000-000000000000", type: string
llListStatistics(LIST_STAT_STD_DEV, [3.7, 4.2, "", -9])
result: 7.4808645, type: float

Copyright ©2015-2021 Sei Lisa. All rights reserved.