ADMB Documentation  11.2.2853
 All Classes Files Functions Variables Typedefs Friends Defines
dvect8.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: dvect8.cpp 2720 2014-11-25 18:21:37Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 #include "fvar.hpp"
00012 
00013 #ifndef OPT_LIB
00014   #include <cassert>
00015   #include <climits>
00016 #endif
00017 
00022 dvector::dvector(const ivector& u)
00023  {
00024    allocate(u.indexmin(),u.indexmax());
00025    for ( int i=indexmin(); i<=indexmax(); i++)
00026    {
00027      elem(i)=u.elem(i);
00028    }
00029  }
00030 
00035 dvector::dvector(const lvector& u)
00036 {
00037   allocate(u.indexmin(), u.indexmax());
00038   for (int i=indexmin(); i <= indexmax(); i++)
00039   {
00040 #if defined(_WIN32)
00041     elem(i) = u.elem(i);
00042 #else
00043     elem(i) = static_cast<double>(u.elem(i));
00044 #endif
00045   }
00046 }
00047 
00052 dvector dvector::operator ()(const ivector& u)
00053  {
00054    dvector tmp(u.indexmin(),u.indexmax());
00055 
00056    for ( int i=u.indexmin(); i<=u.indexmax(); i++)
00057    {
00058      tmp(i)=(*this)(u(i));
00059    }
00060    return tmp;
00061  }
00062 
00067 dvector dvector::operator ()(const lvector& u)
00068  {
00069    dvector tmp(u.indexmin(),u.indexmax());
00070 
00071    for ( int i=u.indexmin(); i<=u.indexmax(); i++)
00072    {
00073 #ifdef OPT_LIB
00074      tmp(i)=(*this)((int)u(i));
00075 #else
00076      const long ui = u(i);
00077      assert(ui <= INT_MAX);
00078      tmp(i)=(*this)((int)ui);
00079 #endif
00080    }
00081    return tmp;
00082  }