Difference between revisions of "LlPow"

From Second Life Wiki
Jump to navigation Jump to search
(llPow is *very* slow compared to plain multiplication, so for a static integer exponent it's not necessary)
 
(17 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{LSLFunctionAll
{{LSL_Function
|func=llPow
|sort=Pow|func=llPow
|func_id=5
|func_id=5|func_sleep=0.0|func_energy=10.0
|func_sleep=0.0
|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>).
|func_energy=10.0
|p1_type=float|p1_name=base|p1_desc
|func_footnote=Triggers a [[LSL_Math_Error|Math Error]] for imaginary results ((exponent != (integer)exponent) && (base < 0.0))
|p2_type=float|p2_name=exponent|p2_desc
|p1_type=float
|p1_name=base
|p1_desc
|p2_type=float
|p2_name=exponent
|p2_desc
|p3_type|p3_name|p3_desc
|p4_type|p4_name|p4_desc
|p5_type|p5_name|p5_desc
|p6_type|p6_name|p6_desc
|p7_type|p7_name|p7_desc
|p8_type|p8_name|p8_desc
|p9_type|p9_name|p9_desc
|p10_type|p10_name|p10_desc
|p11_type|p11_name|p11_desc
|p12_type|p12_name|p12_desc
|return_type=float
|return_type=float
|return_text=that is base raised to the power exponent.
|return_text=that is {{LSLP|base}} raised to the power {{LSLP|exponent}} ({{LSLP|base}}<sup>{{LSLP|exponent}}</sup>)
|spec
|spec
|caveats=* Can crashes the script.
|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>.
|examples
*Triggers a {{LSLGC|Error/Math|Math Error}} for imaginary results if not compiled in Mono.
|examples=
<syntaxhighlight lang="lsl2">default {
    state_entry() {
          llOwnerSay("llPow(5, .5) (" + (string)llPow(5, .5) + ") is equal to llSqrt(5) ("
                      + (string)llSqrt(5) + ").");
    }
}</syntaxhighlight>
|helpers
|helpers
|also
|also_functions={{LSL DefineRow||[[llLog]]|}}
{{LSL DefineRow||[[llLog10]]|}}
{{LSL DefineRow||[[llSqrt]]|}}
|also_events
|also_articles
|also_tests
|notes
|notes
|cat1=Math
|cat2=Error/Math
|cat3
|cat4
}}
}}
[[Category:LSL_Functions]]
[[Category:LSL_Math]]
[[Category:LSL_Error/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 );