Min

From Second Life Wiki
Jump to: navigation, search

Summary

Function: float min( float x, float y );

Returns the lesser of two arbitrary values
Returns a float

• float x
• float y

If values x and y are equal, returns y

See also: Max

Specification

float min(float x, float y)
{
    return ( ( llAbs( x >= y ) ) * y ) + ( ( llAbs( x<y ) ) * x );
}

Examples

float value = min(10,20); //value == 10

Deep Notes

Tests

// Max and Min Functions and Unit Tests
// Emilie (Hermit Barber in World)
// Creative Commons: Attribution, Share-alike, Non Commecial
 
float Max(float x,float y)
{
    return ( ( llAbs( x >= y ) ) * x ) + ( ( llAbs( x<y ) ) * y );
}
 
float Min(float x,float y)
{
    return ( ( llAbs( x >= y ) ) * y ) + ( ( llAbs( x<y ) ) * x );
}
 
// Copy the above functions to your program - the balance is mereley a set of unit tests
 
say(string f, float x,float y, float z)
{
    llOwnerSay("Testing " + f + " with input X: " + (string) x +  " Input Y: " + (string) y + "Resulting in: " + (string) z);
}
 
default
{
    state_entry()
    {
        string test = "MAX";
        float ix = 0;
        float iy = 0;
        float iz = 0;
        say(test,ix,iy,Max(ix,iy));
        ix=100;iy=100;say(test,ix,iy,Max(ix,iy));
        ix=-100;iy=100;say(test,ix,iy,Max(ix,iy));
        ix=100;iy=-100;say(test,ix,iy,Max(ix,iy));
        ix=-100;iy=-100;say(test,ix,iy,Max(ix,iy));
        ix=-0.001;iy=0.00001;say(test,ix,iy,Max(ix,iy));
        ix=0.001;iy=0.00001;say(test,ix,iy,Max(ix,iy));
        ix=-0.001;iy=0.00001;say(test,ix,iy,Max(ix,iy));
        ix=0.001;iy=-0.00001;say(test,ix,iy,Max(ix,iy));
        ix=-0.001;iy=-0.00001;say(test,ix,iy,Max(ix,iy));
 
        test = "MIN";
        say(test,ix,iy,Min(ix,iy));
        ix=100;iy=100;say(test,ix,iy,Min(ix,iy));
        ix=-100;iy=100;say(test,ix,iy,Min(ix,iy));
        ix=100;iy=-100;say(test,ix,iy,Min(ix,iy));
        ix=-100;iy=-100;say(test,ix,iy,Min(ix,iy));
        ix=0.001;iy=0.00001;say(test,ix,iy,Min(ix,iy));
        ix=-0.001;iy=0.00001;say(test,ix,iy,Min(ix,iy));
        ix=0.001;iy=-0.00001;say(test,ix,iy,Min(ix,iy));
        ix=-0.001;iy=-0.00001;say(test,ix,iy,Min(ix,iy));
    }
}

Signature