From fa9b6f2b9bcb80778e63ef2aa4e17c7573de0015 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Tue, 24 May 2016 13:39:23 +0000 Subject: Initial commit --- src/hh_integral.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/hh_integral.h (limited to 'src/hh_integral.h') diff --git a/src/hh_integral.h b/src/hh_integral.h new file mode 100644 index 0000000..4db9bf3 --- /dev/null +++ b/src/hh_integral.h @@ -0,0 +1,63 @@ +/* +Copyright 2016 Ian Jauslin + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* + integrals required for the computation +*/ + +#ifndef HH_INTEGRAL_H +#define HH_INTEGRAL_H + +#include "types.h" +#include +#include + +// extra arguments for the integration over theta (includes the integration options) +typedef struct hh_argsint1 { + array_mpfr abcissa; + array_mpfr weights; + hh_params params; +} hh_argsint1; + +// extra arguments for integration over rho (includes theta) +typedef struct hh_argsint2 { + mpfr_ptr theta; + hh_params params; +} hh_argsint2; + +// the integral +int hh_integrate(mpfr_t* out, hh_params params, array_mpfr abcissa, array_mpfr weights); +// integrand of the first integration +int hh_integrand1(mpfr_t* out, mpfr_t theta, void* args); +// integrand of the second integration +int hh_integrand2(mpfr_t* out, mpfr_t rho, void* args); + +// derivative of the integral +int hh_d_integrate(mpfr_t* out, hh_params params, array_mpfr abcissa, array_mpfr weights); +// integrand of the first integration +int hh_d_integrand1(mpfr_t* out, mpfr_t k1, void* args); +// integrand of the second integration +int hh_d_integrand2(mpfr_t* out, mpfr_t k2, void* args); + +// functions +// Omega^2 and alpha_2 +int hh_Omega2_alpha2(mpfr_t Omega2, mpfr_t alpha2, mpfr_t rho, mpfr_t theta, mpfr_t tmp1, mpfr_t tmp2); +// m +int hh_m(mpfr_t out, mpfr_t W, mpfr_t t2, mpfr_t sinphi, mpfr_t alpha2); +// xi^2 +int hh_xi2(mpfr_t out, mpfr_t Omega2, mpfr_t m, mpfr_t t1, mpfr_t tmp); + +#endif -- cgit v1.2.3-54-g00ecf