Difference between revisions of "LlLog"

From Second Life Wiki
Jump to navigation Jump to search
(spacing)
m (<lsl> tag to <source>)
 
Line 10: Line 10:
|constants
|constants
|examples=
|examples=
<lsl>
<source lang="lsl2">
default
default
{
{
Line 20: Line 20:
   }
   }
}
}
</lsl>
</source>
<lsl>
<source lang="lsl2">
float findexp(float result, float base)
float findexp(float result, float base)
{
{
Line 35: Line 35:
}
}


</lsl>
</source>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llLog10]]|}}
|also_functions={{LSL DefineRow||[[llLog10]]|}}
Line 44: Line 44:
|also_articles={{LSL DefineRow||{{Wikipedia|Natural logarithm}}|}}
|also_articles={{LSL DefineRow||{{Wikipedia|Natural logarithm}}|}}
|notes=There are only two log functions [[llLog]] and [[llLog10]]. Errors introduced as a result of floating-point arithmetic are most noticable when working with logarithms. [[llLog]] should be used instead of [[llLog10]] when converting the base of the logarithm.
|notes=There are only two log functions [[llLog]] and [[llLog10]]. Errors introduced as a result of floating-point arithmetic are most noticable when working with logarithms. [[llLog]] should be used instead of [[llLog10]] when converting the base of the logarithm.
<lsl>float LogBaseN = llLog(value) / llLog(Base); //This technique introduces errors but is the only way</lsl>
<source lang="lsl2">float LogBaseN = llLog(value) / llLog(Base); //This technique introduces errors but is the only way</source>


If Base is a constant, your script will run faster if you calculate it's log and divide by that constant instead.
If Base is a constant, your script will run faster if you calculate it's log and divide by that constant instead.

Latest revision as of 12:19, 22 January 2015

Summary

Function: float llLog( float val );

Returns a float that is the "Wikipedia logo"natural logarithm of val.
If val <= 0 return 0.0 instead.

• float val

To get the base 10 logarithm use llLog10.

Examples

default
{
  state_entry()
  {
    float num1 = llFrand(100.0);

    llOwnerSay("The natural logarithm of " + (string)num1 + " is " + (string)llLog(num1));
  }
}
float findexp(float result, float base)
{
    return llLog(result)/llLog(base);
}
default
{
    touch_start(integer total_number)
    {
        llSay(0, (string)findexp(8.0,2.0));
        //returns 3.0
    }
}

Notes

There are only two log functions llLog and llLog10. Errors introduced as a result of floating-point arithmetic are most noticable when working with logarithms. llLog should be used instead of llLog10 when converting the base of the logarithm.

float LogBaseN = llLog(value) / llLog(Base); //This technique introduces errors but is the only way

If Base is a constant, your script will run faster if you calculate it's log and divide by that constant instead.


Useful natural logarithms
Number logarithm
2 {{#ln:2}}
4 {{#ln:4}}
8 {{#ln:8}}
10 {{#ln:10}}
16 {{#ln:16}}
32 {{#ln:32}}
64 {{#ln:64}}
128 {{#ln:128}}
256 {{#ln:256}}

See Also

Functions

•  llLog10
•  llPow
•  llSqrt

Articles

•  "Wikipedia logo"Natural logarithm

Deep Notes

Search JIRA for related Issues

Signature

function float llLog( float val );