Kaydet (Commit) b0aec629 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Properly split header and source files.

Without this, formulagroupcl.cxx alone would take minutes to compile.

Change-Id: I7d55ed22fbd7f5c0859d5f1bf2a4e4eafd47ac3b
üst 92d7ca2c
...@@ -38,6 +38,10 @@ $(eval $(call gb_Library_use_libraries,scopencl,\ ...@@ -38,6 +38,10 @@ $(eval $(call gb_Library_use_libraries,scopencl,\
$(eval $(call gb_Library_add_exception_objects,scopencl,\ $(eval $(call gb_Library_add_exception_objects,scopencl,\
sc/source/core/opencl/formulagroupcl \ sc/source/core/opencl/formulagroupcl \
sc/source/core/opencl/openclwrapper \ sc/source/core/opencl/openclwrapper \
sc/source/core/opencl/op_financial \
sc/source/core/opencl/op_database \
sc/source/core/opencl/op_math \
sc/source/core/opencl/op_statistical \
sc/source/core/opencl/clcc/clew \ sc/source/core/opencl/clcc/clew \
)) ))
......
...@@ -18,10 +18,10 @@ ...@@ -18,10 +18,10 @@
#include "openclwrapper.hxx" #include "openclwrapper.hxx"
#include "op_financial.cxx" #include "op_financial.hxx"
#include "op_database.cxx" #include "op_database.hxx"
#include "op_math.cxx" #include "op_math.hxx"
#include "op_statistical.cxx" #include "op_statistical.hxx"
#include "formulagroupcl_public.hxx" #include "formulagroupcl_public.hxx"
#include "formulagroupcl_finacial.hxx" #include "formulagroupcl_finacial.hxx"
......
...@@ -7,26 +7,12 @@ ...@@ -7,26 +7,12 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
#ifndef OP_DATABASE #include "op_database.hxx"
#define OP_DATABASE
#include "formulagroup.hxx"
#include "document.hxx"
#include "formulacell.hxx"
#include "tokenarray.hxx"
#include "compiler.hxx"
#include "interpre.hxx"
#include "opbase.hxx"
#include<list>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <memory>
using namespace formula;
namespace sc { namespace opencl { namespace sc { namespace opencl {
}} }}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef SC_OPENCL_OP_DATABASE_HXX
#define SC_OPENCL_OP_DATABASE_HXX
namespace sc { namespace opencl {
}}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef SC_OPENCL_OP_FINANCIAL_HXX
#define SC_OPENCL_OP_FINANCIAL_HXX
#include "opbase.hxx"
namespace sc { namespace opencl {
class RRI: public SlidingFunctionBase, public OpBase
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class OpRRI:public RRI
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "RRI"; }
};
class OpNominal: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "NOMINAL_ADD"; }
};
class OpDollarde:public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Dollarde"; }
};
class OpDollarfr:public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Dollarfr"; }
};
class OpDISC: public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "DISC"; }
};
class OpINTRATE: public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "INTRATE"; }
};
class Fvschedule: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class Cumipmt: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class IRR: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class OpIRR: public IRR
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "IRR"; }
};
class XNPV: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class PriceMat: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class OpSYD: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "SYD"; }
};
class MIRR: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class OpEffective:public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Effect_Add"; }
};
class OpCumipmt: public Cumipmt
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "Cumipmt"; }
};
class OpXNPV: public XNPV
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "XNPV"; }
};
class OpTbilleq: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "fTbilleq"; }
};
class OpCumprinc: public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "cumprinc"; }
};
class OpAccrintm: public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Accrintm"; }
};
class OpYield: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Yield"; }
};
class OpSLN: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "SLN"; }
};
class OpFvschedule: public Fvschedule
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "Fvschedule"; }
};
class OpYieldmat: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Yieldmat"; }
};
class OpPMT: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "PMT"; }
};
class OpPPMT: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "PPMT"; }
};
class OpCoupdaybs:public Normal
{
public:
virtual std::string GetBottom(void) { return "0";}
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Coupdaybs"; }
};
class OpCoupdays:public Normal
{
public:
virtual std::string GetBottom(void) { return "0";}
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Coupdays";}
};
class OpCoupdaysnc:public Normal
{
public:
virtual std::string GetBottom(void) { return "0";}
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Coupdaysnc"; }
};
class OpReceived:public Normal
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Received"; }
};
class OpYielddisc: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Yielddisc"; }
};
class OpTbillprice: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "fTbillprice"; }
};
class OpPriceMat:public PriceMat
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "PriceMat"; }
};
class RATE: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
};
class OpIntrate: public RATE {
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "rate"; }
};
class OpTbillyield: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "fTbillyield"; }
};
class OpMIRR: public MIRR
{
public:
virtual std::string GetBottom(void) { return "0"; }
virtual std::string BinFuncName(void) const { return "MIRR"; }
};
}}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -7,16 +7,15 @@ ...@@ -7,16 +7,15 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
#ifndef OP_MATH #include "op_math.hxx"
#define OP_MATH
#include "formulagroup.hxx" #include "formulagroup.hxx"
#include "document.hxx" #include "document.hxx"
#include "formulacell.hxx" #include "formulacell.hxx"
#include "tokenarray.hxx" #include "tokenarray.hxx"
#include "compiler.hxx" #include "compiler.hxx"
#include "interpre.hxx" #include "interpre.hxx"
#include "opbase.hxx" #include <list>
#include<list>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <algorithm> #include <algorithm>
...@@ -25,74 +24,65 @@ ...@@ -25,74 +24,65 @@
using namespace formula; using namespace formula;
namespace sc { namespace opencl { namespace sc { namespace opencl {
class OpCos: public Normal
{ void OpCos::GenSlidingWindowFunction(std::stringstream &ss,
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments) const std::string sSymName, SubArguments &vSubArguments)
{
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const
formula::SingleVectorRefToken *>(tmpCur);
ss << "\ndouble " << sSymName;
ss << "_"<< BinFuncName() <<"(";
for (unsigned i = 0; i < vSubArguments.size(); i++)
{ {
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken(); if (i)
const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const ss << ",";
formula::SingleVectorRefToken *>(tmpCur); vSubArguments[i]->GenSlidingWindowDecl(ss);
ss << "\ndouble " << sSymName; }
ss << "_"<< BinFuncName() <<"("; ss << ")\n{\n\t";
for (unsigned i = 0; i < vSubArguments.size(); i++) ss <<"int gid0=get_global_id(0);\n\t";
{ ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
if (i) ss << ";\n\t";
ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss);
}
ss << ")\n{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
#ifdef ISNAN #ifdef ISNAN
ss<< "if(isNan(arg0)||(gid0>="; ss<< "if(isNan(arg0)||(gid0>=";
ss<<tmpCurDVR->GetArrayLength(); ss<<tmpCurDVR->GetArrayLength();
ss<<"))\n\t\t"; ss<<"))\n\t\t";
ss<<"arg0 = 0;\n\t"; ss<<"arg0 = 0;\n\t";
#endif #endif
ss << "double tmp=cos(arg0);\n\t"; ss << "double tmp=cos(arg0);\n\t";
ss << "return tmp;\n"; ss << "return tmp;\n";
ss << "}"; ss << "}";
} }
virtual std::string BinFuncName(void) const { return "Cos"; }
};
class OpCsc: public Normal void OpCsc::GenSlidingWindowFunction(
std::stringstream &ss, const std::string sSymName, SubArguments &vSubArguments)
{ {
public: FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
virtual void GenSlidingWindowFunction(std::stringstream &ss, const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const
const std::string sSymName, SubArguments &vSubArguments) formula::SingleVectorRefToken *>(tmpCur);
ss << "\ndouble " << sSymName;
ss << "_"<< BinFuncName() <<"(";
for (unsigned i = 0; i < vSubArguments.size(); i++)
{ {
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken(); if (i)
const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const ss << ",";
formula::SingleVectorRefToken *>(tmpCur); vSubArguments[i]->GenSlidingWindowDecl(ss);
ss << "\ndouble " << sSymName; }
ss << "_"<< BinFuncName() <<"("; ss << ")\n{\n\t";
for (unsigned i = 0; i < vSubArguments.size(); i++) ss <<"int gid0=get_global_id(0);\n\t";
{ ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
if (i) ss << ";\n\t";
ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss);
}
ss << ")\n{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
#ifdef ISNAN #ifdef ISNAN
ss<< "if(isNan(arg0)||(gid0>="; ss<< "if(isNan(arg0)||(gid0>=";
ss<<tmpCurDVR->GetArrayLength(); ss<<tmpCurDVR->GetArrayLength();
ss<<"))\n\t\t"; ss<<"))\n\t\t";
ss<<"arg0 = 0;\n\t"; ss<<"arg0 = 0;\n\t";
#endif #endif
ss << "double tmp=1/sin(arg0);\n\t"; ss << "double tmp=1/sin(arg0);\n\t";
ss << "return tmp;\n"; ss << "return tmp;\n";
ss << "}"; ss << "}";
} }
virtual std::string BinFuncName(void) const { return "Csc"; }
};
}} }}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef SC_OPENCL_OP_MATH_HXX
#define SC_OPENCL_OP_MATH_HXX
#include "opbase.hxx"
namespace sc { namespace opencl {
class OpCos: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Cos"; }
};
class OpCsc: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Csc"; }
};
}}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef SC_OPENCL_OP_STATISTICAL_HXX
#define SC_OPENCL_OP_STATISTICAL_HXX
#include "opbase.hxx"
namespace sc { namespace opencl {
class OpFisher: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Fisher"; }
};
class OpFisherInv: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "FisherInv"; }
};
class OpGamma: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Gamma"; }
};
class OpCorrel: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Correl"; }
};
class OpNegbinomdist: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "OpNegbinomdist"; }
};
class OpPearson: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "OpPearson"; }
};
class OpGammaLn: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "GammaLn"; }
};
class OpGauss: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "Gauss"; }
};
class OpGeoMean: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "GeoMean"; }
};
class OpHarMean: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "HarMean"; }
};
class OpRsq: public Normal
{
public:
virtual void GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments);
virtual std::string BinFuncName(void) const { return "OpRsq"; }
};
}}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -7,16 +7,20 @@ ...@@ -7,16 +7,20 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
#ifndef OPBASE #ifndef SC_OPENCL_OPBASE_HXX
#define OPBASE #define SC_OPENCL_OPBASE_HXX
#include "formulagroup.hxx" #include "formulagroup.hxx"
#include "document.hxx" #include "document.hxx"
#include "formulacell.hxx" #include "formulacell.hxx"
#include "tokenarray.hxx" #include "tokenarray.hxx"
#include "compiler.hxx" #include "compiler.hxx"
#include "interpre.hxx" #include "interpre.hxx"
#include "formula/vectortoken.hxx"
#include "clcc/clew.h"
#include<list> #include <list>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <algorithm> #include <algorithm>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment