Skip to content

Commit

Permalink
Merge pull request #1572 from borglab/chi-squared-quantile
Browse files Browse the repository at this point in the history
  • Loading branch information
varunagrawal authored Dec 29, 2023
2 parents 9d70605 + 687667a commit 5c87f97
Show file tree
Hide file tree
Showing 86 changed files with 17,376 additions and 11 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ include(cmake/HandleCCache.cmake) # ccache
include(cmake/HandleCPack.cmake) # CPack
include(cmake/HandleEigen.cmake) # Eigen3
include(cmake/HandleMetis.cmake) # metis
include(cmake/HandleCephes.cmake) # cephes
include(cmake/HandleMKL.cmake) # MKL
include(cmake/HandleOpenMP.cmake) # OpenMP
include(cmake/HandlePerfTools.cmake) # Google perftools
Expand Down
19 changes: 19 additions & 0 deletions cmake/HandleCephes.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# ##############################################################################
# Cephes library

# For both system or bundle version, a cmake target "cephes-gtsam-if" is defined
# (interface library)


add_subdirectory(${GTSAM_SOURCE_DIR}/gtsam/3rdparty/cephes)

list(APPEND GTSAM_EXPORTED_TARGETS cephes-gtsam)

add_library(cephes-gtsam-if INTERFACE)
target_link_libraries(cephes-gtsam-if INTERFACE cephes-gtsam)

list(APPEND GTSAM_EXPORTED_TARGETS cephes-gtsam-if)
install(
TARGETS cephes-gtsam-if
EXPORT GTSAM-exports
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
123 changes: 123 additions & 0 deletions gtsam/3rdparty/cephes/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
cmake_minimum_required(VERSION 3.12)
enable_testing()
project(
cephes
DESCRIPTION "Cephes Mathematical Function Library"
VERSION 1.0.0
LANGUAGES C)

set(CEPHES_HEADER_FILES
cephes.h
cephes/cephes_names.h
cephes/dd_idefs.h
cephes/dd_real.h
cephes/dd_real_idefs.h
cephes/expn.h
cephes/igam.h
cephes/lanczos.h
cephes/mconf.h
cephes/polevl.h
cephes/sf_error.h)

# Add header files
install(FILES ${CEPHES_HEADER_FILES} DESTINATION include/gtsam/3rdparty/cephes)

set(CEPHES_SOURCES
cephes/airy.c
cephes/bdtr.c
cephes/besselpoly.c
cephes/beta.c
cephes/btdtr.c
cephes/cbrt.c
cephes/chbevl.c
cephes/chdtr.c
cephes/const.c
cephes/dawsn.c
cephes/dd_real.c
cephes/ellie.c
cephes/ellik.c
cephes/ellpe.c
cephes/ellpj.c
cephes/ellpk.c
cephes/erfinv.c
cephes/exp10.c
cephes/exp2.c
cephes/expn.c
cephes/fdtr.c
cephes/fresnl.c
cephes/gamma.c
cephes/gammasgn.c
cephes/gdtr.c
cephes/hyp2f1.c
cephes/hyperg.c
cephes/i0.c
cephes/i1.c
cephes/igam.c
cephes/igami.c
cephes/incbet.c
cephes/incbi.c
cephes/j0.c
cephes/j1.c
cephes/jv.c
cephes/k0.c
cephes/k1.c
cephes/kn.c
cephes/kolmogorov.c
cephes/lanczos.c
cephes/nbdtr.c
cephes/ndtr.c
cephes/ndtri.c
cephes/owens_t.c
cephes/pdtr.c
cephes/poch.c
cephes/psi.c
cephes/rgamma.c
cephes/round.c
cephes/sf_error.c
cephes/shichi.c
cephes/sici.c
cephes/sindg.c
cephes/sinpi.c
cephes/spence.c
cephes/stdtr.c
cephes/tandg.c
cephes/tukey.c
cephes/unity.c
cephes/yn.c
cephes/yv.c
cephes/zeta.c
cephes/zetac.c)

# Add library source files
add_library(cephes-gtsam SHARED ${CEPHES_SOURCES})

# Add include directory (aka headers)
target_include_directories(
cephes-gtsam BEFORE PUBLIC $<INSTALL_INTERFACE:include/gtsam/3rdparty/cephes/>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

set_target_properties(
cephes-gtsam
PROPERTIES VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
C_STANDARD 99)

if(WIN32)
set_target_properties(
cephes-gtsam
PROPERTIES PREFIX ""
COMPILE_FLAGS /w
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/../../../bin")
endif()

if(APPLE)
set_target_properties(cephes-gtsam PROPERTIES INSTALL_NAME_DIR
"${CMAKE_INSTALL_PREFIX}/lib")
endif()

install(
TARGETS cephes-gtsam
EXPORT GTSAM-exports
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
163 changes: 163 additions & 0 deletions gtsam/3rdparty/cephes/cephes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
#ifndef CEPHES_H
#define CEPHES_H

#include "cephes/cephes_names.h"

#ifdef __cplusplus
extern "C" {
#endif

extern int airy(double x, double *ai, double *aip, double *bi, double *bip);

extern double bdtrc(double k, int n, double p);
extern double bdtr(double k, int n, double p);
extern double bdtri(double k, int n, double y);

extern double besselpoly(double a, double lambda, double nu);

extern double beta(double a, double b);
extern double lbeta(double a, double b);

extern double btdtr(double a, double b, double x);

extern double cbrt(double x);
extern double chbevl(double x, double array[], int n);
extern double chdtrc(double df, double x);
extern double chdtr(double df, double x);
extern double chdtri(double df, double y);
extern double dawsn(double xx);

extern double ellie(double phi, double m);
extern double ellik(double phi, double m);
extern double ellpe(double x);

extern int ellpj(double u, double m, double *sn, double *cn, double *dn, double *ph);
extern double ellpk(double x);
extern double exp10(double x);
extern double exp2(double x);

extern double expn(int n, double x);

extern double fdtrc(double a, double b, double x);
extern double fdtr(double a, double b, double x);
extern double fdtri(double a, double b, double y);

extern int fresnl(double xxa, double *ssa, double *cca);
extern double Gamma(double x);
extern double lgam(double x);
extern double lgam_sgn(double x, int *sign);
extern double gammasgn(double x);

extern double gdtr(double a, double b, double x);
extern double gdtrc(double a, double b, double x);
extern double gdtri(double a, double b, double y);

extern double hyp2f1(double a, double b, double c, double x);
extern double hyperg(double a, double b, double x);
extern double threef0(double a, double b, double c, double x, double *err);

extern double i0(double x);
extern double i0e(double x);
extern double i1(double x);
extern double i1e(double x);
extern double igamc(double a, double x);
extern double igam(double a, double x);
extern double igam_fac(double a, double x);
extern double igamci(double a, double q);
extern double igami(double a, double p);

extern double incbet(double aa, double bb, double xx);
extern double incbi(double aa, double bb, double yy0);

extern double iv(double v, double x);
extern double j0(double x);
extern double y0(double x);
extern double j1(double x);
extern double y1(double x);

extern double jn(int n, double x);
extern double jv(double n, double x);
extern double k0(double x);
extern double k0e(double x);
extern double k1(double x);
extern double k1e(double x);
extern double kn(int nn, double x);

extern double nbdtrc(int k, int n, double p);
extern double nbdtr(int k, int n, double p);
extern double nbdtri(int k, int n, double p);

extern double ndtr(double a);
extern double log_ndtr(double a);
extern double erfc(double a);
extern double erf(double x);
extern double erfinv(double y);
extern double erfcinv(double y);
extern double ndtri(double y0);

extern double pdtrc(double k, double m);
extern double pdtr(double k, double m);
extern double pdtri(int k, double y);

extern double poch(double x, double m);

extern double psi(double x);

extern double rgamma(double x);
extern double round(double x);

extern int shichi(double x, double *si, double *ci);
extern int sici(double x, double *si, double *ci);

extern double radian(double d, double m, double s);
extern double sindg(double x);
extern double sinpi(double x);
extern double cosdg(double x);
extern double cospi(double x);

extern double spence(double x);

extern double stdtr(int k, double t);
extern double stdtri(int k, double p);

extern double struve_h(double v, double x);
extern double struve_l(double v, double x);
extern double struve_power_series(double v, double x, int is_h, double *err);
extern double struve_asymp_large_z(double v, double z, int is_h, double *err);
extern double struve_bessel_series(double v, double z, int is_h, double *err);

extern double yv(double v, double x);

extern double tandg(double x);
extern double cotdg(double x);

extern double log1p(double x);
extern double log1pmx(double x);
extern double expm1(double x);
extern double cosm1(double x);
extern double lgam1p(double x);

extern double yn(int n, double x);
extern double zeta(double x, double q);
extern double zetac(double x);

extern double smirnov(int n, double d);
extern double smirnovi(int n, double p);
extern double smirnovp(int n, double d);
extern double smirnovc(int n, double d);
extern double smirnovci(int n, double p);
extern double kolmogorov(double x);
extern double kolmogi(double p);
extern double kolmogp(double x);
extern double kolmogc(double x);
extern double kolmogci(double p);

extern double lanczos_sum_expg_scaled(double x);

extern double owens_t(double h, double a);

#ifdef __cplusplus
}
#endif

#endif /* CEPHES_H */
Loading

0 comments on commit 5c87f97

Please sign in to comment.