?? cimpltypes.inl
字號:
//Copyright (c) 2004-2005, Baris Sumengen
//All rights reserved.
//
// CIMPL Matrix Performance Library
//
//Redistribution and use in source and binary
//forms, with or without modification, are
//permitted provided that the following
//conditions are met:
//
// * No commercial use is allowed.
// This software can only be used
// for non-commercial purposes. This
// distribution is mainly intended for
// academic research and teaching.
// * Redistributions of source code must
// retain the above copyright notice, this
// list of conditions and the following
// disclaimer.
// * Redistributions of binary form must
// mention the above copyright notice, this
// list of conditions and the following
// disclaimer in a clearly visible part
// in associated product manual,
// readme, and web site of the redistributed
// software.
// * Redistributions in binary form must
// reproduce the above copyright notice,
// this list of conditions and the
// following disclaimer in the
// documentation and/or other materials
// provided with the distribution.
// * The name of Baris Sumengen may not be
// used to endorse or promote products
// derived from this software without
// specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
//HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
//EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
//NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//CONTRIBUTORS BE LIABLE FOR ANY
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
//EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
//OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//HOWEVER CAUSED AND ON ANY THEORY OF
//LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
//OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.
template <class T, class S>
Vector<S>& ConvertType(Vector<T>& source, Vector<S>& dest)
{
int l = source.Length();
dest = Vector<S>(l);
for(int i=0; i<l; i++)
{
dest[i] = (S)source[i];
}
return dest;
}
template <class T, class S>
Matrix<S>& ConvertType(Matrix<T>& source, Matrix<S>& dest)
{
int r = source.Rows();
int c = source.Columns();
int l = source.Length();
dest = Matrix<S>(r,c);
for(int i=0; i<l; i++)
{
dest.ElemNC(i) = (S)source.ElemNC(i);
}
return dest;
}
template <class T>
Vector<double> ToDouble(Vector<T> &m)
{
int l = m.Length();
Vector<double> temp(l);
for(int i=0; i<l; i++)
{
temp[i] = (double)m[i];
}
return temp;
}
template <class T>
Matrix<double> ToDouble(Matrix<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Length();
Matrix<double> temp(r,c);
for(int i=0; i<l; i++)
{
temp.ElemNC(i) = (double)m.ElemNC(i);
}
return temp;
}
template <class T>
Vector<float> ToFloat(Vector<T> &m)
{
int l = m.Length();
Vector<float> temp(l);
for(int i=0; i<l; i++)
{
temp[i] = (float)m[i];
}
return temp;
}
template <class T>
Matrix<float> ToFloat(Matrix<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Length();
Matrix<float> temp(r,c);
for(int i=0; i<l; i++)
{
temp.ElemNC(i) = (float)m.ElemNC(i);
}
return temp;
}
template <class T>
Vector<int> ToInt(Vector<T> &m)
{
int l = m.Length();
Vector<int> temp(l);
for(int i=0; i<l; i++)
{
temp[i] = (int)m[i];
}
return temp;
}
template <class T>
Matrix<int> ToInt(Matrix<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Length();
Matrix<int> temp(r,c);
for(int i=0; i<l; i++)
{
temp.ElemNC(i) = (int)m.ElemNC(i);
}
return temp;
}
template <class T>
MatrixList<double> ToDouble(MatrixList<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Planes();
MatrixList<double> temp(l,r,c);
for(int k=0;k<l;k++)
{
int len = m[k].Length();
for(int i=0; i<len; i++)
{
temp[k].ElemNC(i) = (double)m[k].ElemNC(i);
}
}
return temp;
}
template <class T>
MatrixList<float> ToFloat(MatrixList<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Planes();
MatrixList<float> temp(l,r,c);
for(int k=0;k<l;k++)
{
int len = m[k].Length();
for(int i=0; i<len; i++)
{
temp[k].ElemNC(i) = (float)m[k].ElemNC(i);
}
}
return temp;
}
template <class T>
MatrixList<int> ToInt(MatrixList<T> &m)
{
int r = m.Rows();
int c = m.Columns();
int l = m.Planes();
MatrixList<int> temp(l,r,c);
for(int k=0;k<l;k++)
{
int len = m[k].Length();
for(int i=0; i<len; i++)
{
temp[k].ElemNC(i) = (int)m[k].ElemNC(i);
}
}
return temp;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -