Without using big int classes in C++, what's a good way to handle arithmetic on large numbers? For instance, writing a Vector class that deals with dot products and cross products using large doubles can result in non-finite values. Do I leave this up to the user to handle NaN's/(-inf to inf), etc.? Or do I somehow handle those cases using std::isfinite within the Vector class (potentially modifying values within the class instance)? I feel kind of weird manipulating of a user created object if one or more of the resultant vector components is non-finite. Input is appreciated. 
Handling behavior of non-finite numbers
design;c++;math
A generic Vector class is almost certainly not going to have the context to deal with such situations, and thus it should leave the data as-is. If by user you mean the programmer who is going to use your Vector class, then it's their responsibility to deal with such things. If you never expect these cases to occur due to the nature of application(s) using this class, then you could have the Vector signal an error, but I don't really recommend this and it doesn't sound like your use-case anyway. The most you should do as the implementer of the Vector class is to try to avoid unnecessarily producing non-finite values e.g. (a+b)/2 may be infinite where a/2 + b/2 might not be. (Of course, you may well also be concerned about underflow.) It may not be worth the extra code complexity and performance to do this though.Whether the ultimate end-user should deal with this depends on what you expect of the user and whether some intermediate layer does have the context to meaningfully deal with this.