Difference between revisions of "LlAbs"

From Second Life Wiki
Jump to navigation Jump to search
m
(this function is not terribly necessary, even if convenient)
 
(One intermediate revision by one other user not shown)
Line 8: Line 8:
|return_type=integer
|return_type=integer
|return_text=that is the positive version of {{LSLP|val}}.
|return_text=that is the positive version of {{LSLP|val}}.
|other_languages={{LSL OL|C++|[http://www.cplusplus.com/reference/clibrary/cstdlib/abs/ abs]}}
|other_languages={{LSL OL|C++|[http://www.cplusplus.com/reference/cstdlib/abs/ abs]}}
|spec
|spec
|caveats=*The llAbs of -2147483648 is -2147483648. This is because the positive integer 2147483648 is outside the range of allowed LSL {{LSLGC|Integer|integer values}}.
|caveats=*The llAbs of -2147483648 is -2147483648. This is because the positive integer 2147483648 is outside the range of allowed LSL {{LSLGC|Integer|integer values}}.
Line 51: Line 51:
|also_events
|also_events
|also_articles={{LSL DefineRow||{{Wikipedia|Absolute value}}|}}
|also_articles={{LSL DefineRow||{{Wikipedia|Absolute value}}|}}
|notes
|notes=*Using <code>{{LSLP|val}}-({{LSLP|val}}<<1)*({{LSLP|val}}<0)</code> is roughly two times faster than llAbs, as it avoids a function call and produces identical results.
|cat1=Math
|cat1=Math
|cat2=Integer
|cat2=Integer

Latest revision as of 13:49, 28 October 2023

Summary

Function: integer llAbs( integer val );
0.0 Forced Delay
10.0 Energy

Returns an integer that is the positive version of val.

• integer val Any integer value
This function is similar to functions (e.g. abs) found in many other languages: 
C++
abs

Caveats

  • The llAbs of -2147483648 is -2147483648. This is because the positive integer 2147483648 is outside the range of allowed LSL integer values.

Examples

default
{
    state_entry()
    {
//      returns: "The absolute value of -4 is: 4"
        llSay(PUBLIC_CHANNEL, "The absolute value of -4 is: "+(string)llAbs(-4) );
    }
}
// Here's a more elaborate example.

ShowAbsolute(integer inputInteger)
{
    string output = "llAbs(" + (string)inputInteger + ") --> " + (string)llAbs(inputInteger);

    llSay(PUBLIC_CHANNEL, output);
}

default
{
    state_entry()
    {
        ShowAbsolute(-3);   //  llAbs(-3)  --> 3
        ShowAbsolute(5);    //  llAbs(5)   --> 5
        ShowAbsolute(-20);  //  llAbs(-20) --> 20
        ShowAbsolute(0);    //  llAbs(0)   --> 0
    }
}

Notes

  • Using val-(val<<1)*(val<0) is roughly two times faster than llAbs, as it avoids a function call and produces identical results.

See Also

Functions

•  llFabs float version of llAbs

Articles

•  "Wikipedia logo"Absolute value

Deep Notes

Signature

function integer llAbs( integer val );

Haiku

Whether good or bad,
we are not here to judge you.
Just to ask... How much?