blob: cead75645f447c868f11cabec24e06de3a7f764b [file] [log] [blame]
//#####################################################################
// Copyright 2002-2003, Ronald Fedkiw, Eran Guendelman.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Function maxabs
//#####################################################################
//
// finds the maximum absolute value
//
//#####################################################################
#ifndef __maxabs__
#define __maxabs__
#include<math.h>
#include "max.h"
namespace PhysBAM
{
// a should already be non-negative
template<class T>
inline T maxabs_incremental (const T a, const T b)
{
return max (a, (T) fabs (b));
}
template<class T>
inline T maxabs (const T a, const T b)
{
return max ( (T) fabs (a), (T) fabs (b));
}
inline double maxabs (const double a, const int b)
{
return max (fabs (a), fabs ( (double) b));
}
inline double maxabs (const int a, const double b)
{
return max (fabs ( (double) a), fabs (b));
}
template<class T>
inline T maxabs (const T a, const T b, const T c)
{
return maxabs_incremental (maxabs (a, b), c);
}
template<class T>
inline T maxabs (const T a, const T b, const T c, const T d)
{
return maxabs_incremental (maxabs (a, b, c), d);
}
template<class T>
inline T maxabs (const T a, const T b, const T c, const T d, const T e)
{
return maxabs_incremental (maxabs (a, b, c, d), e);
}
template<class T>
inline T maxabs (const T a, const T b, const T c, const T d, const T e, const T f)
{
return maxabs_incremental (maxabs (a, b, c, d, e), f);
}
}
#endif