00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00038 #ifndef INTEGRALS_GENERAL_HEADER
00039 #define INTEGRALS_GENERAL_HEADER
00040
00041 #include "integral_info.h"
00042 #include "basisinfo.h"
00043
00044 #ifndef BASIS_FUNC_POLY_MAX_DEGREE
00045 #error The constant BASIS_FUNC_POLY_MAX_DEGREE must be defined.
00046 #endif
00047 #if BASIS_FUNC_POLY_MAX_DEGREE<6
00048 const int POLY_PRODUCT_MAX_DISTRS = 10000;
00049 #else
00050 const int POLY_PRODUCT_MAX_DISTRS = 20000;
00051 #endif
00052
00053 typedef struct{
00054 ergo_real a0;
00055 ergo_real a1;
00056 } polydeg1struct;
00057
00058 int get_product_simple_prims(const DistributionSpecStruct& primA,
00059 const DistributionSpecStruct& primB,
00060 DistributionSpecStruct resultList[],
00061 int maxCount,
00062 ergo_real threshold);
00063
00064 int get_product_simple_primitives(const BasisInfoStruct & basisInfoA, int iA,
00065 const BasisInfoStruct & basisInfoB, int iB,
00066 DistributionSpecStruct resultList[],
00067 int maxCount,
00068 ergo_real threshold);
00069
00070 ergo_real compute_integral_of_simple_prim(const DistributionSpecStruct & distr);
00071
00072 int multiply_polynomials(ergo_real result[],
00073 polydeg1struct* polydeg1,
00074 int dim,
00075 ergo_real a[]);
00076
00077 ergo_real get_largest_simple_integral(const BasisInfoStruct & basisInfo);
00078
00079 ergo_real get_max_basis_func_abs_value(const BasisInfoStruct & basisInfo);
00080
00081 int get_basis_func_extent_list(const BasisInfoStruct & basisInfo,
00082 ergo_real* basisFuncExtentList,
00083 ergo_real maxAbsValue);
00084
00085 #endif