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 #ifndef INTEGRALS_GENERAL_HEADER
00029 #define INTEGRALS_GENERAL_HEADER
00030
00031 #include "integral_info.h"
00032 #include "basisinfo.h"
00033
00034 #ifndef BASIS_FUNC_POLY_MAX_DEGREE
00035 #error The constant BASIS_FUNC_POLY_MAX_DEGREE must be defined.
00036 #endif
00037 #if BASIS_FUNC_POLY_MAX_DEGREE<6
00038 const int POLY_PRODUCT_MAX_DISTRS = 10000;
00039 #else
00040 const int POLY_PRODUCT_MAX_DISTRS = 20000;
00041 #endif
00042
00043 typedef struct{
00044 ergo_real a0;
00045 ergo_real a1;
00046 } polydeg1struct;
00047
00048 int get_product_simple_prims(const DistributionSpecStruct& primA,
00049 const DistributionSpecStruct& primB,
00050 DistributionSpecStruct resultList[],
00051 int maxCount,
00052 ergo_real threshold);
00053
00054 int get_product_simple_primitives(const BasisInfoStruct & basisInfoA, int iA,
00055 const BasisInfoStruct & basisInfoB, int iB,
00056 DistributionSpecStruct resultList[],
00057 int maxCount,
00058 ergo_real threshold);
00059
00060 ergo_real compute_integral_of_simple_prim(DistributionSpecStruct* distr);
00061
00062 int multiply_polynomials(ergo_real result[],
00063 polydeg1struct* polydeg1,
00064 int dim,
00065 ergo_real a[]);
00066
00067 ergo_real get_largest_simple_integral(const BasisInfoStruct & basisInfo);
00068
00069 ergo_real get_max_basis_func_abs_value(const BasisInfoStruct & basisInfo);
00070
00071 int get_basis_func_extent_list(const BasisInfoStruct & basisInfo,
00072 ergo_real* basisFuncExtentList,
00073 ergo_real maxAbsValue);
00074
00075 #endif