Difference between revisions of "LlFabs"

From Second Life Wiki
Jump to navigation Jump to search
 
(like llAbs, llFabs isn't strictly necessary, though can't bitshift so avoiding the function isn't quite as powerful and it produces NaNs for infinity/+0 for -0)
 
(31 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{lowercase|llFabs}}
{{LSL Function
__NOTOC__
|inject-2={{Issues/SCR-439}}
 
|func=llFabs|sort=Fabs
{| width="100%"
|func_id=7|func_sleep=0.0|func_energy=10.0
|-
|func_footnote
|<div id="box">
|p1_type=float|p1_name=val|p1_desc=Any valid float value
== [[LSL_Type_float|float]] llFabs( [[LSL_Type_float|float]] val); ==
|return_type=float
<div style="padding: 0.5em">
|return_text=that is the positive version of {{LSLP|val}}.
* val - Any valid float value
|other_languages={{LSL OL|C++|[http://www.cplusplus.com/reference/cmath/fabs/ fabs]}}
</div>
|spec
</div>
|caveats
|-
|examples=
|
<source lang="lsl2">
<div id="box">
default
 
{
== Specification ==
    state_entry()
<div style="padding: 0.5em">
    {
This function returns the absolute value passed to it. Basically, it removes the negative sign, on the number if there is one. If the parameter is a positive one, it just returns it.
        llSay(0,"The (Float)absolute value of -4.5 is: "+(string)llFabs(-4.5) );
{|  
    }
|-
| [[LSL_Energy|Energy]]:
| 10.0
|-
| [[LSL_Sleep|Sleep]]:
| 0.0
|-
| [[LSL_Function_ID|Function ID]]:
| 7
|}
 
{|
|-
| Energy:
| 10%
|-
| Sleep:
| 0.0
|-
| [[LSL_Function_ID|Function ID]]:
| 6
|}
</div>
</div>
|-
|
<div id="box">
 
== Caveats ==
<div style="padding: 0.5em">
</div>
</div>
 
|-
|
<div id="box">
== Examples ==
<div style="padding: 0.5em">
<lsl>
default {
  state_entry()
  {
      llSay(0,"The absolute value of -4.5 is: "+(string)llFabs(-4.5) );
  }
}
}
</lsl>
// returns :
</div>
// The (Float)absolute value of -4.5 is: 4.500000
</div>
</source>
|-
|helpers
|
|also_functions={{LSL DefineRow||[[llAbs]]|[[integer]] version of llFabs}}
<div id="box">
|also_events
== Helper Functions ==
|also_articles={{LSL DefineRow||{{Wikipedia|Absolute value}}|}}
<div style="padding: 0.5em">
|notes=*Using <code>{{LSLP|val}}-2*{{LSLP|val}}*({{LSLP|val}}<0)</code> is roughly 60% faster than llFabs as it avoids a function call, though it produces {{abbr|NaN|not a number}} if given an infinite value and (correctly) returns 0.0 instead of -0.0 when taking the absolute value of negative zero.
<lsl>
|cat1=Math
</lsl>
|cat2=Float
</div>
|cat3
</div>
|cat4
|-
|haiku={{Haiku|Even with all your little bits intact,|down to the final point|it's still size that matters.}}
|
}}
<div id="box">
== See Also ==
<div style="padding: 0.5em">
</div>
</div>
|-
|
<div id="box">
== Notes ==
<div style="padding: 0.5em">
</div>
</div>
|}
 
[[Category:LSL_Functions]]
[[Category:LSL_Math]]

Latest revision as of 15:11, 28 October 2023

Summary

Function: float llFabs( float val );

Returns a float that is the positive version of val.

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

Caveats

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   Mono only: llFabs of Negative Zero is negative, should be positive.

Examples

default
{
    state_entry()
    {
        llSay(0,"The (Float)absolute value of -4.5 is: "+(string)llFabs(-4.5) );
    }
}
// returns :
// The (Float)absolute value of -4.5 is: 4.500000

Notes

  • Using val-2*val*(val<0) is roughly 60% faster than llFabs as it avoids a function call, though it produces NaN if given an infinite value and (correctly) returns 0.0 instead of -0.0 when taking the absolute value of negative zero.

See Also

Functions

•  llAbs integer version of llFabs

Articles

•  "Wikipedia logo"Absolute value

Deep Notes

All Issues

~ Search JIRA for related Issues
   Mono only: llFabs of Negative Zero is negative, should be positive.

Signature

function float llFabs( float val );

Haiku

Even with all your little bits intact,
down to the final point
it's still size that matters.