/*

   Copyright (C) 2001,2002,2003,2004 Michael Rubinstein

   This file is part of the L-function package L.

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 2
   of the License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   Check the License for details. You should have received a copy of it, along
   with the package; see the file 'COPYING'. If not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/


#ifndef Lmisc_H
#define Lmisc_H

#include "Lglobals.h"

//this file currently contains only templated and inlined functions
//hence no Lmisc.cc file is needed. 

template<class T> int sn(T x);

inline Double LOG(int n)
{
    if(n>number_logs) extend_LG_table(n);
    return LG[n];
}

//inline Double two_inverse_sqrt(double n) // Used for long
inline Double two_inverse_sqrt(int n)
{
    //int m=Int(n);
    //if(m>number_sqrts) extend_sqrt_table(m);
    //return two_inverse_SQUARE_ROOT[m];

    if(n>number_sqrts) extend_sqrt_table(n);
    return two_inverse_SQUARE_ROOT[n];
}

template <class type1, class type2>
type1 my_max(type1 a, type2 b)
{
     type1 r,b_converted;
     r=a;
     b_converted = (type1) b;
     if(b_converted > a) r= b_converted;
     return r;
}

#endif
