⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipp.cpp

📁 Gaussian Mixture Algorithm
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2008 by Pierre Sermanet and Yann LeCun   * *   pierre.sermanet@gmail.com, yann@cs.nyu.edu   * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *     * Redistributions of source code must retain the above copyright *       notice, this list of conditions and the following disclaimer. *     * 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. *     * Redistribution under a license not approved by the Open Source *       Initiative (http://www.opensource.org) must display the *       following acknowledgement in all advertising material: *        This product includes software developed at the Courant *        Institute of Mathematical Sciences (http://cims.nyu.edu). *     * The names of the authors may not be used to endorse or promote products *       derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``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 AUTHORS 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. ***************************************************************************/namespace ebl {#ifdef USE_IPP#include "Ipp.h"// TODO: handle non contiguous?int ipp_convolution_float(Idx<float> &in, Idx<float> &ker, Idx<float> &out) {  if ((in.dim(0) > INT_MAX) || (in.dim(1) > INT_MAX) ||      (ker.dim(0) > INT_MAX) || (ker.dim(1) > INT_MAX) ||      (in.mod(0) > INT_MAX) || (ker.mod(0) > INT_MAX) ||      (out.mod(0) > INT_MAX))    ylerror("TODO: Cannot use long with IPP.");    int instep	= sizeof (float) * (int) in.mod(0);  int kerstep	= sizeof (float) * (int) ker.mod(0);  int outstep	= sizeof (float) * (int) out.mod(0);  IppiSize insize, kersize;    insize.height = in.dim(0);  insize.width = in.dim(1);  kersize.height = ker.dim(0);  kersize.width = ker.dim(1);  return ippiConvValid_32f_C1R(in.idx_ptr(),instep,insize,			       ker.idx_ptr(),kerstep,kersize,			       out.idx_ptr(),outstep);}int ipp_add_float(Idx<float> &in1, Idx<float> &in2) {  IppiSize	insize;  int		instep;  if ((in1.dim(0) > INT_MAX) || (in1.dim(1) > INT_MAX) ||      (in1.mod(0) > INT_MAX))    ylerror("TODO: Cannot use long with IPP.");    insize.height = in1.dim(0);  insize.width = in1.dim(1);   instep = sizeof (float) * in1.mod(0);  return ippiAdd_32f_C1IR(in1.ptr(), instep, in2.ptr(), instep, insize);}int ipp_addc_nip_float(Idx<float> &in, float constant, Idx<float> &out) {  IppiSize	insize;  int		instep, outstep;  if ((in.dim(0) > INT_MAX) || (in.dim(1) > INT_MAX) ||      (in.mod(0) > INT_MAX) || (out.mod(0) > INT_MAX))    ylerror("TODO: Cannot use long with IPP.");  insize.height = in.dim(0);  insize.width = in.dim(1);   instep = sizeof (float) * in.mod(0);  outstep = sizeof (float) * out.mod(0);  return ippiAddC_32f_C1R(in.ptr(), instep, constant, out.ptr(), outstep, insize);}#endif} // end namespace ebl

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -