Difference between revisions of "LlPow"

From Second Life Wiki
Jump to navigation Jump to search
m (LlPow moved to LSL llPow)
(llPow is *very* slow compared to plain multiplication, so for a static integer exponent it's not necessary)
 
(20 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{lowercase|llPow}}
{{LSL_Function
__NOTOC__
|sort=Pow|func=llPow
 
|func_id=5|func_sleep=0.0|func_energy=10.0
{| width="100%"
|func_footnote=Returns {{abbr|NaN|not a number}} when {{LSLP|base}} is negative and {{LSLP|exponent}} is not an integer (an imaginary result, <code>({{LSLPT|exponent}} != ([[integer]]){{LSLPT|exponent}}) && ({{LSLPT|base}} < 0.0)</code>).
|-
|p1_type=float|p1_name=base|p1_desc
|<div id="box">
|p2_type=float|p2_name=exponent|p2_desc
== [[LSL_Type_float|float]] llPow( [[LSL_Type_float|float]] base, [[LSL_Type_float|float]] exponent); ==
|return_type=float
<div style="padding: 0.5em">
|return_text=that is {{LSLP|base}} raised to the power {{LSLP|exponent}} ({{LSLP|base}}<sup>{{LSLP|exponent}}</sup>)
* base -
|spec
* exponent -
|caveats=*If {{LSLP|exponent}} is a static integer and not a variable, llPow is dramatically slower than simple repeated multiplication, i.e. it's much faster to do <code>val = base*base*base</code> instead of <code>val = llPow(base, 3)</code>.
</div>
*Triggers a {{LSLGC|Error/Math|Math Error}} for imaginary results if not compiled in Mono.
</div>
|examples=
|-
<syntaxhighlight lang="lsl2">default {
|
    state_entry() {
<div id="box">
          llOwnerSay("llPow(5, .5) (" + (string)llPow(5, .5) + ") is equal to llSqrt(5) ("  
 
                      + (string)llSqrt(5) + ").");
== Specification ==
    }
<div style="padding: 0.5em">
}</syntaxhighlight>
Returns base raised to the exp.
|helpers
 
|also_functions={{LSL DefineRow||[[llLog]]|}}
Returns 0 and triggers a Math Error for imaginary results
{{LSL DefineRow||[[llLog10]]|}}
{|  
{{LSL DefineRow||[[llSqrt]]|}}
|-
|also_events
| [[LSL_Energy|Energy]]:
|also_articles
| 10.0
|also_tests
|-
|notes
| [[LSL_Sleep|Sleep]]:
|cat1=Math
| 0.0
|cat2=Error/Math
|-
|cat3
| [[LSL_Function_ID|Function ID]]:
|cat4
| 5
}}
|}
</div>
</div>
|-
|
<div id="box">
 
== Caveats ==
<div style="padding: 0.5em">
</div>
</div>
 
|-
|
<div id="box">
== Examples ==
<div style="padding: 0.5em">
<lsl>
</lsl>
</div>
</div>
|-
|
<div id="box">
== Helper Functions ==
<div style="padding: 0.5em">
<lsl>
</lsl>
</div>
</div>
|-
|
<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 08:38, 1 November 2023

Summary

Function: float llPow( float base, float exponent );

Returns a float that is base raised to the power exponent (baseexponent)

• float base
• float exponent

Returns NaN when base is negative and exponent is not an integer (an imaginary result, (exponent != (integer)exponent) && (base < 0.0)).

Caveats

  • If exponent is a static integer and not a variable, llPow is dramatically slower than simple repeated multiplication, i.e. it's much faster to do val = base*base*base instead of val = llPow(base, 3).
  • Triggers a Math Error for imaginary results if not compiled in Mono.
All Issues ~ Search JIRA for related Bugs

Examples

default {
     state_entry() {
          llOwnerSay("llPow(5, .5) (" + (string)llPow(5, .5) + ") is equal to llSqrt(5) (" 
                      + (string)llSqrt(5) + ").");
     }
}

See Also

Functions

•  llLog
•  llLog10
•  llSqrt

Deep Notes

Search JIRA for related Issues

Signature

function float llPow( float base, float exponent );