Q:

How to interpret situations where Math. Acos() reports invalid input? 

Hey all.   I'm computing the angle between two vectors, and sometimes Math. Acos() returns NaN when it's input is out of bounds (-1 > input && input > 1) for a cosine.   What does that mean, exactly?   Would someone be able to explain what's happening?   Any help is appreciated! 
Here's my method:
 public double AngleBetween(vector b)
    {
        var dotProd = this. Dot(b);
        var lenProd = this. Len*b. Len;
        var divOperation = dotProd/lenProd;

        //  http://msdn.microsoft.com/en-us/library/system.math.acos.aspx
        return Math. Acos(divOperation) * (180.0 / Math. PI);
    }

Here's my implementation of Dot and Len:
public double Dot(vector b)
    {
        // x's and y's are lattitudes and longitudes (respectively)
        return ( this. From.x*b. From.x + this. From.y*b. From.y);
    }

    public double Len{
        get
        {
             // geo is of type SqlGeography (MS SQL 2008 Spatial Type) with an SRID of 4326
             return geo. STLength().Value;
        }
    }

A:

You have vectors for which divOperation turns out to be < -1 or > 1?  Then I think you should check your implementations of Dot and Len.