integrals_general.h
Go to the documentation of this file.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