Difference between revisions of "LlPow"

From Second Life Wiki
Jump to navigation Jump to search
m ('Can crashes' to 'Can crash')
(llPow is *very* slow compared to plain multiplication, so for a static integer exponent it's not necessary)
 
(8 intermediate revisions by 5 users not shown)
Line 2: Line 2:
|sort=Pow|func=llPow
|sort=Pow|func=llPow
|func_id=5|func_sleep=0.0|func_energy=10.0
|func_id=5|func_sleep=0.0|func_energy=10.0
|func_footnote=Triggers a [[LSL_Math_Error|Math Error]] for imaginary results ((exponent != (integer)exponent) && (base < 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>).
|p1_type=float|p1_name=base|p1_desc
|p1_type=float|p1_name=base|p1_desc
|p2_type=float|p2_name=exponent|p2_desc
|p2_type=float|p2_name=exponent|p2_desc
|return_type=float
|return_type=float
|return_text=that is '''base''' raised to the power '''exponent''' ('''base'''<sup>'''exponent'''</sup>)
|return_text=that is {{LSLP|base}} raised to the power {{LSLP|exponent}} ({{LSLP|base}}<sup>{{LSLP|exponent}}</sup>)
|spec
|spec
|caveats=* Can crash 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_functions={{LSL DefineRow||[[llLog]]|}}
|also_functions={{LSL DefineRow||[[llLog]]|}}

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 );