]> git.tdb.fi Git - libs/math.git/commitdiff
Math function usage fixes
authorMikko Rasa <tdb@tdb.fi>
Tue, 21 May 2013 13:32:49 +0000 (16:32 +0300)
committerMikko Rasa <tdb@tdb.fi>
Tue, 21 May 2013 13:32:49 +0000 (16:32 +0300)
Add using declarations and #includes where needed, and clean up some
unnecessary ones.  abs() is particularly annoying, as the int version
easily gets into the global namespace and doesn't give a warning if
used with floats or doubles.

source/geometry/extrudedshape.h
source/geometry/hyperbox.h
source/geometry/hypersphere.h
source/linal/squarematrix.h
source/linal/vector.h

index 8fac4bc46d7e9e4da831fed1713987834af54a24..0d895ac5bc0aecbac9d6de46f5e93c9c932ca0dd 100644 (file)
@@ -107,8 +107,6 @@ inline unsigned ExtrudedShape<T, D>::get_max_ray_intersections() const
 template<typename T, unsigned D>
 inline unsigned ExtrudedShape<T, D>::get_intersections(const Ray<T, D> &ray, SurfacePoint<T, D> *points, unsigned size) const
 {
-       using std::abs;
-       using std::sqrt;
        using std::swap;
 
        unsigned n = 0;
index 845ca346eaffedf3aad1a4899b54c281c9593ff9..865b968902f078b25297138786f3602fbafa9260 100644 (file)
@@ -64,6 +64,8 @@ inline T HyperBox<T, D>::get_dimension(unsigned i) const
 template<typename T, unsigned D>
 inline bool HyperBox<T, D>::contains(const LinAl::Vector<T, D> &point) const
 {
+       using std::abs;
+
        for(unsigned i=0; i<D; ++i)
                if(abs(point[i])>dimensions[i]/2)
                        return false;
index ce424e141cb32bbd9e5b8ed1b59cf9aee05ed617..01aee0e57b22e2791763077aecb3e3193ea35843 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_GEOMETRY_HYPERSPHERE_H_
 #define MSP_GEOMETRY_HYPERSPHERE_H_
 
+#include <cmath>
 #include <msp/linal/vector.h>
 #include "hyperbox.h"
 #include "ray.h"
@@ -79,6 +80,8 @@ inline bool HyperSphere<T, D>::check_intersection(const Ray<T, D> &ray) const
 template<typename T, unsigned D>
 inline unsigned HyperSphere<T, D>::get_intersections(const Ray<T, D> &ray, SurfacePoint<T, D> *points, unsigned size) const
 {
+       using std::sqrt;
+
        T mid = -inner_product(ray.get_direction(), ray.get_start());
        LinAl::Vector<T, D> nearest = ray.get_start()+ray.get_direction()*mid;
        T offset_sq = radius*radius-inner_product(nearest, nearest);
index 0af9a7454852cb5106382fcda2a4f1c5e2aaf824..1cdc56726455f9ab2b97589b1b93bacbad702eac 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_LINAL_SQUAREMATRIX_H_
 #define MSP_LINAL_SQUAREMATRIX_H_
 
+#include <cmath>
 #include <stdexcept>
 #include "matrix.h"
 
@@ -52,6 +53,8 @@ SquareMatrix<T, S> &SquareMatrix<T, S>::operator*=(const SquareMatrix<T, S> &m)
 template<typename T, unsigned S>
 SquareMatrix<T, S> &SquareMatrix<T, S>::invert()
 {
+       using std::abs;
+
        SquareMatrix<T, S> r = identity();
        for(unsigned i=0; i<S; ++i)
        {
index a5c9a26cfc1e8152fd4cece0158aa553f3b97c8d..9ef46fde412f22804535065d6dd59c10b11963e2 100644 (file)
@@ -257,6 +257,7 @@ inline T inner_product(const Vector<T, N> &v1, const Vector<T, N> &v2)
 template<typename T, unsigned N>
 inline T Vector<T, N>::norm() const
 {
+       using std::sqrt;
        return sqrt(inner_product(*this, *this));
 }